Dart代码报错:参数类型‘MapEntry<_, _> Function(dynamic)’无法赋值给指定参数类型
解决Dart Map.map方法的参数类型错误
错误原因
Dart中Map的map()方法要求传入的回调函数必须接收键(key)和值(value)两个参数,你只传了单个参数e,导致参数类型不匹配。此外代码还有两处语法/逻辑错误:
- 用
void声明变量xname是无效的,void是返回类型,不能用于变量声明 map()回调的逻辑无法正确生成新的键值对,需要返回MapEntry来构建新Map
修正后的代码
void main() { Map name = {"name": "islam", "age": 34, "price": 34}; var xname = name.map((key, value) { // 匹配name键且值为islam时,替换值为zoz if (key == "name" && value == "islam") { return MapEntry(key, "zoz"); } // 其他键值对保持原样 return MapEntry(key, value); }); print(xname); // 输出: {name: zoz, age: 34, price: 34} }
关键修正点
- 正确使用map回调:
map((key, value) {...})符合方法要求的MapEntry<dynamic, dynamic> Function(dynamic, dynamic)参数类型 - 返回MapEntry:每个回调必须返回
MapEntry实例,用来构建新的Map对象 - 修正变量声明:用
var或Map<String, dynamic>声明xname,替代错误的void类型
内容的提问来源于stack exchange,提问作者eslam ibrahim
相关产品推荐
相关产品推荐

