我想从延迟加载的包中测试函数,小部件等。我使用Dart的延迟导入main.dart.js文件。
例如:import 'package:spitch/app/splashscreen.dart' deferred as splashscreen;
但是因为包等还没有准备好,我在测试中得到以下错误:"以下_ Deferred not Loaded error被抛出构建…">
我在dart和flutter文档中没有找到关于如何测试延迟加载数据的任何内容。
确保在呈现小部件之前在延迟对象中调用.loadLibrary();
。
不同的库/page应该异步调用,所以把它包装在未来的构建器中。
好例子:
FutureBuilder(
future: home.loadLibrary(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.done) return home.HomePage();
return Material(child: Center(child: Text('Loading...')));
},
)
void get()async{
await home.loadLibrary().then((value){
// Your navigation code
push(home.HomePage(), context);
});
}
坏例子:
return FutureBuilder(
future: home.loadLibrary(),
builder: (context, snapShot) {
return home.HomeBasement();
});
return FutureBuilder<void>(
future: signIn.loadLibrary(),
builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.hasData) {
return signIn.SignInPage();
} else {
return const Txt(text: 'Loading...');
}
});
如果您正在使用任何检查,请确保您没有设置任何对象类型,如void, dynamic, widget?如果指定了类型,则会抛出错误。
注意:修改后的代码必须在隐身选项卡或缓存中打开如果以前的应用程序数据托管在页面上,这将只返回旧的Error。所以最好选择隐身