Push跳转:
Navigator.push(
context,
MaterialPageRoute(
//fullscreenDialog: true, //从底部弹出
builder: (BuildContext context) {
return Login();
}),
);
或 (等价于):
Navigator.of(context)
.push(MaterialPageRoute(builder: (BuildContext context) {
return Login();
}));
或:
Navigator.pushNamed(context, '/Login').then((value){
});
跳转并销毁之前的页面,返回到指定页面:
//跳转顺序是Screen1—>Screen2—>Screen3—>Screen4
当从Screen3跳转到Screen4的时候我们希望将Screen2,Screen3从栈里面移除掉,这样在Screen4点击返回就能直接回到Screen1
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(builder: (context) => Screen4()),
ModalRoute.withName('/screen1'));
//打开Screen4页面,并销毁当前页:Screen2—>Screen3—>Screen4
Navigator.of(context).pushReplacementNamed('/screen3');
//也可以使用以下方式
Navigator.of(context).pushReplacement(MaterialPageRoute(builder: (context)=>Screen3()));
Pop退出:
Navigator.pop(context);
//或:
Navigator.of(context).pop();
//或:带参数返回,push接收:.then((value) {print('------回传参数:$value');})
Navigator.pop(context, 'YES');
Navigator.pop(context, {
'name': '回传参数'
});
一直退出直到某一个页面:
//当前在Screen4页面,点击回到Screen1,连带着Screen2,Screen3也一起退出