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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章