【问题标题】:Flutter Navigator.pushReplacementNamed show back button at the pageFlutter Navigator.pushReplacementNamed 在页面显示返回按钮
【发布时间】:2020-11-08 07:18:35
【问题描述】:

我在 Flutter 应用程序中使用 Navigator.pushReplacementNamed 从登录页面导航到主页运行良好,但在我的主页中显示 appBar 上的返回箭头按钮,并在按下它时返回登录页面。我该怎么办?我试过把leading: Text(''),但是当按下物理后退按钮时,它仍然会回到登录页面。

我有一个注销按钮,我希望用户仅通过此按钮而不是后退按钮注销

*这是我在这里的第一个问题,对不起我的英语不好或有任何错误

【问题讨论】:

    标签: flutter flutter-navigation


    【解决方案1】:

    你应该改用这个:

    .pushNamedAndRemoveUntil(/* Your Route */, (Route<dynamic> route) => false)
    

    【讨论】:

    • 谢谢,它有效。所以当我们应该使用 . pushReplacementNamed ?
    • 小记,我必须将构建上下文添加为第一个参数。
    • 从颤振版本改变。我仍然没有在我的颤振版本中传递上下文@eimmer
    【解决方案2】:

    据我了解您的 UX 流程,用户将始终在应用启动时被定向到登录页面。如果用户已经登录,你应该避免导航到这个(在那一刻无用的)路线。而是尝试在构建方法中区分用户是否登录。如果用户已经登录,则构建主页。如果用户未登录,则构建登录页面。用户一登录,状态就会发生变化,主页就会建立起来。

    // your stateful component
    
    bool isLoggedIn;
    
    @override
    Widget build(BuildContext context) {
      if(isLoggedIn) {
        return _buildHomepage();
      } else {
        return _buildLoginPage();
      }
    }
    
    Widget _buildHomepage() {
      // build your homepage
    }
    
    Widget _buildLoginPage() {
      // build your login page
    }
    

    【讨论】:

      【解决方案3】:

      我今天遇到了这个问题,并遇到了您的帖子。 虽然 PushNamedAndRemoveUntil 有效,但我的解决方案更加简单:

      确保您没有命名路线,这不是您的主屏幕“/”。

      类似:

      MaterialApp(
                title: 'Flutter Demo',
                initialRoute: Screen1.routeName,  // routeName = "/route1"
                routes: {
                  Screen1.routeName: (ctx) => Screen1(),   // routeName = "/route1"
                  Screen2.routeName: (ctx) => Screen2(),   // routeName = "/"
                  Screen3.routeName: (ctx) => Screen3(),   // routeName = "/screen2"
                },
              );
            })
      

      将使用 Screen1 启动您的应用程序,但将 Screen2 放在导航器堆栈的顶部。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-12
        • 2013-04-11
        • 1970-01-01
        • 1970-01-01
        • 2021-03-01
        • 2010-11-14
        相关资源
        最近更新 更多