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

时间:2015-05-26 17:43:30

标签: dart dart-isolates

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

我知道我可以使用Isolate.spawnUri动态加载Dart脚本。但是,我只知道我可以从file:和http:URIs加载。这意味着我需要将我的脚本放在某处加载,这是我想避免的复杂功能。

1 个答案:

答案 0 :(得分:16)

在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必须为小写。