使用 `List.map` 时的类型转换问题
Type Casting Problem While Using `List.map`
我正在尝试使用 List.map
功能,但我无法让它工作。
这里我有一个 data
类型的 List<List<dynamic>>
变量,当我试图
在 data
上执行以下操作,它会抛出异常。
rows: data.map((i) {
DataRow(
cells: <DataCell>[
DataCell(Text(i[0].text)),
DataCell(Text(i[1].text)),
DataCell(Text(i[3].text)),
],
);
}
).toList(),
以上代码抛出如下异常:
我尝试了上述 Whosebug link 上提供的不同解决方案。即
rows: data.map<DataRow>((i) {
DataRow(
cells: <DataCell>[
DataCell(Text(i[0].text)),
DataCell(Text(i[1].text)),
DataCell(Text(i[3].text)),
],
);
}
).toList(),
或:
rows: data.map((i) {
DataRow(
cells: <DataCell>[
DataCell(Text(i[0].text)),
DataCell(Text(i[1].text)),
DataCell(Text(i[3].text)),
],
);
}
).toList() as List<DataRow>,
或:
rows: List<DataRow>.from(data.map((i) {
DataRow(
cells: <DataCell>[
DataCell(Text(i[0].text)),
DataCell(Text(i[1].text)),
DataCell(Text(i[3].text)),
],
);
})
).toList(),
None 似乎有效,在应用上述方法时,在某些情况下,我得到的异常与我的异常不同
在开始时提到,即在某些情况下我得到这个例外:
type 'Null' is not a subtype of type 'DataRow' in type cast
如果我不使用 List.map
,它会起作用。即如果我声明一个 List<DataRow>
变量然后填充它
使用 for
循环。然后就可以了。
rows: buildItems(data),
);
}
List<DataRow> buildItems(data) {
List<DataRow> rows = [];
for (var i in data) {
rows.add(DataRow(cells: [
DataCell(Text(i[0].text)),
DataCell(Text(i[1].text)),
DataCell(Text(i[3].text)),
]));
}
return rows;
}
上面的代码是可以的,只是我在使用List.map
.
的时候不能让它工作
您需要像这样向地图添加 return
语句
rows: data.map((i) {
return DataRow(
cells: <DataCell>[
DataCell(Text(i[0].text)),
DataCell(Text(i[1].text)),
DataCell(Text(i[3].text)),
],
);
}
).toList(),
我正在尝试使用 List.map
功能,但我无法让它工作。
这里我有一个 data
类型的 List<List<dynamic>>
变量,当我试图
在 data
上执行以下操作,它会抛出异常。
rows: data.map((i) {
DataRow(
cells: <DataCell>[
DataCell(Text(i[0].text)),
DataCell(Text(i[1].text)),
DataCell(Text(i[3].text)),
],
);
}
).toList(),
以上代码抛出如下异常:
我尝试了上述 Whosebug link 上提供的不同解决方案。即
rows: data.map<DataRow>((i) {
DataRow(
cells: <DataCell>[
DataCell(Text(i[0].text)),
DataCell(Text(i[1].text)),
DataCell(Text(i[3].text)),
],
);
}
).toList(),
或:
rows: data.map((i) {
DataRow(
cells: <DataCell>[
DataCell(Text(i[0].text)),
DataCell(Text(i[1].text)),
DataCell(Text(i[3].text)),
],
);
}
).toList() as List<DataRow>,
或:
rows: List<DataRow>.from(data.map((i) {
DataRow(
cells: <DataCell>[
DataCell(Text(i[0].text)),
DataCell(Text(i[1].text)),
DataCell(Text(i[3].text)),
],
);
})
).toList(),
None 似乎有效,在应用上述方法时,在某些情况下,我得到的异常与我的异常不同
在开始时提到,即在某些情况下我得到这个例外:
type 'Null' is not a subtype of type 'DataRow' in type cast
如果我不使用 List.map
,它会起作用。即如果我声明一个 List<DataRow>
变量然后填充它
使用 for
循环。然后就可以了。
rows: buildItems(data),
);
}
List<DataRow> buildItems(data) {
List<DataRow> rows = [];
for (var i in data) {
rows.add(DataRow(cells: [
DataCell(Text(i[0].text)),
DataCell(Text(i[1].text)),
DataCell(Text(i[3].text)),
]));
}
return rows;
}
上面的代码是可以的,只是我在使用List.map
.
您需要像这样向地图添加 return
语句
rows: data.map((i) {
return DataRow(
cells: <DataCell>[
DataCell(Text(i[0].text)),
DataCell(Text(i[1].text)),
DataCell(Text(i[3].text)),
],
);
}
).toList(),