如何在Flutter应用中手动清除提供商的当前状态?我的用例是,当用户退出我的应用程序,然后以新用户/不同用户的身份注册时,以前的用户状态仍存储在提供程序中,但是当应用程序重新启动时会自动清除。
答案 0 :(得分:1)
您可以使用键来硬重置子树的状态。
如果只想部分重置子树,则可以在另一个键的顶部添加一个GlobalKey。
最后,您将获得:
Widget build(BuildContext context) {
return Provider(
key: ObjectKey(someIdentifier),
builder: (_) => Foo(),
child: SomeSubtree(
key: GlobalObjectKey(context),
),
);
}
在这种情况下,如果someIdentifier
发生变化,则Provider
的状态将重置,但是Subtree
将保留。