如何在我的 flutter 应用程序中保持用户的登录会话打开?

How can I keep my user's login session open in my flutter application?

我的应用程序在用户登录后出现抖动,我希望会话保持打开状态。也就是说,如果用户打开应用程序,他会登录,如果他要关闭应用程序并稍后打开它,我希望他仍然处于登录状态,而不必重新输入他的凭据。 我找到了这个 flutter_session 库,但我不明白它是否适合我,或者只是让会话在一页与另一页之间保持活动状态

有几种方法可以做到这一点。您没有说明用于实现该目的的服务器。例如,如果您使用的是 firebase,您可以这样做:

class LoginScreenState extends State<LoginScreen> {
  AuthService auth = AuthService();

  @override
  void initState() {
    super.initState();
    auth.getUser.then(
      (user) {
        if (user != null) {
          Navigator.pushReplacementNamed(context, '/topics');
        }
        else {
          //force to login page
       }
      },
    );
  }

您可以在 auth 中获取有关当前用户会话的信息。这是用户登录会话的完美入口点:https://firebase.flutter.dev/docs/auth/usage/

如果您不使用 firebase,此任务仍有多种选择。这是本地存储 SharedPreference 或 GetStorage,用于在本地存储数据(凭据),直到用户登录。每当用户注销时,我们将清除存储的数据。 访问这个包 https://pub.dev/packages/get_storage 当用户第一次登录时存储凭据,如

GetStorage box = GetStorage();

box.write('email',email.value);

用户退出时,清除数据

box.remove('email');

进一步,当用户启动应用程序时,我们将检查电子邮件密钥是否有值,然后重定向到主屏幕或登录屏幕。

if(box.read('email')!='' || box.read('email')!=null)
  Get.to(HomeScreen());
else
  Get.to(LoginScreen());