我正在尝试构建一个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");
}
答案 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