首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在更新颤振网页上的代码时保持登录

在更新颤振网页上的代码时保持登录
EN

Stack Overflow用户
提问于 2022-03-07 15:02:00
回答 1查看 810关注 0票数 2

我正在开发一个应用程序的颤振,其中有一个登录页面。

当我在仿真器上运行应用程序时,当我更新激活热重新加载(我使用的是VS代码)时,应用程序就会刷新,而不会让我再次登录。

但是当我在网上运行应用程序时,每次我必须重新加载应用程序时,我都需要输入我的登录信息。

你知道怎么解决这个问题吗?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-10 15:09:36

我没有找到这个问题的简单答案,但我所做的是在我的LoginScreen中添加了一些逻辑,并使用了

在我的SharedPreferences,LoginScreen中,在成功验证身份验证之后,我将中的登录信息和"isLoggedIn“布尔值设置为true:

代码语言:javascript
复制
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中的登录信息调用我的身份验证函数:

代码语言:javascript
复制
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布尔值:

代码语言:javascript
复制
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:

代码语言:javascript
复制
prefs.setBool("isLoggedIn", false);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71383020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档