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

Flutter报错:参数类型'String'无法赋值给'Iterable<Map<dynamic,dynamic>>'

错误解决:String 无法赋值给 Iterable<Map<dynamic, dynamic>>

错误信息

The argument type 'String' can't be assigned to the parameter type 'Iterable<Map<dynamic, dynamic>>'

问题代码

loadPreviousEvents() async {
    var url = 'http://xxxxxxxxxx/getEvents.php';
    var res = await http.get(Uri.parse(url));
    var response = res.body;
   var newMap = groupBy(response, (Map oj) => oj['date']);
}

问题原因

res.body 返回的是JSON格式的字符串,而 groupBy 函数要求第一个参数是 Iterable<Map<dynamic, dynamic>> 类型(即可迭代的Map集合),直接传入字符串会导致类型不匹配,触发报错。

解决方法

先将JSON字符串解析为 List<Map<dynamic, dynamic>> 类型,再传入 groupBy 函数:

import 'dart:convert'; // 必须导入JSON解析库

loadPreviousEvents() async {
    var url = 'http://xxxxxxxxxx/getEvents.php';
    var res = await http.get(Uri.parse(url));
    // 把JSON字符串解析为List<Map>结构
    List<Map<dynamic, dynamic>> responseData = jsonDecode(res.body);
    // 传入解析后的List执行分组操作
    var newMap = groupBy(responseData, (Map oj) => oj['date']);
}

注意:如果接口返回的JSON外层不是数组(比如是单个对象),需要根据实际返回结构调整解析逻辑,但获取事件列表的接口通常会返回数组格式的JSON。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:26:06