You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:点击按钮清除Navigator全部路由历史的实现方法

Flutter 清除路由历史并跳转至主页的实现

在登录按钮的点击事件中,你可以通过 pushAndRemoveUntil 方法实现清除所有路由历史并跳转至 main_page,具体操作如下:

  1. 存储用户UID
    先完成UID的存储逻辑(示例用SharedPreferences,你也可以替换成项目使用的状态管理方案):

    final prefs = await SharedPreferences.getInstance();
    await prefs.setString('uid', '当前登录用户的UID');
    
  2. 清除路由并跳转
    使用Navigator的pushAndRemoveUntil方法,通过谓词(route) => false移除所有现存路由,让新的main_page成为路由栈的唯一页面:

    Navigator.of(context).pushAndRemoveUntil(
      MaterialPageRoute(builder: (context) => const MainPage()),
      (Route<dynamic> route) => false,
    );
    

关键说明

  • 谓词(route) => false会让Navigator移除所有之前的路由,彻底清除路由历史,避免旧的main_page实例在后台留存引发异常。
  • 跳转后的main_page是路由栈的唯一页面,用户点击返回按钮会直接退出应用,符合登录后的预期逻辑。
  • 如果项目使用命名路由,可以改用pushNamedAndRemoveUntil简化代码(需提前在MaterialApp中配置命名路由映射):
    Navigator.of(context).pushNamedAndRemoveUntil(
      '/main_page',
      (Route<dynamic> route) => false,
    );
    

内容的提问来源于stack exchange,提问作者joanmarinecanals

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 22:05:21