我正在try 运行一个If-Else条件,该条件根据给定的条件显示某些图标.我正在try 查看列表中是否存在特定的quizID,即满足条件的字符串.由于某些原因,即使元素存在于列表中,条件似乎也不起作用.
我try 手动将quizid与特定字符串进行比较,结果很好.但一旦我把 list 放入条件,它就停止工作了.我发现quizID和list元素数据类型都是字符串,但它们仍然无法比较.
这是一段代码:
class QuizBadge extends StatelessWidget {
const QuizBadge({super.key, required this.topic, required this.quizId});
final Topic topic;
final String quizId;
@override
Widget build(BuildContext context) {
Report report = Provider.of<Report>(context);
List completed = report.topics.values.toList();
List a = completed.expand((element) => element).toList();
print(a[1]);
if (a[1] == "flutter-basics") {
return const Icon(FontAwesomeIcons.checkDouble, color: Colors.green);
} else {
return const Icon(FontAwesomeIcons.solidCircle, color: Colors.grey);
}
}
}
任何帮助都将不胜感激.谢谢.
编辑后的代码片段:
Widget build(BuildContext context) {
Report report = Provider.of<Report>(context);
List completed = report.topics[topic.id] ?? [];
String str = completed.map((e) => e.toString()).join('-');
if (str.contains(quizId)) {
return const Icon(FontAwesomeIcons.checkDouble, color: Colors.green);
} else {
return const Icon(FontAwesomeIcons.solidCircle, color: Colors.grey);
}
}
这似乎奏效了.