Виджет PageStorage
Виджет PageStorage кладёт в дерево
PageStorageBucket.
Bucket передают в bucket,
обёртку - в child.
Дочерние виджеты с
PageStorageKey
читают и пишут состояние через bucket.
Достать bucket из контекста помогает метод of.
Синтаксис
PageStorage(
bucket: pageStorageBucket,
child: child,
)
Параметры
| Параметр | Описание |
|---|---|
bucket |
Хранилище для данных PageStorageKey.
Принимает PageStorageBucket.
|
child |
Поддерево, где действуют ключи прокрутки. |
Методы
| Метод | Описание |
|---|---|
of |
Возвращает PageStorageBucket из ближайшего PageStorage.
|
Пример
Давайте обернём Scaffold в PageStorage:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: PageStorage(
bucket: PageStorageBucket(),
child: Scaffold(
body: Center(
child: Text('abcde'),
),
),
),
),
);
}
На экране текст 'abcde' лежит
внутри PageStorage с новым bucket.
Пример
Давайте прочитаем bucket через PageStorage.of:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: PageStorage(
bucket: PageStorageBucket(),
child: Builder(
builder: (context) {
var bucket = PageStorage.of(context);
return Scaffold(
body: Center(
child: Text(
bucket != null ? '12345' : 'x',
),
),
);
},
),
),
),
);
}
На экране по центру появится '12345',
потому что PageStorage.of нашёл bucket.
Смотрите также
-
метод
of,
который возвращает bucket из контекста -
класс
PageStorageBucket,
куда пишутreadStateиwriteState -
класс
PageStorageKey,
который связывает виджет с bucket -
виджет
Scaffold,
который часто оборачивают вPageStorage