Dart 相当于 Python zip 和列表理解,用于从两个列表生成小部件列表

Mac*_*ner 5 python list-comprehension list dart

MyWidget(categoryName, color)我想从以下两个列表创建一个小部件列表。

  static const _categoryNames = <String>[
    'Length',
    'Area',
    'Volume',
  ];

  static const _baseColors = <Color>[
    Colors.teal,
    Colors.orange,
    Colors.pinkAccent,
  ];
Run Code Online (Sandbox Code Playgroud)

在 Python 中,我将使用 zip 的列表理解来获取结果。

my_widget_list = [MyWidget(categoryName, baseColor) for categoryName, baseColor in zip(_categoryNames, _baseColors)]
Run Code Online (Sandbox Code Playgroud)

谷歌搜索 Dart 的类似方法没有提供任何令人满意的解决方案。

Pra*_*ell 4

如果您的目标是创建一个小部件列表(假设您的两个列表将具有相同数量的元素)。你可以试试

List<Widget> getWidgets() {

  List<Widget> my_widget_list = [];
  const _categoryNames = <String>[
    'Length',
    'Area',
    'Volume',
  ];

 const _baseColors = <Color>[
    Colors.teal,
    Colors.orange,
    Colors.pinkAccent,
  ];

  for (int i = 0; i <= _categoryNames.length -1 ; i++){
    my_widget_list.add(MyWidget(_categoryNames[i],_baseColors[i]));
  }

  return my_widget_list;
  }

Widget MyWidget(String categoryName, Color baseColor){
  return Container(
    color: baseColor,
    child: Text(categoryName,));
}
Run Code Online (Sandbox Code Playgroud)