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

Dart实现Map与List互转时map2段NoSuchMethodError错误求解

Dart Map与List互转错误排查

错误根源

  • 你定义的Person.PersonNameAge是静态方法,返回值为String类型,而非Person类实例,因此list1数组中存储的所有元素都是字符串,不是Person对象
  • 生成map2的代码段仍然按照元素为Person实例的逻辑调用element.name、element.age属性,String类没有对应实例getter,因此直接抛出异常

修复方案

如果要保持互转逻辑一致性,你可以修改PersonNameAge方法,直接返回Person实例:

// 修改前
// static String PersonNameAge(name, age) {
//   name = name;
//   age = age;
//   return ('{$name,$age}');
// }

// 修改后
static Person PersonNameAge(name, age) {
  // id字段可按需赋值,这里传null适配原有可空类型定义
  return Person(null, name, age);
}

修改后list1存储的就是Person实例,后续生成map2的逻辑就可以正常运行。

如果确实需要list1存储字符串,那生成map2的逻辑需要先解析字符串提取name和age,示例如下:

var map2 = {};
list1.forEach((element) {
  // 去掉首尾大括号后按逗号分割内容
  var parts = element.replaceAll(RegExp(r'[{}]'), '').split(',');
  map2[parts[0]] = int.parse(parts[1]);
});
print(map2);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:09:04