如何在一个HTML中执行两个dart代码

时间:2014-07-18 14:22:21

标签: dart dart-async

我正在尝试构建一个Dart App。

这是我想要的过程。

在第一次连接时,用户有一个加载页面。在这期间,他有一个动画,在后台,下载了大dart文件(来自dart的dart2js)。

一旦结束,下载的脚本就会执行,应用就可以开始工作了。

有关此过程可能性的任何想法吗?

谢谢。 编辑:

import "dart:async";
@lazy
import 'test.dart' as foo;

const lazy = const DeferredLibrary('test');

void main() {
  foo.init(); // Supposed to throw a NoSuchMethodError.
  lazy.load().then(onFooLoaded);
}

void onFooLoaded(_) {
  foo.init();
}

test.dart

library test;

void init() {
  print("coucou");
}

1 个答案:

答案 0 :(得分:3)

它被称为延迟加载。基本上这个功能已经存在了一段时间,但我还没有自己使用它。由于一些未解决的问题,这个功能似乎用途有限。我看到一个通知,修复了几个错误或丢失的功能,但我无法告诉当前状态。

有关详细信息,请参阅
- https://api.dartlang.org/apidocs/channels/be/dartdoc-viewer/dart:async.DeferredLibrary
- http://blog.sethladd.com/2013/04/lazy-load-libraries-in-dart.html
- https://code.google.com/p/dart/issues/detail?id=10171 - Code Splitting in Dart
- https://code.google.com/p/dart/issues/detail?id=3940
- https://code.google.com/p/dart/issues/detail?id=9483

更新

我尝试了它,它可以在Chrome中使用(不是在Dartium中),只需进行一些小改动

test.dart

library some_lib_name; // <== was missing

void init() {
  print("coucou");
}

index.dart

const lazy = const DeferredLibrary('some_lib_name'); // use the library name not the file name