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

Flutter 如何对 personality 列表数据的 famousAs 字段执行 groupBy 分组

Flutter 按famousAs字段对List分组的实现方法

方案1:原生实现(无需额外依赖)

直接手动遍历列表完成分组,不需要引入任何第三方包,代码如下:

// 你的原始接口返回数据
List<dynamic> personalityList = [
  {
    "FullName":"Harry Potter",
    "DateOfBirth": "2020/02/16",
    "Department":"Branch Operation",
    "BirthDay":"Friday",
    "famousAs":"Actor"
  },
  {
    "FullName":"John Wick",
    "DateOfBirth": "2020/02/16",
    "Department":"Finance",
    "BirthDay":"Friday",
    "famousAs":"Actor"
  },
  {
    "FullName":"Priyanka Chopara",
    "DateOfBirth":"2020/02/19",
    "Department":"Loan",
    "BirthDay":"Monday",
    "famousAs":"Actress"
  }
];

// 存储分组结果
Map<String, List<dynamic>> groupedData = {};

for (var item in personalityList) {
  String groupKey = item['famousAs'] as String;
  // 对应分组不存在时先初始化
  if (!groupedData.containsKey(groupKey)) {
    groupedData[groupKey] = [];
  }
  groupedData[groupKey]!.add(item);
}

执行后groupedData就是按famousAs分组后的结果,key为对应的分类值,value为该分类下的所有条目列表。

方案2:使用collection包简化实现(官方维护)

如果可以引入工具包,用Dart官方维护的collection包的groupBy方法可以一行代码完成分组:

  1. 先在pubspec.yaml的dependencies节点添加依赖:
dependencies:
  flutter:
    sdk: flutter
  collection: ^1.18.0 # 选择适配你的Flutter版本的版本号即可
  1. 代码中调用groupBy方法:
import 'package:collection/collection.dart';

// 直接完成分组
Map<String, List<dynamic>> groupedData = groupBy(personalityList, (item) => item['famousAs'] as String);

两种方案最终输出的分组结果完全一致,可根据项目需求选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:39:02