11

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

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

4

1 回答 1

16

在 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);
}

注意数据:URI 必须是以下形式:

data:application/dart;charset=utf-8,DATA

DATAURI 百分比编码在哪里。

另外,utf-8必须小写。

于 2015-05-26T17:43:30.003 回答