Как я могу динамически создать скрипт 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
Должен быть в нижнем регистре.