【问题标题】:how is the best way to manage session and navigation in flutter web如何在 Flutter Web 中管理会话和导航的最佳方式
【发布时间】:2020-04-11 11:23:29
【问题描述】:

我的项目上有 2 个网页

我需要管理用户会话。如果用户已登录,则显示主页,如果用户未登录,则显示登录页面。

我正在使用提供程序来检查会话的状态

  @override
  Widget build(BuildContext context) {
    return Consumer<LoginGeneralNotifier>(
      builder: (context, appGenaralNotifier, _) {
        return appGenaralNotifier.getLogged()
            ? HomePage()
            : LoginPage();
      },
    );
  }
}

问题是我登录后url没有改变

【问题讨论】:

    标签: flutter dart flutter-web


    【解决方案1】:

    您可能想使用 Navigator.of(context).pushNamed(HomePageNamedRoute);

    这可以在 initState 中完成,如下所示: Flutter Redirect to a page on initState

    【讨论】:

      【解决方案2】:

      我做的是

      我创建了一个保存所有全局变量的类

      在那里我创建了一个变量bool loginStatus;

      并创建两个方法 getset 来处理值

      每当登录成功时,我都会将值设置为 true loginStatus=true;

      init() 方法中的新页面上,我正在检查变量的值,如果值为 false,则将用户扔到登录页面,否则继续

      class GlobalValues{
        static bool loginStatus;
      
      
        static void setLoginStatus(bool val) {
          loginStatus = val;
        }
      
        static bool getLoginStatus() {
          return loginStatus == null ? false : loginStatus;
        }
      }
      

      登录成功后在登录页面

      GlobalValues.setLoginStatus(true);

      在 init 方法中的其他类页面上

        @override
        void initState() {
           if (GlobalValues.getLoginStatus()) {
             // call your login page class here
             //Navigator.of(context).pushNamed(LoginPageNamedRoute);
             Navigator.pop(context);
          }
      
          super.initState();
        }
      

      【讨论】:

        【解决方案3】:

        全局变量在编程世界中是非常不受欢迎的(除非绝对没有其他替代方案可用)。改用用户会话。查看FlutterSession。该软件包在 Flutter 中添加了用户会话支持,并且易于使用。

        // Store value to session
        await FlutterSession().set("token", myJWTToken);
        
        // Retrieve item from session
        dynamic token = await FlutterSession().get("token");
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-05-23
          • 2011-03-16
          • 2010-12-05
          • 2010-12-14
          • 2020-01-09
          • 2021-05-20
          • 2014-01-24
          相关资源
          最近更新 更多