1. push 新頁面?zhèn)鲄?/h4>
在進(jìn)行頁面路由跳轉(zhuǎn)時(shí)可以攜帶參數(shù),這樣在下一個(gè) widget 構(gòu)建時(shí)可以從上下文 context 中解析這些參數(shù),帶參數(shù)跳轉(zhuǎn)的示例如下:
Navigator.pushNamed(
context,
'/detail',
arguments: {'key': value'}
);
在對(duì)應(yīng)新頁面的 build 方法中可以進(jìn)行參數(shù)的解析:
Widget build(BuildContext context) {
Map arguments = ModalRoute.of(context).settings.arguments;
return Text(arguments['key']);
}
2. pop 返回傳參
有時(shí)候可以將一個(gè)頁面當(dāng)做完成特定需求的異步任務(wù),這樣 push-pop 的過程可以認(rèn)為一次任務(wù)的開始和結(jié)束,F(xiàn)lutter 的路由 Navigator.push 的返回值就是 Future 類型,因此可以將執(zhí)行 push 的函數(shù)指定為 aysnc 在其中處理回調(diào)的邏輯
onPressed: () async {
dynamic result = Navigator.pushNamed(context, "/detail");
if (result != null) {
setState(() {
this.text = result;
};
}
},
對(duì)應(yīng)地,在 pop 事件中傳入需要回調(diào)的參數(shù)。
// detail 頁面完成任務(wù)后執(zhí)行 pop
Navigator.pop(context, 'taskResult');