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

Flutter开发中ElevatedButton按钮灰化无法点击问题排查求助

问题根因

你在向Quiz组件传递点击回调函数时,错误地对_answeredQ加了括号执行,最终传递给ElevatedButton的onPressed参数的是函数执行后的返回值。你的_answeredQ函数无返回值,也就是null,而Flutter的ElevatedButton默认在onPressed为null时会进入灰化不可点击状态,这就是问题的直接诱因。

修复方案
  • 首先修改TestApp组件build方法中实例化Quiz的代码,去掉_answeredQ后的括号,直接传递函数引用即可:
// 修改前(错误写法)
body: _i < _question.length
    ? Quiz(qMap: _question, aFunction: _answeredQ(), index: _i)
    : Result(),

// 修改后(正确写法)
body: _i < _question.length
    ? Quiz(qMap: _question, aFunction: _answeredQ, index: _i)
    : Result(),
  • (可选优化)为所有函数类型的参数补充明确的类型声明,提前避免同类传值错误:
// Quiz类中修改aFunction的声明
final void Function() aFunction;

// AnswerW类中修改selAns的声明
final void Function() selAns;

补充说明:加括号的函数写法会立即执行函数、返回执行结果,不带括号的写法才是传递函数本身的引用,所有组件的回调参数(onPressed、onTap等)都需要接收函数引用。


内容的提问来源于stack exchange,提问作者Shaffaan Laughs at u

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:36:03