[Flutter] 頁面路由跳轉(zhuǎn)的傳參

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');
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容