如何为spawnUri动态构造Dart脚本?

如何为spawnUri动态构造Dart脚本?,dart,dart-isolates,Dart,Dart Isolates,我想动态构造和加载Dart脚本。我该怎么做 我知道我可以使用Isolate.spawnUri动态加载Dart脚本。然而,我只知道我可以从file:和http:uri加载。这意味着我需要将脚本放在某个要加载的地方,这是我希望避免的复杂情况。在Dart SDK 1.10中,您现在可以从字符串创建data:URI,并将data:URI传递给spawnUri 这意味着您可以在运行时动态构造字符串,对其进行编码,并动态加载/运行它。干净利落 这里有一个例子 您的省道脚本: import 'dart:iso

我想动态构造和加载Dart脚本。我该怎么做


我知道我可以使用Isolate.spawnUri动态加载Dart脚本。然而,我只知道我可以从file:和http:uri加载。这意味着我需要将脚本放在某个要加载的地方,这是我希望避免的复杂情况。

在Dart SDK 1.10中,您现在可以从字符串创建data: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);
}
请注意,data:URI的格式必须为:

data:application/dart;charset=utf-8,DATA
其中,
数据
是URI百分比编码

而且,
utf-8
必须是小写