重置提供者数据 - Flutter
Posted
技术标签:
【中文标题】重置提供者数据 - Flutter【英文标题】:Reset provider data - Flutter 【发布时间】:2020-04-23 17:20:33 【问题描述】:我在我的应用程序中使用了 multiprovider。 Provider 工作完美,它存储数据,并在发生任何变化时提供完美的事件。
现在,我的应用中有这个场景 ->
用户 1 已登录。现在,当我在同一个登录名中添加第二个帐户(如 Gmail - 多帐户)时,提供商会返回旧值。
我尝试搜索提供者的重置值,但找不到与之相关的任何内容。
尝试过但没有用:
创建了要重置的提供程序的新对象。Provider.of<LoginProvider>(context).dispose();
【问题讨论】:
你试过return Provider.value(value: <State dependent variable>, child: ...)
吗?
您能详细说明一下吗?
我会发布一个更清晰的答案
@HarshPatel 你有没有解决过这个问题,因为我现在正面临同样的问题?
嗯.. 到目前为止,我无法解决问题,但找到了一个临时解决方案。只需在每个提供程序中创建方法 reset() 并尝试在您的 LOGOUT 或希望从您要清除提供程序的函数中调用它。现在在该提供者重置方法中重新初始化所有变量。到目前为止,我已经实现了使用这个东西。 @埃尔默
【参考方案1】:
要更新 Provider 值,您可以使用 .value()
构造函数调用它并使用状态相关变量。
class SomeWidgetState extends State<SomeWidget>
Logins logins = [];
void addLogin(Login newLogin)
setState(()
logins = [...logins, newLogin];
);
@override
Widget build(BuildContext context)
return Provider.value(
value: logins,
child: OtherWidget(),
);
当调用addLogin
时,Provider中的注册值会被更新。
【讨论】:
感谢朋友的回答。让我试试。但是你确定它会清除provider当前所有的存储值吗? 可以,你可以在setState
中设置你需要的值。以上是关于重置提供者数据 - Flutter的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter 中获取有关提供者上下文更改的网络数据
如何在 Flutter Firestore 提供程序中显示数据