【问题标题】:How to clear the navigation stack in Flutter如何清除 Flutter 中的导航堆栈
【发布时间】:2020-04-26 23:20:09
【问题描述】:

我希望我的应用程序有一个欢迎屏幕,带有注册和登录选项。当我点击“注册”按钮导航到我的注册屏幕时,我使用:

Navigator.push

当我在注册屏幕中按下“返回”按钮时,它必须返回到欢迎页面。

但在用户完成注册后,我在主页中使用以下代码导航到我的主页。

Navigator.pushReplacement

问题是,当我按下“返回”按钮时,我的应用会返回欢迎屏幕,而不是停留在主页中。

知道发生了什么吗?

【问题讨论】:

    标签: flutter


    【解决方案1】:

    导航时可以使用以下方法清除导航栈:

    Navigator.of(ctx).pushAndRemoveUntil(YourRoute, (Route<dynamic> route) => false);
    

    第二个参数是一个 Predicate 来决定这条路线是否会从堆栈中删除。

    使用此方法,您将在导航到路线之前清除整个堆栈,这样您将无法返回您的欢迎页面。

    【讨论】:

    • 嗨,谢谢你的回答,但我不太明白如何使用它,你能给我一个屏幕名称的例子吗? Navigator.push(context, MaterialPageRoute(builder: (_) { return RegisterScreen(); }));我正在使用这样的方法。
    • 对命名路由使用 pushNamedAndRemoveUntil。
    猜你喜欢
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 2023-03-27
    • 2018-11-04
    相关资源
    最近更新 更多