如何在返回小部件之前遍历列表以创建地图?颤振-飞镖
How to iterate over a list to create a map before returning a widget? Flutter - Dart
我想创建一个小部件,该小部件将基于地图上的循环生成多个 CheckboxListTiles。每个条目的键是一个 ProfessionalService,它的值是一个布尔值(表示该框是否被选中)。 ProfessionalIdentityModel 拥有一个 ProfessinalService 列表。我想遍历地图以创建多个 CheckBoxTiles。
我的代码看起来像:
Widget serviceTile(ProfessionalIdentityModel professionalIdentityModel) {
Map boolServiceMap = {
for (var service
in professionalIdentityModel.professionalServices.services)
service: false
};
return Column(
children: <Widget>[
boolServiceMap.forEach((service, boolean) {
CheckboxListTile(
title: Text(service.name),
value: false,
onChanged: (bool value) {
setState(() {
service[boolean] = value;
});
},
);
})
],
);
}
我想根据我的专业服务列表创建我的地图。必须在返回我的小部件之前完成。问题是只填充了 1 个 CheckBoxTiles,因为我的地图只包含 1 个元素。你能找到我的地图包含所有元素的解决方案吗?
你能帮帮我吗?非常感谢。
一个Map
需要有唯一键,如果你所有的services
有相同的对象,所有的键将是相等的而不是唯一的。
每次您要添加条目时,新密钥将与上一个密钥相同。当 Maps 接收到的键等于他们已有的另一个键时,它们只会覆盖该键的值,这就是为什么您的 Map
只有一个项目。
你正在做的是这样的:
Map myMap = { 'myInt': 1 };
myMap['myInt'] = 2;
myMap['myInt'] = 3;
myMap['myInt'] = 4;
最后 myMap
将只有一个条目:'myInt': 4
。
如果您的所有服务都是不同的对象,您的 Map
唯一可行的方法。
一开始很难理解这一点,因为您 post 不知道您的服务类型以及它们是如何构建的,所以我假设它们都是不同的,因为通常我们不会创建同一个服务多次,但不同的服务做不同的事情(单一职责原则)。
我想创建一个小部件,该小部件将基于地图上的循环生成多个 CheckboxListTiles。每个条目的键是一个 ProfessionalService,它的值是一个布尔值(表示该框是否被选中)。 ProfessionalIdentityModel 拥有一个 ProfessinalService 列表。我想遍历地图以创建多个 CheckBoxTiles。
我的代码看起来像:
Widget serviceTile(ProfessionalIdentityModel professionalIdentityModel) {
Map boolServiceMap = {
for (var service
in professionalIdentityModel.professionalServices.services)
service: false
};
return Column(
children: <Widget>[
boolServiceMap.forEach((service, boolean) {
CheckboxListTile(
title: Text(service.name),
value: false,
onChanged: (bool value) {
setState(() {
service[boolean] = value;
});
},
);
})
],
);
} 我想根据我的专业服务列表创建我的地图。必须在返回我的小部件之前完成。问题是只填充了 1 个 CheckBoxTiles,因为我的地图只包含 1 个元素。你能找到我的地图包含所有元素的解决方案吗?
你能帮帮我吗?非常感谢。
一个Map
需要有唯一键,如果你所有的services
有相同的对象,所有的键将是相等的而不是唯一的。
每次您要添加条目时,新密钥将与上一个密钥相同。当 Maps 接收到的键等于他们已有的另一个键时,它们只会覆盖该键的值,这就是为什么您的 Map
只有一个项目。
你正在做的是这样的:
Map myMap = { 'myInt': 1 };
myMap['myInt'] = 2;
myMap['myInt'] = 3;
myMap['myInt'] = 4;
最后 myMap
将只有一个条目:'myInt': 4
。
如果您的所有服务都是不同的对象,您的 Map
唯一可行的方法。
一开始很难理解这一点,因为您 post 不知道您的服务类型以及它们是如何构建的,所以我假设它们都是不同的,因为通常我们不会创建同一个服务多次,但不同的服务做不同的事情(单一职责原则)。