作者:mobiledu2502912907 | 来源:互联网 | 2022-12-02 11:01
由于flutter在不同的条件下多次调用build方法,因此为了避免多次获取数据,我在initState中初始化了数据。
我想在数据准备好后重新构建窗口小部件。
这是我的代码:
class Test extends StatefulWidget {
@override
_TestState createState() => new _TestState();
}
class _TestState extends State {
Data data;
bool dataReady = false;
@override
void initState() {
super.initState();
getData(context).then((Data data) async {
setState(() {
dataReady= true;
});
});
}
@override
Widget build(BuildContext context) {
if (dataReady) {
return createMainContent(context);
} else {
return new Container();
}
}
}
但是,它导致以下异常:在_TestState.initState()完成之前调用了InheritFromWidgetOfExactType(_InheritedProvider)或InheritFromElement()。
我可以知道我在这里做错什么吗?
当我将以下行添加到getData(context)的实现中时
await Future.delayed(new Duration(milliseconds: 300));
,不会发生例外。
谢谢!