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

Flutter中如何正确传递回调函数?现有代码存疑求排查

你的Flutter回调代码里的两处关键遗漏

嘿,我帮你揪出这段代码里的问题啦,主要有两处容易踩的坑:

1. 回调传递时嵌套了无用的匿名函数,导致页面跳转没触发

你看这段回调传递的代码:

new ResultOverlay(isCorrect, () { () => CallAnswerPage(); })

这里你在外层匿名函数里又定义了一个箭头函数,但根本没执行它!相当于你只是在函数里写了一段“待执行的代码”,但没告诉程序要运行这段代码,所以CallAnswerPage()永远不会被触发。

正确的写法应该直接在匿名函数里调用页面跳转:

// 常规写法
new ResultOverlay(isCorrect, () { CallAnswerPage(); })
// 更简洁的箭头函数写法
new ResultOverlay(isCorrect, () => CallAnswerPage())

2. InkWell的onTap没有正确调用回调函数

再看状态类里的这段代码:

child: new InkWell(
  onTap: () => widget._onTap,
  .....
)

这里你用箭头函数返回了widget._onTap这个函数对象,但InkWell的onTap需要的是执行这个函数,而不是返回它本身。

正确的写法有两种:

  • 直接把函数对象赋值给onTap(适合不需要额外逻辑的场景):
child: new InkWell(
  onTap: widget._onTap,
  .....
)
  • 用箭头函数主动调用它(适合需要加额外逻辑的场景):
child: new InkWell(
  onTap: () => widget._onTap(),
  .....
)

把这两处改完,你的回调应该就能正常触发页面跳转啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:41:37