Flutter页面跳转之Navigator的各种骚操作(传参,跳转回调,关闭之前页面,关闭之间页面)

首先看源码,里面有这么几种跳转方式
在这里插入图片描述
1页面正常跳转
该路由名称需要在程序主入口中进行定义。定义方法为:
routes: <String, WidgetBuilder> {
‘/page1’: (BuildContext context) => new Page1(),
‘/page2’ : (BuildContext context) => new Page2(),
‘/page3’ : (BuildContext context) => new Page3(),
‘/page4’ : (BuildContext context) => new Page4(),
},
直接跳转
Navigator.pushNamed(context, “/page2”);
还有一个方法
Navigator.push(context, new MaterialPageRoute(builder: (BuildContext context){
return Page2();
}));

这里就可以考虑带参数了

不带参数

Navigator.push(context, new MaterialPageRoute(builder: (BuildContext context){
 return new SecondPage());
}))

带参数

Navigator.push(context, new MaterialPageRoute(builder: (BuildContext context){
 return new SecondPage("携带参数"));
}))

页面关闭
Navigator.pop(context);

2跳转后关闭当前页面
Navigator.pushReplacementNamed(context, “/page2”);
同样的还有另一个可传参数的
Navigator.pushReplacement(context, new MaterialPageRoute(builder: (BuildContext context){
return Page2();
}));
下面这个方法类似
popAndPushNamed——Navigator.popAndPushNamed(context, ‘/screen4’);
3页面跳转,被跳转页面返回时回传参数
Navigator.push(context, page).then((data){
setState(() {
if(data==1){
print(“收到返回值了了”);
}
});
});

这里data就是返回的值
另一个界面关闭时这样写:
Navigator.pop(context,1);
就把1回传过去了,是不是很方便呀,比起原生安卓真是不要太爽
4 跳转到某界面,然后关闭之前所有的界面
Navigator.of(context).pushNamedAndRemoveUntil(’/page3’, (Route route) =>false);
常用于登录界面,假如token失效,跳转到登录界面并清空之前界面可用此方法。
注意第二个参数要为false才会关闭之前页面,true则不关。
flutter为我们提供了方便的配置参数,灵活
5需要关闭某范围内的界面
1–>2–>3,3到4时使用Navigator.pushNamedAndRemoveUntil(context,"/page4",ModalRoute.withName(’/page1’));
在4返回时,直接关闭掉了应用

用这个方法时
Navigator.pushNamedAndRemoveUntil(context,"/page4",ModalRoute.withName(’/’));
回到了page1

用这个方法时
Navigator.pushNamedAndRemoveUntil(context,"/page4",ModalRoute.withName(’/page2’));
回到了page2
后面参数是page3返回到page3
page4 返回就关闭了应用

得出 :只要第二个参数不是栈顶和自己本身都是可以用来 关闭page4到 page*之间的界面的

Navigator.pushAndRemoveUntil与上同理,不用传routName,直接传page
以上over

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值