需求一、从A-B-C-D,然后需要回到B页面。
当然我们可以通过以下代码实现。
Navigator.of(context)..pop()..pop();
但是,如果我们自己都不知道中间到底有多少个页面。有时候这样实现不了。
我们可以使用popUntil来实现
Navigator.popUntil(context, ModalRoute.withName(RouteName.dataCenterPageNew)) ;
你会发现会黑屏。
解决方式是添加 settings: RouteSettings(name: RouteName.dataCenterPageNew),
case RouteName.dataCenterPageNew:
return CupertinoPageRoute(
settings: RouteSettings(name: RouteName.dataCenterPageNew),
builder: (BuildContext context) {
return ReconsitutionDataCenterPage();
});
完美解决。
需求二、回到首页,也就是除了首页其他的页面都出栈。
可以使用pushNamedAndRemoveUntil
Navigator.pushNamedAndRemoveUntil(
context, RouteName.tab, (route) => false);
需求三、我们从A-B-C-D,然后我们跳转到E的时候想把B以上的页面都关闭掉。
Navigator.of(context).pushNamedAndRemoveUntil("/E",ModalRoute.withName("/B"));
需求四、我们从A-B-C,然后我们想用D替换掉C
Navigator.pushReplacementNamed(context, "/D");
网友评论