Класс PageStorageKey
Класс PageStorageKey наследует ValueKey
и помечает виджет для
PageStorage.
Смещение прокрутки хранит
PageStorageBucket.
Один и тот же ключ на разных вкладках
восстанавливает позицию списка.
Синтаксис
PageStorageKey('page')
Пример
Давайте сохраним прокрутку ListView через PageStorageKey:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: PageStorage(
bucket: PageStorageBucket(),
child: Scaffold(
body: ListView(
key: PageStorageKey<String>('list'),
children: [
ListTile(title: Text('abcde')),
ListTile(title: Text('12345')),
],
),
),
),
),
);
}
На экране список с пунктами 'abcde' и '12345'
запомнит прокрутку по PageStorageKey.
Пример
Давайте зададим разные ключи двум вкладкам:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: DefaultTabController(
length: 2,
child: PageStorage(
bucket: PageStorageBucket(),
child: Scaffold(
appBar: AppBar(
bottom: TabBar(
tabs: [
Tab(text: 'abcde'),
Tab(text: '12345'),
],
),
),
body: TabBarView(
children: [
ListView(
key: PageStorageKey('a'),
children: [Text('abcde')],
),
ListView(
key: PageStorageKey('b'),
children: [Text('12345')],
),
],
),
),
),
),
),
);
}
На экране каждая вкладка хранит свою прокрутку по отдельному PageStorageKey.
Смотрите также
-
класс
PageStorage,
который предоставляет bucket для ключей -
класс
PageStorageBucket,
где лежит сохранённое состояние -
класс
ValueKey,
родительPageStorageKey -
виджет
ListView,
прокрутку которого часто сохраняют