我想动态构造和加载Dart脚本。我该怎么做呢?
我知道我可以使用Isolate.spawnUri动态加载Dart脚本。但是,我只知道我可以从file:和http:URIs加载。这意味着我需要将我的脚本放在要加载的地方,这是我想避免的复杂问题。
我想动态构造和加载Dart脚本。我该怎么做呢?
我知道我可以使用Isolate.spawnUri动态加载Dart脚本。但是,我只知道我可以从file:和http:URIs加载。这意味着我需要将我的脚本放在要加载的地方,这是我想避免的复杂问题。
在Dart SDK 1.10中,您现在可以从String创建数据:URI,并将该数据:URI传递给spawnUri。
这意味着您可以在运行时动态构造字符串,对其进行编码,并动态加载/运行它。整齐!
这是一个例子。
你的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
一定是小写的。