包装 JavaScript classesnamespaces

假设我们想要包装 Google Maps JavaScript API google.maps

@JS('google.maps')
library maps;

import "package:js/js.dart";

@JS()
class Map {
  external Map(Location location);
  external Location getLocation();
}

我们现在有了 Map Dart 类,它对应于 JavaScript google.maps.Map 类。

在 Dart 中运行 new Map(someLocation) 将在 JavaScript 中调用 new google.maps.Map(location)

请注意,你不必将 Dart 类命名为与 JavaScript 类相同:

@JS("LatLng")
class Location {
  external Location(num lat, num lng);
}

Location Dart 类对应于 google.maps.LatLng 类。

不鼓励使用不一致的名称,因为它们会造成混淆。