你遇到的错误信息 'List<dynamic>' is not a subtype of type 'Data'
表示你试图将一个 List<dynamic>
类型的对象赋值给一个期望 Data
类型的变量或参数。这在静态类型检查的语言(如Dart)中是不允许的,因为 dynamic
类型表示任意类型,而 Data
是一个具体的类型。
dynamic
类型表示任意类型,编译器不会对其进行类型检查。Data
是一个自定义类或结构体,表示一种特定的数据类型。Data
类型元素的列表。假设你有一个函数,期望接收一个 List<Data>
类型的参数:
class Data {
final int id;
final String name;
Data(this.id, this.name);
}
void processData(List<Data> dataList) {
// 处理数据
}
如果你传递一个 List<dynamic>
类型的参数,就会触发类型错误:
List<dynamic> dynamicList = [
{'id': 1, 'name': 'Alice'},
{'id': 2, 'name': 'Bob'}
];
// 这里会触发类型错误
processData(dynamicList);
List<dynamic>
转换为 List<Data>
。List<Data> data_list = dynamicList.map((item) => Data(item['id'], item['name'])).toList();
processData(data_list);
List<dynamic> dynamicList = [
{'id': 1, 'name': 'Alice'},
{'id': 2, 'name': 'Bob'}
];
List<Data> data_list = [];
for (var item in dynamicList) {
if (item is Map<String, dynamic> && item.containsKey('id') && item.containsKey('name')) {
data_list.add(Data(item['id'], item['name']));
}
}
processData(data_list);
通过以上方法,你可以解决 'List<dynamic>' is not a subtype of type 'Data'
的错误。确保在传递数据时,类型匹配是关键。
领取专属 10元无门槛券
手把手带您无忧上云