Dart Language: как преобразовать строку в передаваемый (ByteBuffer)
Я буду использовать window.postMessage("", "*", [transferableData]) для отправки данных между двумя окнами браузера. Однако я не нашел прямого ответа на вопрос о том, как преобразовать типы в переводимые.
Итак, для того, чтобы я начал изучать это, было бы здорово узнать, как преобразовать простую строку в переносимый (ByteBuffer) и прочитать ее на другой стороне (стороне, которая получает сообщение с данными). Это поможет мне решить мою проблему и узнать об этой концепции.
ВАЖНОЕ ОБНОВЛЕНИЕ:
Этот вопрос привел меня сюда: Дарт Язык: печать отчетов
Переносимые объекты еще не реализованы на Dart VM ( http://dartbug.com/4149). Это означает, что если вы запускаете ваше приложение через Dartium (Dart VM), другое окно будет получать и обрабатывать первый аргумент postMessage, а не Transferable Object. Однако JavaScript выполняет свою работу: объект переносится, а исходный массив очищается.
1 ответ
import 'dart:convert';
var list = Utf8.encode('xxx');
var data = list is Uint8List ? list.buffer : new Uint8List.fromList(list).buffer;
отправить данные, используя window.PostMessage
использование
window.postMessage({'data': data}, '*', [data]);
и читать его на стороне получателя, как
var string = Utf8.decode(message.data['data']);
См. Также http://dartbug.com/19968 для получения статуса переводных.
Насколько мне известно, недавний релиз канала Dart Dev уже поставляется с Dartium 38.xxx.
Вот небольшой тестовый пример для переводчиков https://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/tests/html/transferables_test.dart