首页 > 解决方案 > Dart 根据某个属性的值将列表拆分为子列表?

问题描述

我有一个具有 DateTime 属性的事件列表,我想根据年份制作该列表的子列表。有没有办法可以将我的主要事件列表拆分为子列表,以便在每个子列表中,每个事件都有相同的年份?所以我最终会得到一个包含所有 2020 年事件的子列表,一个包含所有 2021 年事件的子列表,等等。

List<DayTasks>其中 DayTasks 定义为:

class DayTasks{
  List<Task> _tasks = [];

  final DateTime _date;
}

List<Task>这里不是问题,我想为List<DayTasks>.

标签: listflutterdartgrouping

解决方案


您可以使用groupBy根据日期获取子列表。假设您有一个 DayTasks 列表

final dayTaskList = <DayTasks>[];

您可以使用以下方法获取基于同一年的 DayTasks 分组列表:

final groupedList = groupBy(dayTaskList, (DayTasks dayTasks) => DateTime(dayTasks._date.year)).entries.toList();

此分组列表可用于遍历创建的子列表。


推荐阅读