由于Ffltter在不同的条件下多次调用build方法,为了避免多次获取数据,我将数据初始化为initState
.
我想在数据准备好后重新构建小部件.
以下是我的代码:
class Test extends StatefulWidget {
@override
_TestState createState() => new _TestState();
}
class _TestState extends State<Test> {
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();
}
}
}
但是,它会导致以下例外情况:
inheritFromWidgetOfExactType(_InheritedProvider) or inheritFromElement() was called before _TestState.initState() completed.
我可以知道我做错了什么吗?
当我在getData(上下文)的实现中添加以下行时
await Future.delayed(new Duration(milliseconds: 300));
例外情况不会发生.