【问题标题】:Clear state in Flutter when using Provider使用 Provider 时清除 Flutter 中的状态
【发布时间】:2020-01-06 15:18:40
【问题描述】:

如何在 Flutter 应用中手动清除提供程序的当前状态?我的用例是当用户退出我的应用程序然后注册为新用户/不同用户时,以前的用户状态仍存储在提供程序中,但是当应用程序重新启动时它会自动清除。

【问题讨论】:

  • 不使用 Provider 你可以再次初始化你的小部件
  • 再次调用构造函数应该可以了!

标签: flutter dart


【解决方案1】:

您可以使用键来硬重置子树的状态。

如果您只想部分重置子树,您可以在另一个键的顶部添加一个 GlobalKey。

最后你会得到:

Widget build(BuildContext context) {
  return Provider(
    key: ObjectKey(someIdentifier),
    builder: (_) => Foo(),
    child: SomeSubtree(
      key: GlobalObjectKey(context),
    ),
  );
}

在这种情况下,如果someIdentifier 发生变化,Provider 的状态将重置,但Subtree 将保留。

【讨论】:

  • 您建议将 'someIdentifier' 的值存储在哪里以确保不会无意中硬重置状态?
  • 这取决于您的用例。例如,它可以是用户 ID——它不需要存储在任何地方
猜你喜欢
  • 2021-01-15
  • 2021-10-11
  • 1970-01-01
  • 2021-08-27
  • 2021-02-15
  • 2021-02-25
  • 2021-11-07
  • 1970-01-01
  • 2020-05-01
相关资源
最近更新 更多