【发布时间】:2019-04-19 08:10:41
【问题描述】:
我是 Dart 新手,我注意到 map 方法的工作方式与 Javascript 不同。
我正在尝试将动态列表转换为对象列表。
在 Javascript 中,这可以工作:
List<BoxType> boxTypes = data["boxTypes"].map((dynamic boxType) => BoxType.fromDynamic(boxType));
但是在 Dart 中,我得到了这个错误:
Exception has occurred.
_TypeError (type 'MappedListIterable<dynamic, dynamic>' is not a subtype of type 'List<BoxType>')
我看到我可以像这样在最后做一个.toList():
List<BoxType> boxTypes = data["boxTypes"].map((dynamic boxType) => BoxType.fromDynamic(boxType)).toList();
但它会产生这个错误:
Exception has occurred.
_TypeError (type 'List<dynamic>' is not a subtype of type 'List<BoxType>')
那么,我应该使用什么来代替 map ?
编辑:现在,这就是我正在做的,它有点难看,但效果很好
for (var i = 0; i < data["boxTypes"].length; i++) {
boxTypes.add(BoxType.fromDynamic(data["boxTypes"][i]));
}
【问题讨论】:
-
难道不是因为... .map((dynamic boxType) =>... 不应该是BoxType boxType 吗?
-
我从一个动态列表映射,这就是为什么参数是动态的。我返回一个
BoxType,所以我不明白这里的问题 -
如果你没有像
data["boxTypes"].map((boxType) => BoxType.fromDynamic(boxType)).toList();那样给出地图参数的类型,你会得到同样的错误吗? -
我刚试过,它返回同样的错误:/
标签: javascript dart