首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Javascript数组创建Dart列表

从Javascript数组创建Dart列表
EN

Stack Overflow用户
提问于 2012-11-28 06:16:31
回答 1查看 1.8K关注 0票数 6

我正在尝试学习来自服务器端Java世界的客户端Dart,而且我在将数组从现有的JavaScript库转换为Dart列表时遇到了困难。

我试图通过构建Javascript示例来学习使用谷歌地图。在谷歌的地图API文档中,DirectionsLeg对象的step属性返回。

数组的DirectionsSteps,每个数组都包含有关此腿中各个步骤的信息。

如何将此var转换为Dart列表?我尝试了以下几点:

代码语言:javascript
复制
final List<maps.DirectionsStep> steps = List.from(directionsLeg.steps);

但省道编辑告诉我cannot resolve method 'from' in class 'List'。我的进口产品是:

代码语言:javascript
复制
import 'dart:html';
import 'dart:core';
import 'package:js/js.dart' as js;

我做错了什么?这是可能的还是我必须接受使用var

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-28 07:18:41

在返回js js-互操作时,目前还没有内置的方法可以使用Dart List

directionsLeg.steps返回像js Array这样的句柄的js.Proxy。您可以这样迭代它:

代码语言:javascript
复制
final steps = directionsLeg.steps;
for (var i = 0; i < steps.length ; i++) {
  final step = steps[i];
  // do the job with step
}

如果您真的想使用Dart List,可以将js Arrayjs.Proxy转换为Dart List,如下所示:

代码语言:javascript
复制
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) )一起使用。
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13598965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档