我在Maps列表中有一个简单的嵌套列表,如何迭代这个变量?下面的代码会引发错误。
可空表达式不能用作for-in循环中的迭代器.
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);
}
}
}发布于 2022-06-16 10:06:27
您必须声明对象的类型。
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);
}
}
}

发布于 2022-06-16 10:07:31
因为el是一个映射,它不知道el['content']是否为null,甚至不知道它是否是一个列表,因此您可以像这样将它转换为List以使其工作。
for (var el in changes) {
for (var subEl in (el['content'] as List)) {
print (subEl);
}
}这段代码如果碰巧不是一个列表,就会崩溃,例如,您可以让它更安全。
for (var el in changes) {
var list = el['content'];
if (list is List) {
for (var subEl in list) {
print (subEl);
}
}
}https://stackoverflow.com/questions/72644012
复制相似问题