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

Flutter+Firebase测验应用无法点击错误选项代码问题排查

问题根因

你遇到的点击错误选项无响应问题,核心是checkAnswerAndUpdate方法的逻辑存在两个明显缺陷:

  • 逻辑分支覆盖不全:现有代码仅在点击正确答案(传入参数value == true)时才会调用setState更新界面状态,点击错误答案时没有任何状态更新操作,不会触发界面重绘,自然看不到选中效果。
  • 重复点击拦截状态赋值错误:isAlreadySelected变量的作用是标记当前题目是否已经完成选择,避免重复点击选项,但你在选完答案后将其赋值为false,等于这个拦截逻辑完全失效。

另外你写的startOver方法也存在逻辑问题:方法内仅在setState中写了一个孤立的Text组件,没有做任何状态重置或页面跳转操作,调用后不会产生任何实际效果。

修复方案

将checkAnswerAndUpdate方法替换为以下逻辑即可:

void checkAnswerAndUpdate(bool value) {
  if (isAlreadySelected) {
    return;
  }
  setState(() {
    isPressed = true;
    // 选完答案后标记为已选择,阻止同一题重复点击
    isAlreadySelected = true;
    // 仅选中正确答案时加分
    if (value == true) {
      score++;
    }
  });
}

修复后无论点击正确还是错误选项,都会触发界面重绘,按照你预设的规则给正确选项显示correct颜色、错误选项显示incorrect颜色,同时阻止同一题重复选择。

如果需要让startOver方法正常生效,可以补全重置逻辑:

void startOver() {
  setState(() {
    index = 0;
    score = 0;
    isPressed = false;
    isAlreadySelected = false;
  });
  // 关闭结果弹窗回到答题页
  Navigator.pop(context);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:42:36