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

Flutter:如何在onPressed中调用带条件的嵌套VoidCallback函数

解决Flutter Stepper返回按钮的条件回调问题

你遇到的核心问题是没有正确调用VoidCallback函数——直接写onStepCancel只是传递了函数引用,而非执行这个函数;而直接赋值给onPressed时,Flutter内部会帮你执行这个函数,所以能正常工作。

正确的实现方式是在条件判断里主动调用函数(加括号),代码示例如下:

AppBar(
  leading: IconButton(
    icon: Icon(Icons.arrow_back),
    onPressed: () {
      if (currentStep != 0) {
        // 主动调用VoidCallback函数,必须加()
        onStepCancel(); 
      } else {
        Navigator.pop(context);
      }
    },
  ),
  // 其他AppBar配置...
)

如果onStepCancel是可选参数,建议做非空判断避免空指针异常:

onPressed: () {
  if (currentStep != 0) {
    onStepCancel?.call(); // 使用?.call()安全调用
  } else {
    Navigator.pop(context);
  }
},

这样就能按预期实现:当前步骤不是第一步时回退到上一步,是第一步时返回上一页。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 20:35:18