当前位置: 首页 > 知识库问答 >
问题:

我有这个错误:_TypeError(类型_InternalLinkedHashMap不是类型列表的子类型)

魏鸿禧
2023-03-14

这是我的代码:

class ProveedoresService{
  final _dio = new Dio();
  Future<List<ProveedorModel>> getProveedorByName() async{
    final resp = await _dio.get(url);
    final List<ProveedorModel> proveedorList = resp.data;    //HERE MARKS MY ERROR....
    return proveedorList.map(
      (obj) => ProveedorModel.fromJson(obj)
      ).toList();
  }
}

我得到的错误是:

_类型错误(类型“\u InternalLinkedHashMap

共有1个答案

邴兴为
2023-03-14

来自API的数据不等同于List

可能是一个列表

因此,您的resp.data具有List的数据类型

现在转换List

示例

class ProvModel {
    final String name;
    final int age;
    const ProvModel({this.name, this.age});
    
    // From Map function
    factory ProvModel.fromMap(Map<String, dynamic> data) {
        // API:
        // [
        //     {
        //         'name_field': "Alex",
        //         'age_field': 20,
        //     },
        // ]

        return ProvModel(
            name: data['name_field'], 
            age: data['age_field'], 
        );
    }
}

现在您必须转换resp的每个元素。将数据放入模型并添加到返回列表中。

class ProvService {
  final _dio = new Dio();

  Future<List<ProvModel>> getProvByName() async {
    final resp = await _dio.get(url);

    final List<Map<String, dynamic>> list = resp.data;
    final List<ProvModel> provList = [];

    for (Map<String, dynamic> data in list) {

      // Converting each and every element form Map<String, dynamic> to ProvModel
      final ProvModel provModel = ProvModel.fromMap(data);

      provList.add(provModel);
    }

    return provList;
  }
}

希望这将解决您给定的错误。

如果您有任何疑问,请予以评论。

 类似资料: