如何解决如何在另一个组列表groupby中实现组列表是否可以在dart自定义对象中使用多个哈希码和operator ==
class People {
final String id;
final String title;
final String name;
final String location;
final String email;
final String lga;
People({
@required this.id,@required this.title,@required this.name,@required this.location,this.email,this.lga,});
factory People.fromJson(Map<String,dynamic> json) => People(
id: json["id"],title: json["title"],name: json["name"],location: json["location"],email: json["email"],lga: json["lga"],);
Map<String,dynamic> toJson() => {
"id": id,"title": title,"name": name,"location": location,"email": email,"lga": lga,};
@override
bool operator ==(o) =>
o is Priest && townOrigin == o.townOrigin && lga == o.lga;
@override
int get hashCode => town.hashcode ^ lga.hashcode;
这在城镇或拉加之间的listView中是可能的,但我的问题是,我也想在这些位置中实现这些equals和hashCode
,而在另一个ListView中则有所不同。
为简单起见,许多人具有相同的位置,但是我只需要一个位置,来自相同位置的许多人(作为标头),并在下面重复其名称。
有帮助吗?
[
{
"id": "1","name": "Ada Kenneth Kenechukwu","location": "Awka","townOrigin": "Nimo","phone": "080633","lga": "Njikoka",},{
"id": "2","name": "Ugo John","phone": "08057763",{
"id": "3","name": "Okafor Kenneth Kenechukwu","townOrigin": "Ukpo","phone": "0806363","lga": "Dunukofia",{
"id": "4","name": "Ndu Agi","phone": "0806763",{
"id": "5","name": "Mma Peter","townOrigin": "Ichida","lga": "Anaocha",{
"id": "6","name": "Eze Peter","phone": "0806345",}
]
当您查看此内容时,有些位置相同,即TownOrigin,lga。我的应用程序中有三个listView页面,它将分别显示来自同一位置,townOrigin,lga的所有那些(名称)。仅显示名称,但使用一个元素(如Awka所在位置)作为副标题。这同样适用于所有townOrigin和lga。期待获得帮助。
我的状况有所好转,但还没有解决我所有的问题, 使用此包sticky_grouped_list,https://pub.dev/packages/sticky_grouped_list
我想要一个小组内部的小组。我已经得到了一组LGA,但尚未放入LGA组中。
如何将“ Uga”等同一地点的人合并到一起。
解决方法
您可以尝试添加以下内容:
extension GroupingBy on Iterable<dynamic> {
Map<String,List<dynamic>> groupingBy(String key){
var result = <String,List<dynamic>>{};
for(var element in this){
result[element[key]] = (result[element[key]] ?? [])..add(element);
}
return result;
}
}
这将使您可以按特定字段对数据元素进行分组。
首先,将您的数据放入列表中
var people = [
{
"id": "1","name": "Ada Kenneth Kenechukwu","location": "Awka","townOrigin": "Nimo","phone": "080633","lga": "Njikoka",},{
"id": "2","name": "Ugo John","phone": "08057763",{
"id": "3","name": "Okafor Kenneth Kenechukwu","townOrigin": "Ukpo","phone": "0806363","lga": "Dunukofia",{
"id": "4","name": "Ndu Agi","phone": "0806763",{
"id": "5","name": "Mma Peter","townOrigin": "Ichida","lga": "Anaocha",{
"id": "6","name": "Eze Peter","phone": "0806345",{
"id": "7","name": "New Person","location": "Somewhere else","townOrigin": "idk","phone": "694201738","lga": "Mystery",}
];
现在,如果要按位置对它们进行分组,则可以像这样简单地完成操作:
var peopleByLocation = people.groupingBy('location');
var awka = peopleByLocation['Awka']; //List of all people with a 'location' : 'Awka'
var somewhereElse = peopleByLocation['Somewhere else'];
以下是dartpad中经过稍微修改的版本的链接,您可以使用它:https://dartpad.dev/8a53fc2eb4f63d904f414ea528574baf
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。