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

Flutter中累加星级字段求平均值并在Text组件展示的实现问题

场景

我使用flutter_bloc库模式获取JSON数据,需实现的需求为:累加所有star键对应的数值,再除以star字段的总数量得到星级平均值。以下是使用的JSON数据和目前已编写的Dart代码:

JSON Data

"feedbacks": [
                {
                    "id": 1,
                    "comment": "Corporate Brand Supervisor",
                    "star": 1,
                    "createdAt": "2021-09-07T11:35:15.954Z",
                    "updatedAt": "2021-09-07T11:35:15.954Z",
                    "customerId": 10,
                    "branchId": 3
                },
                {
                    "id": 9,
                    "comment": "Principal Implementation Liaison",
                    "star": 1,
                    "createdAt": "2021-09-07T11:35:15.954Z",
                    "updatedAt": "2021-09-07T11:35:15.954Z",
                    "customerId": 1,
                    "branchId": 3
                }
            ],

HomePage.dart 现有代码

Row(
children: [
for (var i in data[index].feedbacks!)
Text(i!.star!.toString()),],), //此处期望输出星级平均值,按示例数据计算为1+1/2 = 1.5
实现方案

对feedback列表做聚合计算即可,以下是两种常用实现方式:

方式1:基础循环实现(可读性更高)

Row(
  children: [
    (){
      // 空列表判断,避免除以0报错
      if(data[index].feedbacks?.isEmpty ?? true) {
        return const Text('暂无评分');
      }
      double totalStar = 0;
      for (var feedback in data[index].feedbacks!) {
        // 兼容star为空的异常场景
        totalStar += feedback?.star ?? 0;
      }
      double avgStar = totalStar / data[index].feedbacks!.length;
      // 保留1位小数输出
      return Text(avgStar.toStringAsFixed(1));
    }()
  ],
)

方式2:fold简化实现(代码更简洁)

Row(
  children: [
    if(data[index].feedbacks?.isEmpty ?? true)
      const Text('暂无评分')
    else
      Text(
        data[index].feedbacks!
          .fold<double>(0, (previousValue, element) => previousValue + (element?.star ?? 0))
          / data[index].feedbacks!.length
          .toStringAsFixed(1)
      )
  ],
)

以上两种方式代入你的示例数据后都会输出1.5,同时兼容空列表、star字段为空的异常场景,避免运行时报错。

内容的提问来源于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 20:33:03