1

我正在构建一个带有用户身份验证的 Flutter 应用程序(firebase 等等),并希望为经过身份验证和未经身份验证的用户提供两组路由:

  • 未经身份验证的用户: /login /register ...

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

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

 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: "/",
                      );

(我在树的顶部得到了_usera 的值ChangeNotifierProvider)但显然不可能有 2 个顶级导航器。

其次,我尝试在_generateRoute函数中按下开关,但有一些缓存:重建树时(例如_user.status更改时),_generateRoute不会再次调用函数,因此不起作用。

你如何解决这个问题?

4

1 回答 1

0

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

MaterialApp(
  title: _title,
  theme: _themeData,
  routes: ....
  initialRoute: _user.status == UserStatus.Unauthenticated ? "/login" : "",
);
于 2019-07-26T18:03:38.367 回答