我看到了很多示例,但是没有一个示例为我提供了一种导航到下一页时删除整个后台堆栈(包括主页)的方法。
例如:用户成功输入登录凭证后,我将有几个登录页面,用户将其移至主屏幕,因此在这里,我要删除到目前为止显示的所有先前屏幕,我该怎么做?
当前正在使用代码:
Navigator.of(context).pushNamedAndRemoveUntil(
HomeScreen.route_name, ModalRoute.withName('/'));
答案 0 :(得分:4)
要删除推送的路线下方的所有路线,请使用始终返回false的RoutePredicate(例如,(Route route)=> false)。
因此,为了使您的代码按预期工作,请删除ModalRoute.withName('/')并提供返回false的路由谓词。所以应该是
Navigator.of(context).pushNamedAndRemoveUntil(
HomeScreen.route_name, (Route<dynamic> route)=>false);
有关参考,请参见official documentation
答案 1 :(得分:0)
尝试这种方式
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(builder: (dialogContex) => HomePageScreen()),
ModalRoute.withName("/HomePageScreen"));
答案 2 :(得分:0)
试试这个。这段代码将给定的路由推送到导航器上,然后删除所有以前的路由,甚至是 HomeScreen。
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (BuildContext context) => HomeScreen(),
),
(route) => false,
);
注意:这是在我的项目中测试的。所以我希望它能 100% 奏效