【问题标题】:Reset provider data - Flutter重置提供者数据 - 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 或希望从您要清除提供程序的函数中调用它。现在在该提供者重置方法中重新初始化所有变量。到目前为止,我已经实现了使用这个东西。 @埃尔默

标签: flutter provider flutter-change-notifier


【解决方案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中设置你需要的值。
猜你喜欢
  • 2021-01-19
  • 2022-01-12
  • 2021-06-29
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 2021-12-04
  • 2020-04-29
  • 2020-03-22
相关资源
最近更新 更多