Использование Dart, Web_UI и Google Maps чуть более сложным способом

Я пытаюсь интегрировать библиотеку карт Google с приложением для дротиков, которое я пытался создать, которое также использует web_ui, и все, что я получаю, - это множество очень неприятных ошибок. Я загрузил примеры из примера dart google maps на github, и они отлично работают.

Однако, когда я пытаюсь собрать его воедино в более «настоящем» приложении, ничего не получается. Вот ошибки, которые я получаю:

Breaking on exception: ReferenceError: ReceivePortSync is not defined

Uncaught ReferenceError: ReceivePortSync is not defined
  ProxiedObjectTable (:54:21)
   (:195:28)
   (:567:3)
Breaking on exception: The null object does not have a method 'callSync'.

Exception: The null object does not have a method 'callSync'.

NoSuchMethodError : method not found: 'callSync'
Receiver: null
Arguments: [GrowableObjectArray len:0]
  Object.noSuchMethod (dart:core-patch/object_patch.dart:20:25)
  _enterScope (package:js/js.dart:756:35)
  scoped (package:js/js.dart:745:26)
  AlertDetailsComponent.renderMap (http://127.0.0.1:3030/Users/ao85407/Development/Dart/BDProjects/adminConsoleV2/web/out/AlertDetails.dart:381:14)
  AlertDetailsComponent.loadAlertDetailsData (http://127.0.0.1:3030/Users/ao85407/Development/Dart/BDProjects/adminConsoleV2/web/out/AlertDetails.dart:321:25)
  AlertsBodyComponent.viewAlertDetails (http://127.0.0.1:3030/Users/ao85407/Development/Dart/BDProjects/adminConsoleV2/web/out/AlertsBody.dart:232:36)
  AlertsBodyComponent.created_autogenerated.<anonymous closure>.<anonymous closure> (http://127.0.0.1:3030/Users/ao85407/Development/Dart/BDProjects/adminConsoleV2/web/out/AlertsBody.dart:146:60)
  Template.listen.<anonymous closure> (package:web_ui/templating.dart:426:53)
  _enterScope (package:js/js.dart:756:35)
  scoped (package:js/js.dart:745:26)
Exception: The null object does not have a method 'callSync'.

NoSuchMethodError : method not found: 'callSync'
Receiver: null
Arguments: [GrowableObjectArray len:0]
  Object.noSuchMethod (dart:core-patch/object_patch.dart:20:25)
  _enterScope (package:js/js.dart:756:35)
  scoped (package:js/js.dart:745:26)
  AlertDetailsComponent.renderMap (http://127.0.0.1:3030/Users/ao85407/Development/Dart/BDProjects/adminConsoleV2/web/out/AlertDetails.dart:381:14)
  AlertDetailsComponent.loadAlertDetailsData (http://127.0.0.1:3030/Users/ao85407/Development/Dart/BDProjects/adminConsoleV2/web/out/AlertDetails.dart:321:25)
  AlertsBodyComponent.viewAlertDetails (http://127.0.0.1:3030/Users/ao85407/Development/Dart/BDProjects/adminConsoleV2/web/out/AlertsBody.dart:232:36)
  AlertsBodyComponent.created_autogenerated.<anonymous closure>.<anonymous closure> (http://127.0.0.1:3030/Users/ao85407/Development/Dart/BDProjects/adminConsoleV2/web/out/AlertsBody.dart:146:60)
  Template.listen.<anonymous closure> (package:web_ui/templating.dart:426:53)
  _enterScope (package:js/js.dart:756:35)
  scoped (package:js/js.dart:745:26)
Failed to load resource: the server responded with a status of 404 (Not Found)
  http://127.0.0.1:3030/Users/ao85407/Development/Dart/BDProjects/adminConsoleV2/web/out/js/jquery.js
Failed to load resource: the server responded with a status of 404 (Not Found)
  http://127.0.0.1:3030/Users/ao85407/Development/Dart/BDProjects/adminConsoleV2/web/out/js/bootstrap.js

Что происходит в коде, так это то, что когда компонент визуализируется, я получаю дескриптор пользовательского объекта «Предупреждение» и использую его для построения карты с помощью этой функции:

  Object renderMap(Alert alert)
  {
    final lat = double.parse(alert.latitude);
    final lng = double.parse(alert.longitude);

    final mapOptions = new MapOptions()
              ..zoom = 14
              ..center = new LatLng(lat, lng)
              ..mapTypeId = MapTypeId.ROADMAP;

    final map = new GMap(query("#map-canvas"), mapOptions);
    js.retain(map);

    //clever troubleshooting/debugging methods
    map.onZoomChanged.listen((ignored)
        {
          print ('zoom: ${map.zoom}');
        });
    return map;
  }

Сбой происходит, когда я пытаюсь создать MapOptions, и ничего из того, что я пробовал, не работает. Я предполагаю, что это связано с жизненным циклом страницы и с загрузкой библиотек, поскольку я нахожусь на расстоянии нескольких страниц от основного метода моего файла дротика приложения.

Любые предложения были бы замечательными!

Спасибо!


person Aaron    schedule 05.09.2013    source источник


Ответы (1)


Вы должны использовать следующий Js-скрипт на своей странице, чтобы использовать js-interop :

<script src="packages/browser/interop.js"></script>

См. ВАЖНОЕ ИЗМЕНЕНИЕ: для js-interop потребуется дополнительный скрипт. в html.

person Alexandre Ardhuin    schedule 05.09.2013
comment
К сожалению, я уже включил этот скрипт. Когда страница загружается, в коде дротика возникает точка останова, говорящая: Прерывание при исключении: ReferenceError: ReceivePortSync не определен, и редактор пытается загрузить исходный код в ProxiedObjectTable, нажав «Продолжить» в отладчике, редактор попытается загрузить Источник Object.noSuchMethod(). - person Aaron; 06.09.2013