【问题标题】:Flutter Navigation based on auth state基于身份验证状态的 Flutter Navigation
【发布时间】:2019-12-05 01:08:18
【问题描述】:

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

  • 未经身份验证的用户: /登录 /登记 ...

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

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

 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 函数不会再次调用,所以不会不行。

你是怎么解决这个问题的?

【问题讨论】:

    标签: flutter flutter-navigation flutter-provider


    【解决方案1】:

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

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

    【讨论】:

    • 不幸的是,这不起作用:当用户被认证时,应用程序小部件被重建但不是 MaterialApp 小部件,并且 LoginPage 仍然出现...... :-(
    猜你喜欢
    • 2020-09-16
    • 2013-04-13
    • 2018-09-23
    • 2022-08-21
    • 1970-01-01
    • 1970-01-01
    • 2019-02-02
    • 2017-08-15
    • 2021-01-25
    相关资源
    最近更新 更多