从 Flutter 中的 List 获取一个子子项

Posted

技术标签:

【中文标题】从 Flutter 中的 List 获取一个子子项【英文标题】:Get a children childs from List in Flutter 【发布时间】:2022-01-15 09:11:41 【问题描述】:

我无法从 Flutter 的列表中获取所有孩子。

List 结构如下所示:

列出_mainlist =

[element1: [null, "abc1", "abc2"], element2: [null, "abc3", "abc4"], ... ]

我的问题是如何让 List 看起来像这样:

["abc1", "abc2", "abc3", "abc4", ...]

我尝试使用此代码,但它不起作用

List mylist = _mainlist[0];
List alllist = [];

mylist.forEach((element) 
   alllist.add(element);
);

【问题讨论】:

【参考方案1】:

如果您有 Map 而不是 List,您也可以这样做:

void main() 
  final _mainlist = ['element1': [null, "abc1", "abc2"], 'element2': [null, "abc3", "abc4"],];

  final allElements = _mainlist[0].values;
  final allItems = [];

  for (final element in allElements) 
      allItems.addAll(element.where((item) => item != null));
  

  print(allItems);

 

编辑

如果你喜欢函数,你也可以使用

void main() 
  final _mainlist = ['element1': [null, "abc1", "abc2"], 'element2': [null, "abc3", "abc4"],];

  final allItems = _mainlist[0].values.reduce((value, element) 
    value.addAll(element);
    return value;
  ).where((item) => item != null).toList();

  print(allItems);

 

【讨论】:

【参考方案2】:

我假设你在这里得到一个列表列表,我也确信有更好的方法可以做到这一点,但至少可以让你得到更好的答案

  var elementList = [
    
      [null, "abc1", "abc2"],
      [null, "abc3", "abc4"],
    
  ];

  List allList = [];

  for (final element in elementList) 
    for (final e in element.toList()) 
      allList..addAll(e.where((x) => x != null));
    
  
  print(allList.toList());
  //[abc1, abc2, abc3, abc4]

请记住在未来添加您的课程以便更好地理解。

【讨论】:

感谢您的帮助

以上是关于从 Flutter 中的 List 获取一个子子项的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:我如何从 List<String> 中的 firestore 获取数据?

从 Flutter 中的 Uint8List 数据更改图像大小

如何从 Flutter Web 中的 Uint8List 获取视频缩略图?

获取 ListView 项的子项相对于 Form 的坐标

Flutter - 无法将所有 json 数据从 api 响应保存到 Iterable List 编辑:(无法从可迭代列表中获取数据)

GroupJoin with list返回多个结果,而不是按结果附加列表