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
相关产品推荐
相关产品推荐

