Flutter-在一个请求中映射两个列表

问题描述

我将映射列表(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
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...