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

Flutter类型转换异常:_InternalLinkedHashMap无法转为int的原因问询

分析Flutter中"type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'int' in type cast"异常原因

这个错误我之前在Flutter开发中也踩过坑,本质就是类型不匹配的问题——你的代码里某个地方把一个_InternalLinkedHashMap<String, dynamic>(也就是我们常说的JSON Map对象)当成int类型来强制转换了,系统当然会抛出类型不兼容的异常。

下面是几个最可能触发这个错误的场景:

  • OrderItem模型序列化/反序列化的字段类型不匹配
    比如你的OrderItem类里定义了一个int类型的字段(比如itemId),但对应的JSON数据里这个字段是一个嵌套的Map结构;或者你在fromJson方法里,错误地用as int去强转一个实际是Map的字段。举个例子:

    // 错误示例:假设JSON里的itemDetails是一个Map,但模型里定义成int
    final int itemDetails;
    OrderItem.fromJson(Map<String, dynamic> json) : itemDetails = json['itemDetails'] as int;
    

    如果接口返回的itemDetails是{"id": 1001, "name": "商品A"}这种Map,上面的代码就会直接触发你遇到的异常。

  • REST请求发送时的参数类型错误
    在构造请求体的时候,你可能把一个Map类型的值错误赋值给了原本应该是int类型的参数。比如后端接口要求quantity字段是int,但你在把OrderItem序列化成JSON时,这个字段被处理成了Map(比如写成'quantity': {'count': 5}而不是'quantity': 5),导致请求体里的类型不符合预期,进而触发类型转换错误。

  • 请求响应解析时的类型误判
    如果你的saveOrderItemList方法在处理接口响应时,错误地把响应体中的某个Map字段当成int来转换。比如你想获取响应里的code字段(预期是int),但不小心写成了response.data['data'] as int,而response.data['data']实际是一个包含多字段的Map。

快速排查建议

  1. 先定位错误发生的具体代码行:可以在saveOrderItemList和OrderItem的fromJson/toJson方法中添加打印日志,输出要转换的JSON数据,对比模型类的字段类型。
  2. 核对OrderItem模型类与JSON结构的匹配度:确保每个字段的类型和JSON中的对应值类型完全一致,比如JSON是int就用int,JSON是嵌套对象就定义对应的子模型类。
  3. 检查toJson方法的实现:确认序列化后的每个字段类型都符合后端接口的要求,避免把int字段序列化成Map。

内容的提问来源于stack exchange,提问作者PeakGen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 22:57:34