【问题标题】:How can I dynamically construct a Dart script for spawnUri?如何为 spawnUri 动态构建 Dart 脚本?
【发布时间】:2015-05-26 17:43:30
【问题描述】:

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

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

【问题讨论】:

    标签: dart dart-isolates


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-12-04
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-03
      • 2016-04-19
      • 2021-06-30
      相关资源
      最近更新 更多