首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >颤振嵌套映射和列表中的嵌套循环

颤振嵌套映射和列表中的嵌套循环
EN

Stack Overflow用户
提问于 2022-06-16 09:59:42
回答 2查看 267关注 0票数 0

我在Maps列表中有一个简单的嵌套列表,如何迭代这个变量?下面的代码会引发错误。

可空表达式不能用作for-in循环中的迭代器.

代码语言:javascript
复制
void main() {
  final changes = [
    {
      'version': '1',
      'date': '3 Nov 2021',
      'content': [
        'Changes 1',
        'Changes 2',
      ],
    },
    {
      'version': '2',
      'date': '5 Nov 2021',
      'content': [
        'Changes 3',
        'Changes 4',
        ],
    },
  ];
  
  for (var el in changes) {
    for (var subEl in el['content']) {
      print (subEl);
    }
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-16 10:06:27

您必须声明对象的类型。

代码语言:javascript
复制
void main() {
  final List<Map<String, dynamic>> changes = [
    {
      'version': '1',
      'date': '3 Nov 2021',
      'content': [
        'Changes 1',
        'Changes 2',
      ],
    },
    {
      'version': '2',
      'date': '5 Nov 2021',
      'content': [
        'Changes 3',
        'Changes 4',
        ],
    },
  ];
  
  for (var el in changes) {
    for (var subEl in el['content']) {
      print (subEl);
    }
  }
}

票数 1
EN

Stack Overflow用户

发布于 2022-06-16 10:07:31

因为el是一个映射,它不知道el['content']是否为null,甚至不知道它是否是一个列表,因此您可以像这样将它转换为List以使其工作。

代码语言:javascript
复制
for (var el in changes) {
  for (var subEl in (el['content'] as List)) {
    print (subEl);
  }
}

这段代码如果碰巧不是一个列表,就会崩溃,例如,您可以让它更安全。

代码语言:javascript
复制
for (var el in changes) {
  var list = el['content'];
  if (list is List) {
    for (var subEl in list) {
      print (subEl);
    }   
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72644012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档