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

Flutter从第二个页面返回时获取返回值并转换类型的方法

解决Flutter页面跳转返回值的类型转换与计算问题

Navigator.push返回的是Future类型,这是因为页面跳转属于异步操作,没法直接同步拿到第二个页面的返回值。要实现100加上返回值的计算,得用异步方式处理Future,下面给两种常用的解决办法:

方法一:使用async/await

把onPressed标记为async函数,用await等待Future完成,就能拿到返回的int值:

IconButton(
  onPressed: () async {
    final result = await Navigator.of(context)
        .push(MaterialPageRoute(builder: (context) {
      return SecondScreen();
    }));

    // 加个类型判断,避免用户按系统返回键时result为null导致报错
    if (result is int) {
      print(100 + result);
    }
  },
  icon: Icon(Icons.arrow_forward_ios)
)

方法二:使用Future.then()

通过then方法注册回调,在Future完成后处理返回值:

IconButton(
  onPressed: () {
    Navigator.of(context)
        .push(MaterialPageRoute(builder: (context) {
      return SecondScreen();
    })).then((result) {
      if (result is int) {
        print(100 + result);
      }
    });
  },
  icon: Icon(Icons.arrow_forward_ios)
)

注意:如果用户按系统返回键(不是点击你的IconButton),pop不会传入参数,此时result会是null,所以一定要加类型判断或者null检查,避免程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 10:34:55