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

Flutter:点击Cancel按钮关闭弹窗时如何不返回指定数据?

解决方案

你可以直接在Cancel按钮的Navigator.pop调用中不传递第二个参数,这样弹窗关闭后,调用方的Future会返回null,无需再用虚拟数据做判断。具体修改如下:

1. 修改Cancel按钮的代码

把原来传递newEntry的代码改成只传context:

// Cancel button
const SizedBox(height: 30),
CupertinoButton(
  onPressed: () {
    Navigator.pop(context); // 不再传递newEntry参数
  },
  child: const Text('Cancel'),
),

2. 调整调用方的类型判断

因为现在可能返回null,需要把EntryData改成可空类型EntryData?,之后通过判断是否为null来区分用户是取消还是提交了有效数据:

Future<void> _addEvent(BuildContext context) async {
  // 将EntryData改为可空类型EntryData?,允许接收null值
  EntryData? result = await Navigator.of(context).push(
    CupertinoPageRoute(
      fullscreenDialog: true,
      builder: (context) {
        return const DataEntryView();
      },
    ),
  );

  // 后续逻辑区分处理
  if (result != null) {
    // 用户提交了有效数据,进行对应处理
  } else {
    // 用户点击了Cancel,无需处理数据
  }
}

这样就完全避免了虚拟数据的判断,逻辑更清晰,也符合Flutter导航返回值的常规用法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 07:20:03