dart 如何重新初始化flutter MultiProvider的所有提供者数据?

rkttyhzu  于 2023-07-31  发布在  Flutter
关注(0)|答案(3)|浏览(106)

在我的应用程序中,我有许多提供者,例如通知,身份验证,配置文件,会话,旅行等等。现在我需要重新初始化所有提供程序,当用户注销。否则旧用户数据仍将保留在提供商中,新用户将获得它们。

gkn4icbw

gkn4icbw1#

花了一天的时间,我用这种方法解决了这个问题。这是我能做的最优雅的方式。因此,在注销后,您必须删除所有屏幕并导航到根小部件,您的Provider或MultiProvider将在其中创建,因此您的Provider或MultiProvider中的所有Provider将被重新创建,所有数据将被重新初始化

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

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

runApp(
   MyApp(token: token),
 );

fcg9iug3

fcg9iug32#

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

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

字符串

6tqwzwtp

6tqwzwtp3#

ChangeNotifierProvider(
          create: (_) => UserFeedViewModel(),
          child: Expanded(
            child: Consumer<UserFeedViewModel>(
                builder: (context, userFeedViewModel, child) =>
                    _ui(userFeedViewModel)),
          ),
        ),

字符串
我在创建小部件时创建了提供程序。我不知道这是不是正确的方法,但它确实有效。想知道你的想法

相关问题