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

Flutter类型错误:'String'不是'index'的'int'子类型求助

问题排查与解决方案

错误原因分析

你遇到的'String' is not a subtype of type 'int' of 'index'错误,核心是错误使用索引类型(用字符串索引数组,或用整数索引Map),结合你的代码和返回的JSON数据,具体问题点如下:

  1. 地址数据路径完全错误
    实际返回的JSON中,地址信息存储在根节点的addresses数组里,但你的代码却去访问client对象下的direction和shippingAddressList——而这两个字段在JSON里都是null。尝试对null使用数组索引[0](整数类型),会直接触发类型不匹配错误。

  2. 代码示例2的层级错误
    你写的jsonDecode(...)['data']['addresses']中,返回的JSON根节点没有data字段,['data']会返回null,后续用字符串索引['addresses']访问null时,就会触发“String不是int类型的index”错误。

  3. 字段名不匹配
    代码中使用的noInterior、noOutdoor、coordinatesCode等字段名,和JSON地址对象里的interiorNumber、outdoorNumber、coordinateCode完全不匹配,会导致获取到null,进一步引发后续操作的类型问题。


正确实现代码

步骤1:正确解析地址数组

// 解析接口返回的原始数据
final responseData = jsonDecode(utf8.decode(response.bodyBytes));
// 直接获取根节点的addresses数组(注意拼写是addresses,不是adresses)
List<dynamic> addresses = responseData['addresses'];

步骤2:构造目标接口需要的地址格式

// 构造要发送给另一个接口的地址列表
List<Map<String, dynamic>> targetAddresses = [];

for (var addr in addresses) {
  // 按目标接口要求组装字段,可替换为你的自定义变量(如estadoCliente等)
  Map<String, dynamic> addressItem = {
    "id": addr['id'],
    "street": addr['street'],
    "colony": addr['colony'],
    "state": addr['state'], // 替换为你的estadoCliente变量
    "stateCode": addr['stateCode'],
    "delegation": addr['delegation'], // 替换为你的mudegCliente变量
    "delegationCode": addr['delegationCode'],
    "interiorNumber": addr['interiorNumber'],
    "outdoorNumber": addr['outdoorNumber'],
    "cp": addr['cp'],
    "city": addr['city'],
    "addressType": addr['addressType'],
    "flat": addr['flat'], // 替换为你的fatCliente变量
    "flatCode": addr['flatCode'],
    "coordinate": addr['coordinate'], // 替换为你的coordCliente变量
    "coordinateCode": addr['coordinateCode'],
  };
  targetAddresses.add(addressItem);
}

// 将targetAddresses作为请求体发送到目标接口

额外建议

  • 空值处理:如果JSON字段可能为null,建议添加空值兜底,比如addr['id'] ?? '',避免后续序列化报错。
  • 类型安全:推荐使用json_serializable生成实体类,将JSON解析为强类型对象,彻底避免动态类型带来的类型错误。比如创建Address类,通过注解自动生成解析代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:20:55