You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 17:55:58