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

Flutter代码问题:选择错误答案时如何同时显示正确与错误答案?

如何在选择错误答案时同时高亮正确答案与错误选项?

需求:用户选择错误答案时,需要用颜色区分展示正确答案(绿色)和所选错误答案(红色)。现有代码仅会将所选错误答案标红,正确答案仍为灰色;尝试修改后的代码未生效。

原代码

Color getColorForOption(Answer answer) {
    bool correctAnswer = answer.isCorrect;
    bool isSelected = answer == selecetedAnswer;
    if (isSelected) {
        return correctAnswer ? Colors.green : Colors.red;
     } 
      return Colors.grey.shade300;
    }

尝试的代码(未生效)

Color getColorForOption(Answer answer) {
    bool correctAnswer = answer.isCorrect;
    bool isSelected = answer == selecetedAnswer;
    if (isSelected) {
      return correctAnswer ? Colors.green : Colors.red;
    } else if (correctAnswer) {
      return Colors.green;
    }
    return Colors.grey.shade300;
  }

可行修改方案

问题核心是缺少「用户是否已提交答案」的状态标记——尝试的代码会让正确答案始终显示绿色,不管用户有没有提交,不符合正常交互逻辑。我们需要新增一个状态变量来控制提交后的显示逻辑:

  1. 添加状态变量标记答案是否已提交:
bool isAnswerSubmitted = false;

(用户点击提交按钮时,将此变量设为true)

  1. 修改getColorForOption方法:
Color getColorForOption(Answer answer) {
  bool isCorrect = answer.isCorrect;
  bool isSelected = answer == selectedAnswer; // 修复原代码拼写错误:selecetedAnswer → selectedAnswer

  // 已提交答案后,展示正确项和选中的错误项
  if (isAnswerSubmitted) {
    if (isCorrect) {
      return Colors.green;
    } else if (isSelected) {
      return Colors.red;
    }
    return Colors.grey.shade300;
  }

  // 未提交时,仅高亮当前选中项
  return isSelected ? (isCorrect ? Colors.green : Colors.red) : Colors.grey.shade300;
}

逻辑说明

  • 未提交答案时:仅高亮用户当前选中的选项,正确则显示绿色,错误则显示红色,其余选项保持灰色
  • 提交答案后:
    • 所有正确答案统一显示绿色
    • 用户选中的错误答案显示红色
    • 其他未选中的错误答案保持灰色

这样既实现了需求中「选择错误答案时同时展示正确答案与所选错误答案」的效果,也保留了未提交时的正常交互逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:16:20