基于身份验证状态的Flutter导航

时间:2019-07-26 16:55:31

标签: flutter flutter-navigation flutter-provider

我正在使用用户身份验证(Firebase,但无论如何)构建Flutter应用,并希望为经过身份验证和未经身份验证的用户提供两组路由:

  • 未经身份验证的用户: /登录 /寄存器 ...

  • 经过身份验证的用户: /家 ...

我试图在顶部小部件上设置一个类似这样的开关:

 switch(_user.status) {
        case UserStatus.Unauthenticated:
       return MaterialApp(
                      title: _title,
                        theme: _themeData,
                        routes: ....
                        initialRoute: "/login",
                      );
        case UserStatus.Authenticated:
       return MaterialApp(
                      title: _title,
                        theme: _themeData,
                        onGenerateRoute: _generateRoute,
                        initialRoute: "/",
                      );

(我在树的顶部获得了_user值和一个ChangeNotifierProvider),但显然不可能有2个顶部导航器。

第二,我试图在_generateRoute函数中推动开关,但是有一些缓存:当树被重建时(例如,当_user.status更改时),_generateRoute函数没有再打一次,所以不起作用。

您如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以为此使用三元运算符:

MaterialApp(
  title: _title,
  theme: _themeData,
  routes: ....
  initialRoute: _user.status == UserStatus.Unauthenticated ? "/login" : "",
);