Как я могу динамически создать скрипт Dart для spawnUri?

Я хочу динамически создать и загрузить скрипт Dart. Как мне это сделать?

Я знаю, что могу использовать Isolate.spawnUri для динамической загрузки скрипта Dart. Однако я только знаю, что могу загружать из файлов: и http: URI. Это означает, что мне нужно поместить свой скрипт куда-нибудь для загрузки, что является сложностью, которую я хотел бы избежать.

1 ответ

Решение

В Dart SDK 1.10 теперь вы можете создать URI data: из строки и передать эти данные: URI в spawnUri.

Это означает, что вы можете динамически создавать строку во время выполнения, кодировать ее и динамически загружать / запускать ее. Ухоженная!

Вот пример.

Ваш дартс скрипт:

import 'dart:isolate';

main() {
  var loadMe = '''

main() {
  print('from isolate');
}

''';

  var uri = Uri.parse('data:application/dart;charset=utf-8,${Uri.encodeComponent(loadMe)}');
  print('loading $uri');

  Isolate.spawnUri(uri, null, null);
}

Обратите внимание на данные: URI должен иметь форму:

data:application/dart;charset=utf-8,DATA

где DATA кодируется процент URI.

Также, utf-8 Должен быть в нижнем регистре.

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