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

