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');
网友评论