Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 在FlatterWeb中管理会话和导航的最佳方式是什么_Flutter_Dart_Flutter Web - Fatal编程技术网

Flutter 在FlatterWeb中管理会话和导航的最佳方式是什么

Flutter 在FlatterWeb中管理会话和导航的最佳方式是什么,flutter,dart,flutter-web,Flutter,Dart,Flutter Web,我的项目上有两个网页 我需要管理用户会话。如果用户已登录,则显示主页;如果用户未登录,则显示登录页面 我正在使用提供程序检查会话的状态 @override Widget build(BuildContext context) { return Consumer<LoginGeneralNotifier>( builder: (context, appGenaralNotifier, _) { return appGenaralNotif

我的项目上有两个网页

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

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

  @override
  Widget build(BuildContext context) {
    return Consumer<LoginGeneralNotifier>(
      builder: (context, appGenaralNotifier, _) {
        return appGenaralNotifier.getLogged()
            ? HomePage()
            : LoginPage();
      },
    );
  }
}
@覆盖
小部件构建(构建上下文){
退货消费者(
生成器:(上下文,appGenaralNotifier,382;){
返回appGenaralNotifier.getLogged()
?主页()
:LoginPage();
},
);
}
}

问题是url在我登录后不会更改

您可能需要使用Navigator.of(context).pushNamed(HomePageNamedLote)

这可以在initState中完成,如下所示:

您可能需要使用Navigator.of(context).pushNamed(HomePageNamedLote)

这可以在initState中完成,如下所示: 我所做的是

我创建了一个类,在其中保存所有全局变量

在那里我创建了一个变量
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();
  }
我所做的是

我创建了一个类,在其中保存所有全局变量

在那里我创建了一个变量
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();
  }

在编程世界中,全局变量是非常不受欢迎的(除非绝对没有其他选择可用)。改用用户会话。退房该软件包在flatter中添加了用户会话支持,并且易于使用

// Store value to session
await FlutterSession().set("token", myJWTToken);

// Retrieve item from session
dynamic token = await FlutterSession().get("token");

在编程世界中,全局变量是非常不受欢迎的(除非绝对没有其他选择可用)。改用用户会话。退房该软件包在flatter中添加了用户会话支持,并且易于使用

// Store value to session
await FlutterSession().set("token", myJWTToken);

// Retrieve item from session
dynamic token = await FlutterSession().get("token");