如何为 spawnUri 动态构建 Dart 脚本?
How can I dynamically construct a Dart script for spawnUri?
我想动态构建和加载 Dart 脚本。我该怎么做?
我知道我可以使用 Isolate.spawnUri 来动态加载 Dart 脚本。但是,我只知道我可以从 file: 和 http: URI 加载。这意味着我需要将我的脚本放在某个地方以便加载,这是我想避免的复杂情况。
在 Dart SDK 1.10 中,您现在可以从字符串创建数据:URI,并将该数据:URI 传递给 spawnUri。
这意味着您可以在运行时动态构造一个字符串,对其进行编码,然后动态 load/run 它。整洁!
这是一个例子。
你的 Dart 脚本:
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
必须小写。
我想动态构建和加载 Dart 脚本。我该怎么做?
我知道我可以使用 Isolate.spawnUri 来动态加载 Dart 脚本。但是,我只知道我可以从 file: 和 http: URI 加载。这意味着我需要将我的脚本放在某个地方以便加载,这是我想避免的复杂情况。
在 Dart SDK 1.10 中,您现在可以从字符串创建数据:URI,并将该数据:URI 传递给 spawnUri。
这意味着您可以在运行时动态构造一个字符串,对其进行编码,然后动态 load/run 它。整洁!
这是一个例子。
你的 Dart 脚本:
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
必须小写。