Dictionary 在flatter中创建列表的映射
将应用程序从Swift移植到Flatter。在我的应用程序中,我有一个类,Dictionary 在flatter中创建列表的映射,dictionary,flutter,dart,Dictionary,Flutter,Dart,将应用程序从Swift移植到Flatter。在我的应用程序中,我有一个类,MyClass,正在处理大约250个实例的列表。在不同的时候,我需要根据特定的属性对对象进行分组 在Swift中,我可以创建一个对象的分组列表,如下所示: var groupedList = Dictionary<String, Array<MyClass>>() var groupedList=Dictionary() 然后,我可以循环浏览我的对象列表,并根据需要将项目分配到正确的数组。我想在
MyClass
,正在处理大约250个实例的列表。在不同的时候,我需要根据特定的属性对对象进行分组
在Swift中,我可以创建一个对象的分组列表,如下所示:
var groupedList = Dictionary<String, Array<MyClass>>()
var groupedList=Dictionary()
然后,我可以循环浏览我的对象列表,并根据需要将项目分配到正确的数组。我想在Flitter中制作列表地图可能会有用,如下所示:
Map groupedList = Map<String, List<MyClass>>();
Map groupedList=Map();
然后,我可以循环遍历项目,测试属性,为每个唯一值创建一个映射条目,并将项目附加到正确的列表中:
for (var item in listOfObjects) {
if (!groupedList.containsKey(item.someproperty)) {
List<MyClass> sublist = [];
groupedList[item.someproperty] = sublist;
}
groupedList[item.someproperty].add(item);
}
for(listOfObjects中的变量项){
如果(!groupedList.containsKey(item.someproperty)){
列表子列表=[];
groupedList[item.someproperty]=子列表;
}
groupedList[item.someproperty].add(item);
}
然而,我得到的是一个包含所有正确键的映射,但每个列表只包含一个MyClass实例,而不是一个实际的MyClass列表 使用
putIfAbsent
有一个更简洁的语法。这将提供您期望的结果:
void main() {
var groupedList = <String, List<MyClass>>{};
var listOfObjects = <MyClass>[
MyClass('Europe', 'France'),
MyClass('Europe', 'Germany'),
MyClass('Europe', 'Italy'),
MyClass('North America', 'USA'),
MyClass('Asia', 'Japan'),
MyClass('Asia', 'China'),
];
for (var item in listOfObjects) {
groupedList.putIfAbsent(item.someProperty, () => <MyClass>[]).add(item);
}
print(groupedList);
}
class MyClass {
String someProperty;
String someValue;
MyClass(this.someProperty, this.someValue);
@override
String toString() => '$someProperty->$someValue';
}
void main(){
var groupedList={};
变量listOfObjects=[
MyClass(“欧洲”、“法国”),
MyClass(“欧洲”、“德国”),
MyClass(“欧洲”、“意大利”),
MyClass(“北美”、“美国”),
MyClass(“亚洲”、“日本”),
MyClass(“亚洲”、“中国”),
];
for(listOfObjects中的变量项){
groupedList.putIfAbsent(item.someProperty,()=>[])。添加(item);
}
打印(分组列表);
}
类MyClass{
字符串属性;
字符串someValue;
MyClass(this.someProperty,this.someValue);
@凌驾
字符串toString()=>“$someProperty->$someValue”;
}
也许你应该试试酒吧,它的灵感来自微软LINQThank!终于找到了我想要的