我是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]));
}
最佳答案
因为您在dynamic
中使用了map
,而不是BoxType
-该错误显示'List<dynamic>' is not a subtype of 'List<BoxType>'
,所以只需解决此问题便可以:
List<BoxType> boxTypes = data["boxTypes"].map((BoxType boxType) => BoxType.fromDynamic(boxType)).toList();
关于javascript - Dart中的javascript “map”等价是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55758676/