【问题标题】:How reinitialize flutter MultiProvider's all providers data?Flutter MultiProvider如何初始化所有providers数据?
【发布时间】:2021-10-04 13:05:32
【问题描述】:

在我的应用程序中,我有许多提供程序,例如通知、身份验证、个人资料、对话、旅行等……现在我需要在用户注销时重新初始化所有提供程序。否则旧用户数据仍将保留在提供程序中,新用户将获得它们。

【问题讨论】:

    标签: flutter dart flutter-provider flutter-change-notifier


    【解决方案1】:

    您可以调用提供商并清除所有用户数据。例如: 你可以打电话给你的authProvider.logOut(),一切仍然取决于你的项目结构。

    RaisedButton(
              child: const Text("Logout"),
              onPressed: () {
                final Auth auth = Provider.of<Auth>(context, listen: false);
                auth.isAuthentificated = false;
              },
            ),
    

    【讨论】:

    • 这不是我在 Flutter 的第一天 :) 我不想在一个 MultiProvider 中更新一些数据,而且可能有超过 10 个提供者。我想重新初始化它,因为它将在第一次构建时。
    【解决方案2】:

    度过了一天之后,我以这种方式解决了这个问题。这是我能做的最优雅的方式。因此,注销后,您必须删除所有屏幕并导航到根小部件,在该小部件中创建您的 Provider 或 MultiProvider,因此您的提供程序或 MultiProvider 中的所有提供程序将被重新创建,并且所有数据都将重新初始化

    Navigator.of(context).pushAndRemoveUntil<T>(
      MaterialPageRoute(
          builder: (_) => MyApp(),
      ),
      (_) => false,
    );
    

    其中 MyApp 是根小部件,它在 main.dart 中的主函数中作为参数传递。

     runApp(
       MyApp(token: token),
     );
    

    【讨论】:

      猜你喜欢
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2022-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多