【发布时间】:2021-10-04 13:05:32
【问题描述】:
在我的应用程序中,我有许多提供程序,例如通知、身份验证、个人资料、对话、旅行等……现在我需要在用户注销时重新初始化所有提供程序。否则旧用户数据仍将保留在提供程序中,新用户将获得它们。
【问题讨论】:
标签: flutter dart flutter-provider flutter-change-notifier
在我的应用程序中,我有许多提供程序,例如通知、身份验证、个人资料、对话、旅行等……现在我需要在用户注销时重新初始化所有提供程序。否则旧用户数据仍将保留在提供程序中,新用户将获得它们。
【问题讨论】:
标签: flutter dart flutter-provider flutter-change-notifier
您可以调用提供商并清除所有用户数据。例如:
你可以打电话给你的authProvider.logOut(),一切仍然取决于你的项目结构。
RaisedButton(
child: const Text("Logout"),
onPressed: () {
final Auth auth = Provider.of<Auth>(context, listen: false);
auth.isAuthentificated = false;
},
),
【讨论】:
度过了一天之后,我以这种方式解决了这个问题。这是我能做的最优雅的方式。因此,注销后,您必须删除所有屏幕并导航到根小部件,在该小部件中创建您的 Provider 或 MultiProvider,因此您的提供程序或 MultiProvider 中的所有提供程序将被重新创建,并且所有数据都将重新初始化
Navigator.of(context).pushAndRemoveUntil<T>(
MaterialPageRoute(
builder: (_) => MyApp(),
),
(_) => false,
);
其中 MyApp 是根小部件,它在 main.dart 中的主函数中作为参数传递。
runApp(
MyApp(token: token),
);
【讨论】: