You need to enable JavaScript to run this app. Flutter使用EventChannel接收Android数据出现类型不匹配报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用EventChannel接收Android数据出现类型不匹配报错如何解决

问题根因

通过EventChannel从原生侧传递的复杂嵌套集合,Flutter侧不会自动递归解析泛型,所有层级的集合默认都是dynamic类型。你直接赋值时Dart的泛型校验不允许List<dynamic>直接当做List<Map<String, double>>使用,哪怕元素结构符合要求也会抛出类型不匹配异常。你之前用的cast类方法只会处理当前层级的类型,不会递归转换嵌套元素的泛型,因此不生效。

正确解决代码

你只需要对嵌套的每一层集合做显式类型转换即可:

List<dynamic> t = event;
// 逐层转换最后一个元素的泛型
List<Map<String, double>> targetItem = (t.last as List).map((mapItem) {
  return Map<String, double>.from(mapItem);
}).toList();
// 转换完成后再添加到目标列表
convertedList.add(targetItem);

如果你需要将整个返回的event数据完整转换成List<List<Map<String, double>>>类型,可以用如下批量转换逻辑:

List<List<Map<String, double>>> fullConvertedData = (event as List).map((listItem) {
  return (listItem as List).map((mapItem) {
    return Map<String, double>.from(mapItem);
  }).toList();
}).toList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 02:48:00