4

我正在尝试构建一个 Dart 应用程序。

这是我想要的过程。

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

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

关于这个过程的可能性的任何想法?

谢谢你。编辑:

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

测试.dart

library test;

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

1 回答 1

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 - Dart 中的代码拆分
- https://code.google.com/p/dart/issues/ detail?id=3940
- https://code.google.com/p/dart/issues/detail?id=9483

更新

我试过了,它在 Chrome 中运行(而不是在 Dartium 中),只是做了一些小改动

测试.dart

library some_lib_name; // <== was missing

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

索引.dart

const lazy = const DeferredLibrary('some_lib_name'); // use the library name not the file name
于 2014-07-18T15:02:47.853 回答