【发布时间】:2020-01-06 15:18:40
【问题描述】:
如何在 Flutter 应用中手动清除提供程序的当前状态?我的用例是当用户退出我的应用程序然后注册为新用户/不同用户时,以前的用户状态仍存储在提供程序中,但是当应用程序重新启动时它会自动清除。
【问题讨论】:
-
不使用 Provider 你可以再次初始化你的小部件
-
再次调用构造函数应该可以了!
如何在 Flutter 应用中手动清除提供程序的当前状态?我的用例是当用户退出我的应用程序然后注册为新用户/不同用户时,以前的用户状态仍存储在提供程序中,但是当应用程序重新启动时它会自动清除。
【问题讨论】:
您可以使用键来硬重置子树的状态。
如果您只想部分重置子树,您可以在另一个键的顶部添加一个 GlobalKey。
最后你会得到:
Widget build(BuildContext context) {
return Provider(
key: ObjectKey(someIdentifier),
builder: (_) => Foo(),
child: SomeSubtree(
key: GlobalObjectKey(context),
),
);
}
在这种情况下,如果someIdentifier 发生变化,Provider 的状态将重置,但Subtree 将保留。
【讨论】: