Flutter测验应用:点击选项卡片后颜色显示异常问题排查
问题原因及修复方案
核心错误:判断选项是否正确时,错误地将选项的字符串key与布尔值
true做比较。由于字符串和布尔值类型不匹配,这个判断永远返回false,导致无论选中正确还是错误选项,都会显示错误颜色(kFalseAnswerColor)。比如选中正确选项
'4'时,代码执行'4' == true,结果必然是false,所以触发错误颜色分支。正确逻辑实现:应该通过选项的key,从
options字典中获取对应的布尔值,以此判断选项是否正确。
错误代码片段
color: isClicked ? _questions[index].options.keys.toList()[i] == true ? kCorrectAnswerColor : kFalseAnswerColor : kPrimaryColor,
修正后的代码
可以先缓存当前选项,让代码更简洁:
final currentOption = _questions[index].options.keys.toList()[i]; // ... OptionCard( option: currentOption, color: isClicked ? _questions[index].options[currentOption] == true ? kCorrectAnswerColor : kFalseAnswerColor : kPrimaryColor, onTap: _changeColor, ),
这样就能正确获取选项对应的对错状态,选中正确选项时会显示kCorrectAnswerColor,错误选项显示kFalseAnswerColor。
内容的提问来源于stack exchange,提问作者carlosManta
相关产品推荐
相关产品推荐

