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

Flutter中如何push新路由并移除栈内页面直到指定路由保留

Flutter路由栈保留根路由跳转实现方案

你当前使用的代码中pushAndRemoveUntil的路由判定逻辑始终返回false,会清空栈内全部原有路由,最终仅保留新压入的AuthScreen,和你的预期不符。

要实现仅移除根路由以上的页面、最终栈保留根路由+AuthScreen的效果,只需要修改RoutePredicate的判断逻辑即可:pushAndRemoveUntil会从栈顶开始依次移除路由,直到RoutePredicate返回true时停止移除操作,再压入新的AuthScreen页面。


场景1:根路由使用命名路由/注册

Navigator.of(context).pushAndRemoveUntil(
  MaterialPageRoute(builder: (context) => AuthScreen()),
  // 遇到根路由时停止移除
  (route) => route.settings.name == '/',
);

场景2:根路由未使用命名路由,直接保留栈底第一个路由

Navigator.of(context).pushAndRemoveUntil(
  MaterialPageRoute(builder: (context) => AuthScreen()),
  // route.isFirst判定当前路由是否为栈底的根路由
  (route) => route.isFirst,
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:15:07