问题描述
我将映射列表(firstList)传递给Widget(作为模型),我想传递第二个作为regionModel。所以这是我的问题。是否可以在一个请求中映射两个列表(需要映射secondList并将其作为regionModel:value2传递)。我找到了类似IterableZip的东西,但不再支持。
Widget _buildView(
List<FirstListModels> firstList,List<SecondListModels> secondList,...
children: firstList.map((value) {
return Widget(
model: value,regionModel: value2);
}).toList()
然后当我通过它们时,我会得到:
class SomeClass extends StatefulWidget {
final FirstListModel model;
final List<SecondListModel> regionModel;
因此,我需要摆脱列表,使其只有SecondListModel并具有如下输出:
class SomeClass extends StatefulWidget {
final FirstListModel model;
final SecondListModel regionModel;
解决方法
如果两个列表的长度相同,则可以使用for
循环和spread operator
void main() {
final firstList = ['firstList - item #1','firstList - item #2'];
final secondList = ['secondList - item #1','secondList - item #2'];
final listOfModels = [
for (var i = 0; i < firstList.length; i++) ...{
SomeModel(model: firstList[i],region: secondList[i]),}
];
print(listOfModels);
}
class SomeModel {
final String model;
final String region;
SomeModel({this.model,this.region});
toString() => 'SomeModel(model: $model,region: $region)';
}
,
已解决
我照原样保留它,然后将模型和列表与firstWhere进行比较,并从中返回字符串(URL的一部分)
String _compareLists(){
var result = widget.secondList.firstWhere(
(element) => element?.property == widget.firstList.property,orElse: () => null)
.?propertyContainsUrl ?? "";
return result
}