我正在尝试学习来自服务器端Java世界的客户端Dart,而且我在将数组从现有的JavaScript库转换为Dart列表时遇到了困难。
我试图通过构建Javascript示例来学习使用谷歌地图。在谷歌的地图API文档中,DirectionsLeg对象的step属性返回。
数组的DirectionsSteps,每个数组都包含有关此腿中各个步骤的信息。
如何将此var转换为Dart列表?我尝试了以下几点:
final List<maps.DirectionsStep> steps = List.from(directionsLeg.steps);但省道编辑告诉我cannot resolve method 'from' in class 'List'。我的进口产品是:
import 'dart:html';
import 'dart:core';
import 'package:js/js.dart' as js;我做错了什么?这是可能的还是我必须接受使用var
发布于 2012-11-28 07:18:41
在返回js js-互操作时,目前还没有内置的方法可以使用Dart List。
directionsLeg.steps返回像js Array这样的句柄的js.Proxy。您可以这样迭代它:
final steps = directionsLeg.steps;
for (var i = 0; i < steps.length ; i++) {
final step = steps[i];
// do the job with step
}如果您真的想使用Dart List,可以将js Array的js.Proxy转换为Dart List,如下所示:
List<js.Proxy> convertToList(js.Proxy arrayProxy){
final result = new List<js.Proxy>();
for (var i = 0; i < arrayProxy.length ; i++) {
result.add(arrayProxy[i]);
}
return result;
}关于你的代码:
List<maps.DirectionsStep>:maps.DirectionsStep不是一种类型,它是js google.maps.DirectionsStep上的js.Proxy (而且它实际上并不存在--只有容器js对象{})。List.from(...):在这里,您尝试在Dart List对象上调用一个名为from的静态方法。所以你才会犯错。List.from实际上是一个工厂命名构造函数,必须与new关键字( new List.from(otherIterable) )一起使用。https://stackoverflow.com/questions/13598965
复制相似问题