如何使用 groupBy
中的 collection.dart
函数按两个字段对项目进行分组并返回一个模型类,不是一个字段,例如 int
?
如果我按一个字段分组,它工作正常,没有问题:
Map<int, List<FooterItem>> _getGroups(List<FooterItem> items) {
return groupBy(items, (FooterItem i) {
return i.groupId;
});
}
但是当我想从 result 返回一个模型类时,groupBy
不是对值进行分组。
在这里,我有一个 FooterItem
列表,其中包含它的组数据,以及如何使用 groupBy
通过 List<FooterItem>
和 groupId
将 titleGroup
分组并返回 FooterGroup 不内部:
class FooterItem {
final int id;//item id
final int groupId;
final String title;//item title
final String titleGroup;
...
}
Map<FooterGroup, List<FooterItem>> _getGroups(List<FooterItem> items) {
return groupBy(items, (FooterItem i) {
return FooterGroup(id: i.groupId, title: i.titleGroup);
});
}
答案 0 :(得分:1)
我可以通过在模型类中扩展 Equatable
来解决问题,我想将其用作分组值和覆盖道具:
import 'package:equatable/equatable.dart';
class FooterGroup extends Equatable{
final int id;
final String title;
FooterGroup({
@required this.id,
@required this.title,
});
@override
List<Object> get props => [id,title];
}
因此不再看到组的重复值。所以
Map<FooterGroup, List<FooterItem>> _getGroups(List<FooterItem> items) {
return groupBy(items, (FooterItem i) {
return FooterGroup(id: i.groupId, title: i.titleGroup);
});
}
现在工作正常。