我想动态构造和加载DART脚本.我该怎么做呢?
我知道我可以使用隔离.用于动态加载Dart脚本.然而,我只知道我可以从file:和http:uri加载.这意味着我需要把我的脚本放在某个地方加载,这是我希望避免的复杂情况.
我想动态构造和加载DART脚本.我该怎么做呢?
我知道我可以使用隔离.用于动态加载Dart脚本.然而,我只知道我可以从file:和http:uri加载.这意味着我需要把我的脚本放在某个地方加载,这是我希望避免的复杂情况.
在DART SDK 1.10中,您现在可以从字符串创建data:URI,并将该data: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
必须是小写.