我想动态构造和加载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必须是小写.

Dart相关问答推荐

?? ("if null") 运算符类型解析问题

Flutter drawArc() 方法绘制完整的圆而不仅仅是圆弧

在 Dart 中定义一个接受参数的 getter

StreamBuilder 会在无状态小部件中自动关闭流吗?

结合freezed和hive

从列表中删除项目后更新 UI

为什么 Dart 内置的 List 接口可以实例化?

摆动中的可滚动导轨

如何在 Dart 中获取数字的长度?

给 initState 内部的变量赋值或不在 Flutter StatefulWidget 中赋值有什么区别?

Flutter 中 ChangeNotifier 的构建器小部件

如何在没有脚手架的情况下显示snackBar

如何左对齐 Flutter 中的 OutlineButton 图标

Flutter – 连续两个文本,左边一个溢出

为什么 Angular 在组件名称中不需要破折号

如何在 Dart 2 中clone复杂对象

如何提高数据与二进制数据转换的 Dart 性能?

Dart MD5 字符串

Dart null / false / empty checking:如何写这个更短?

在 Dart 中是否有一种将 int 转换为 double 的快速方法?