[Flutter] 页面路由跳转的传参

1. push 新页面传参

在进行页面路由跳转时可以携带参数,这样在下一个 widget 构建时可以从上下文 context 中解析这些参数,带参数跳转的示例如下:

Navigator.pushNamed(
    context,
     '/detail', 
    arguments: {'key': value'}
);

在对应新页面的 build 方法中可以进行参数的解析:

Widget build(BuildContext context) {
    Map arguments = ModalRoute.of(context).settings.arguments;
    return Text(arguments['key']);
}

2. pop 返回传参

有时候可以将一个页面当做完成特定需求的异步任务,这样 push-pop 的过程可以认为一次任务的开始和结束,Flutter 的路由 Navigator.push 的返回值就是 Future 类型,因此可以将执行 push 的函数指定为 aysnc 在其中处理回调的逻辑

onPressed: () async {
    dynamic result = Navigator.pushNamed(context, "/detail");
    if (result != null) {
        setState(() {
            this.text = result;
        };
    }
},

对应地,在 pop 事件中传入需要回调的参数。

// detail 页面完成任务后执行 pop
Navigator.pop(context, 'taskResult');

你可能感兴趣的:([Flutter] 页面路由跳转的传参)