Поскольку flutter вызывает метод сборки много раз в разных условиях, чтобы избежать многократного получения данных, я инициализирую данные в 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) или inheritFromElement () было вызвано до завершения _TestState.initState ().
Могу ли я знать, что я здесь что-то не так делаю?
Когда я добавляю следующую строку к реализации getData (context)
await Future.delayed(new Duration(milliseconds: 300));
, исключение не происходит.
Спасибо!