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

开发安卓数据库连接APP遇Dart类型错误:Map<dynamic,dynamic>无法赋值给Map<String,dynamic>

解决Dart中Map<dynamic, dynamic>无法赋值给Map<String, dynamic>的类型错误

错误原因

你的fromMap方法要求传入Map<String, dynamic>类型的参数,但循环中声明的变量mp被Dart自动推断为Map<dynamic, dynamic>——虽然方法参数query的类型是List<Map<String, dynamic>>,但你写for(Map mp in query)时没有指定mp的具体类型,导致类型不匹配,触发了这个错误。

解决方案

方案一:给循环变量指定明确类型

修改循环语句,给mp指定和query元素一致的类型Map<String, dynamic>:

static List<Product> fromMapList(List<Map<String , dynamic>> query)
{
  List<Product> products = <Product>[];
  for(Map<String, dynamic> mp in query)
  {
    products.add(fromMap(mp));
  }
  return products;
}

方案二:使用集合推导式简化代码

可以用Dart的集合推导式替代循环,自动保留正确的类型,代码更简洁:

static List<Product> fromMapList(List<Map<String , dynamic>> query)
{
  return query.map((mp) => fromMap(mp)).toList();
}

额外说明

如果非要放宽类型限制,也可以修改fromMap方法的参数类型为Map<dynamic, dynamic>,但这会丢失Dart的类型安全校验,可能埋下后续的bug,不推荐这么做。

内容的提问来源于stack exchange,提问作者Dimuth De Zoysa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:05:39