Flutter开发中不依赖index如何计算获取星级评分平均值
实现方案
核心思路是使用Dart集合内置的fold方法累加所有星级分数,全程不需要依赖下标index取值,再除以列表长度得到平均值,同时兼容空列表的边界场景。
调整后完整代码
Widget buildReviewNumbers(List<FeedbacksData> data) { double averageStar = 0.0; // 非空判断避免除以0报错 if (data.isNotEmpty) { // fold方法遍历所有元素累加星级,无需使用index final totalStar = data.fold<int>(0, (sum, feedbackItem) => sum + feedbackItem.star); averageStar = totalStar / data.length; } return Column( children: [ Text( // 保留1位小数,输出结果为1.5符合预期 averageStar.toStringAsFixed(1), style: const TextStyle(fontWeight: FontWeight.w900, fontSize: 30.0), ), // 如果需要保留原有每个星级的展示,可取消下方代码注释 // for (final feedback in data) // Text( // feedback.star.toString(), // style: const TextStyle(fontWeight: FontWeight.w900, fontSize: 30.0), // ), ], ); }
逻辑说明
- 针对提供的示例数据,
fold会累加得到总星级1+2=3,除以数据长度2得到1.5,完全匹配预期输出 - 全程未使用index下标取值,符合代码约束要求
- 增加了空列表判断,避免数据为空时出现除以0的运行异常
内容的提问来源于stack exchange,提问作者Mohammed Nabil
相关产品推荐
相关产品推荐

