Flutter:如何从API响应中提取prefix_number存入列表
解决方法
你的代码存在两个核心问题:
- API返回的是数组(List),但你错误地将其解析成了
Map类型 - 缺少提取
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
相关产品推荐
相关产品推荐

