我正在开发一个应用程序的颤振,其中有一个登录页面。
当我在仿真器上运行应用程序时,当我更新激活热重新加载(我使用的是VS代码)时,应用程序就会刷新,而不会让我再次登录。
但是当我在网上运行应用程序时,每次我必须重新加载应用程序时,我都需要输入我的登录信息。
你知道怎么解决这个问题吗?
谢谢。
发布于 2022-03-10 15:09:36
我没有找到这个问题的简单答案,但我所做的是在我的主和LoginScreen中添加了一些逻辑,并使用了
在我的SharedPreferences,LoginScreen中,在成功验证身份验证之后,我将中的登录信息和"isLoggedIn“布尔值设置为true:
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('email', encrypt(data.name, key));
prefs.setString('password', encrypt(data.password, key));
prefs.setBool("isLoggedIn", true);在我的initState函数的主中,我检查是否应该已经登录,并使用已经存储在SharedPreferences中的登录信息调用我的身份验证函数:
if (prefs.getBool("isLoggedIn") == true) {
await authentification(decrypt(prefs.getString('email').toString(), key), decrypt(prefs.getString('password').toString(), key));
loggedIn = prefs.getBool("isLoggedIn");我定义了一个displayFunction来选择我的应用程序将返回哪个屏幕,这取决于我的loggedIn布尔值:
Widget displayPage() {
Widget widget = CircularProgressIndicator();
if (isDataLoaded == true) {
if (loggedIn == true) {
widget = HomePage();
} else {
widget = LoginScreen();
}
}
return widget;
}
Widget build(BuildContext context) {
return MaterialApp(
title: 'My App',
theme: ThemeData(
primarySwatch: Colors.blue,
textTheme: Theme.of(context).textTheme.apply(
bodyColor: LightColors.kDarkBlue,
displayColor: LightColors.kDarkBlue,
fontFamily: 'Poppins'
),
),
home: displayPage(),
);
}在我的注销函数中,我将"isLoggedIn“设置为false:
prefs.setBool("isLoggedIn", false);https://stackoverflow.com/questions/71383020
复制相似问题