Flutter 中的 PageStorage - 它是如何工作的?

PageStorage in Flutter - how does it work?

我在文档中看到了 PageStorage。据我了解,它几乎就像 Android 世界的共享偏好替代方案。

我如何使用它,为什么它的实现需要一个小部件?

我不确定 class 的 PageStorage 是做什么用的,但根据您的笔记,听起来您正在寻找键值存储。

文件中有一个关于为这样的插件提供好的插件的错误: https://github.com/flutter/flutter/issues/4757

PageStorage 用于跟踪可能并不总是被实例化的小部件的状态,例如并行列表视图在可分页视图中的位置(比如当您有多个选项卡时,每个选项卡都有自己的列表)。对于像 sharedpreference 这样的东西,你可能应该使用 sharedpreference 本身(通过插件)。另见 https://github.com/flutter/flutter/issues/4757 or https://github.com/flutter/flutter/issues/3427

下面是简单的例子:

home.dart

final pageStorageBucket = PageStorageBucket();

@override
Widget build(BuildContext context) {
  return PageStorage(
    bucket: pageStorageBuket,
    child: Scaffold(
      ...
    ),
  );
}

child.dart

int storedValue;

@override initState() {
  super.initState();
  storedValue = PageStorage.of(context).readState(context, identifier: 'value');
}

void storeValue(int value) {
  PageStorage.of(context).writeState(context, value, identifier: 'value');
}