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

Flutter:如何从API响应中提取prefix_number存入列表

解决方法

你的代码存在两个核心问题:

  1. API返回的是数组(List),但你错误地将其解析成了Map类型
  2. 缺少提取prefix_number并添加到目标列表的逻辑

修正后的完整代码

List<String> prefixList = [];

Future getNumberPrefixes() async {
  var url = Uri.parse(AppApis.getPrefixesApi);
  final response = await http.get(url);
  print(response.statusCode);
  if (response.statusCode == 200) {
    // 解析为List类型,匹配API返回的数组格式
    List<dynamic> data = jsonDecode(response.body);
    // 清空列表,避免重复请求时数据累加
    prefixList.clear();
    // 遍历数组提取字段并转换类型存入列表
    for (var item in data) {
      int number = item['prefix_number'];
      prefixList.add(number.toString());
    }
    print(prefixList); // 可打印验证结果
    notifyListeners(); // 通知UI更新
  } else {
    print("Failed to fetch prefixes");
  }
}

关键修改说明

  • 解析类型修正:API响应是[{...}, {...}]格式的数组,必须用List<dynamic>接收,不能用Map
  • 遍历提取逻辑:循环遍历数组中的每个对象,取出prefix_number字段(数字类型),通过toString()转为String后添加到prefixList
  • 清空列表:每次请求前清空列表,防止重复调用API时列表数据重复累加

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:30:51