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

Flutter中如何将不同数组元素的服务列表合并为单个列表

问题分析与解决方案

你的代码核心问题是return语句放在了外层for循环内部,导致程序遍历第一个multiServicesModel元素后就直接返回结果,后续元素的services完全没被处理,合并后的列表自然不完整。

修正后的基础写法

把return移到外层循环外面,确保所有元素都遍历完成后再返回最终列表:

List<PriceServicesModel> get selectedServices {
  List<PriceServicesModel> list = [];
  for (var element in multiServicesModel) {
    // 遍历当前元素的所有services并添加到列表
    for (var service in element.services) {
      list.add(service);
      // 也可以用 list = [...list, service]; 但add性能更优
    }
  }
  // 所有元素处理完后再返回
  return list;
}

更简洁的Dart风格写法

Dart提供了更优雅的集合操作方法,不用嵌套循环就能实现需求:

方法1:使用expand展开集合

expand会将每个元素的services列表展开为单个元素,最后转成List:

List<PriceServicesModel> get selectedServices {
  return multiServicesModel.expand((element) => element.services).toList();
}

方法2:使用fold累加合并

fold从初始空列表开始,逐个将每个元素的services合并到结果列表中:

List<PriceServicesModel> get selectedServices {
  return multiServicesModel.fold([], (resultList, element) => [...resultList, ...element.services]);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:39:34