将dynamic List转为SMSModel List时遇类型不匹配异常求助
解决List转List的类型不匹配异常
问题原因
cast<SMSModel>()仅做类型断言,不会自动将List内的dynamic元素转换为SMSModel实例。如果data中的元素并非SMSModel对象(比如是JSON Map、原始类型),直接使用cast就会触发type 'List<dynamic>' is not a subtype of type 'List<SMSModel>'异常。
解决方案
根据data内元素的实际类型,选择对应转换方式:
元素是JSON/Map类型(最常见场景)
遍历每个元素,通过fromJson构造方法转换:List<SMSModel> list = data.map((item) => SMSModel.fromJson(item)).toList();需确保SMSModel类实现
fromJson工厂构造:class SMSModel { // 示例字段,根据你的实际需求调整 final String sender; final String message; SMSModel({required this.sender, required this.message}); factory SMSModel.fromJson(Map<String, dynamic> json) { return SMSModel( sender: json['sender'] ?? '', message: json['message'] ?? '', ); } }元素是其他自定义类型
编写对应转换方法,比如从DTO转模型:List<SMSModel> list = data.map((item) => SMSModel.fromDTO(item)).toList();元素本身就是SMSModel,只是被标记为dynamic
直接用强转(仅当确定元素类型完全匹配时使用):List<SMSModel> list = data as List<SMSModel>;
内容的提问来源于stack exchange,提问作者Rigel1121
相关产品推荐
相关产品推荐

