使用 Provider 时清除 Flutter 中的状态

Joh*_*ohn 4 dart flutter

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

Rém*_*let 5

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

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

最后你将拥有:

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

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