在我的应用程序中,我有许多提供者,例如通知,身份验证,配置文件,会话,旅行等等。现在我需要重新初始化所有提供程序,当用户注销。否则旧用户数据仍将保留在提供商中,新用户将获得它们。
gkn4icbw1#
花了一天的时间,我用这种方法解决了这个问题。这是我能做的最优雅的方式。因此,在注销后,您必须删除所有屏幕并导航到根小部件,您的Provider或MultiProvider将在其中创建,因此您的Provider或MultiProvider中的所有Provider将被重新创建,所有数据将被重新初始化
Navigator.of(context).pushAndRemoveUntil<T>( MaterialPageRoute( builder: (_) => MyApp(), ), (_) => false, );
字符串其中MyApp是根小部件,它在main.dart的main函数中作为参数传递。
runApp( MyApp(token: token), );
型
fcg9iug32#
您可以调用提供商并清除所有用户的数据。举例来说:你可以调用你的authProvider.logOut(),一切仍然取决于你的项目结构。
authProvider.logOut()
RaisedButton( child: const Text("Logout"), onPressed: () { final Auth auth = Provider.of<Auth>(context, listen: false); auth.isAuthentificated = false; }, ),
字符串
6tqwzwtp3#
ChangeNotifierProvider( create: (_) => UserFeedViewModel(), child: Expanded( child: Consumer<UserFeedViewModel>( builder: (context, userFeedViewModel, child) => _ui(userFeedViewModel)), ), ),
字符串我在创建小部件时创建了提供程序。我不知道这是不是正确的方法,但它确实有效。想知道你的想法
3条答案
按热度按时间gkn4icbw1#
花了一天的时间,我用这种方法解决了这个问题。这是我能做的最优雅的方式。因此,在注销后,您必须删除所有屏幕并导航到根小部件,您的Provider或MultiProvider将在其中创建,因此您的Provider或MultiProvider中的所有Provider将被重新创建,所有数据将被重新初始化
字符串
其中MyApp是根小部件,它在main.dart的main函数中作为参数传递。
型
fcg9iug32#
您可以调用提供商并清除所有用户的数据。举例来说:你可以调用你的
authProvider.logOut()
,一切仍然取决于你的项目结构。字符串
6tqwzwtp3#
字符串
我在创建小部件时创建了提供程序。我不知道这是不是正确的方法,但它确实有效。想知道你的想法