You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中返回上一页面时如何回传数据?

Flutter页面返回时传递数据的最佳实现方式

对于页面A跳转页面B后回传数据的需求,最直接轻量的方案是利用Flutter Navigator的异步返回值特性,无需额外引入状态管理库,步骤如下:

1. 页面A:接收返回数据

在页面A中,通过async/await等待Navigator.push的返回结果,拿到数据后直接处理(比如更新页面状态):

// 页面A的跳转逻辑示例
ElevatedButton(
  onPressed: () async {
    // 启动页面B并等待返回数据
    final result = await Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => const PageB()),
    );

    // 处理返回的数据,需判断是否为null(用户按系统返回键时result为null)
    if (result != null) {
      setState(() {
        // 示例:将返回数据赋值给页面A的变量
        _receivedData = result;
      });
    }
  },
  child: const Text("跳转到页面B"),
)

2. 页面B:返回并传递数据

在页面B中,调用Navigator.pop时传入要回传的数据(支持任意类型:字符串、Map、自定义对象等):

// 页面B的返回逻辑示例
ElevatedButton(
  onPressed: () {
    // 准备要回传的数据,这里以自定义对象为例
    final userData = User(name: "Keshav", age: 25);
    // 关闭页面B并将数据传回页面A
    Navigator.pop(context, userData);
  },
  child: const Text("返回页面A并传数据"),
)

注意事项

  • 如果用户直接按系统返回键,页面A收到的result会是null,必须做非空判断避免异常
  • 传递自定义对象时,确保对象是可序列化的(比如使用不可变类、或手动实现序列化逻辑)
  • 若涉及多页面、复杂数据流转,可考虑状态管理方案(如Riverpod、Provider),但简单回传场景下Navigator方案足够高效

内容的提问来源于stack exchange,提问作者Keshav Passi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 00:03:12