使用map和fromjson无法将API转为List<SubCatModal>类型问题
解决List转List的问题
你可以通过以下几种方式将转换后的列表类型明确为List<SubCatModal>:
方法一:使用List<SubCatModal>.from()构造列表
直接用目标类型的List构造器包裹map结果,明确指定元素类型:
final List<SubCatModal> responseJson = List<SubCatModal>.from( allSubCatListApi['data'].map((e) => SubCatModal.fromjson(e)) );
方法二:用cast<SubCatModal>强制转换类型
在toList()之后调用cast方法,将动态列表转为目标类型:
final List<SubCatModal> responseJson = allSubCatListApi['data'] .map((e) => SubCatModal.fromjson(e)) .toList() .cast<SubCatModal>();
方法三:给map指定泛型参数
在map方法中明确指定返回的元素类型,这样toList()会直接生成对应类型的列表:
final List<SubCatModal> responseJson = allSubCatListApi['data'] .map<SubCatModal>((e) => SubCatModal.fromjson(e)) .toList();
额外优化建议
建议将构造函数名改为符合Dart规范的fromJson(首字母大写),同时用初始化列表简化代码:
class SubCatModal { late int id; late String name; late String img; late String color; SubCatModal.fromJson(Map<String, dynamic> json) : id = json['id'], name = json['name'], img = json['img'], color = json['color']; }
内容的提问来源于stack exchange,提问作者Shady Hesham
相关产品推荐
相关产品推荐

