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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:24:02