Dart Language: печать отчетов

Я хотел бы знать, как печатать отчеты на Dart.

По сути, это поток действий:

  1. Пользователь нажимает кнопку "Сообщить".
  2. Новое окно браузера создано.
  3. Связанные данные размещаются в новом окне.

Конечно, если для этого есть какой-либо API, я бы его использовал.

До сих пор я пытался создать новое окно, добавить в него прослушиватель onMessage и вызвать postMessage в главном классе для отправки данных. Однако это не сработало. Сообщение никогда не попадает на другую сторону (главное> новое окно браузера).

Main Dart Class

var reportWindow;
void createReportWindow() {
    reportWindow = window.open("report.html", "");
}
void sendMessage(String message) {
    reportWindow.postMessage(message, "*");
}

Report Dart Class (связан с report.html)

void startListening() {
    window.onMessage.listen((e) {
        print(e.data.toString());
    });
}

1 ответ

Обновить

Начать отправку из окна отчета на window.opener.postMessage(...) а затем ответить на (message.source as WindowBase).postMessage(...), Вероятно, это ошибка с возвращаемым значением window.open (см. http://dartbug.com/20216 для более подробной информации).

оригинал

Код в этом модульном тесте должен показать вам, как это можно сделать https://github.com/dart-lang/core-elements/blob/master/test/core_media_query_test.dart.

Я открываю окно с нового URL-адреса, который загружает его содержимое, и сценарий Dart (конечно, также может быть скомпилирован в JavaScript) с сервера. Открытое окно связывается с главным окном sendMessage, Это работает в обоих направлениях.

По сути, второе окно - это второе приложение браузера Dart.

Возможно, это не совсем то, что вы искали, но ваше требование могло быть реализовано таким образом, я думаю.

В этой строке https://github.com/dart-lang/core-elements/blob/master/test/core_media_query_test.dart#L66 закомментированный код, вероятно, будет соответствовать вашим требованиям. Я создал обходной путь ниже, потому что код должен изменить размер второго окна из кода в главном окне, чтобы проверить <core-media-query> элемент (не работает также между прочим). Но я предполагаю, что вам просто нужно открыть окно, и закомментированный код должен делать то же самое.

Другие вопросы по тегам