Я разрабатываю приложение Flutter, в котором есть несколько вкладок, каждая из которых зависит от базы данных, которая загружается при первом запуске.Состояние хранится в ScopedModel.
На каждой вкладке у меня есть этот код:
@override
void initState() {
super.initState();
loadData();
}
void loadData() async {
await MyModel.of(context).scopedLoadData();
_onCall = MyModel.of(context).onCall;
setState(() {
});
}
И это фрагмент кода, который имеет значение для ScopedModel:
Future<Null> scopedLoadData() async {
if (_isLoading) return;
_isLoading = true;
(...)
_isLoading = false;
}
Если пользователь ждет на первой вкладке несколько секунд, все в порядке, так как база данных загружена.Однако, если пользователь переключает вкладки сразу после запуска приложения, метод scopedLoadData все еще выполняется, так что я получаю ошибку времени выполнения ( "Исключение необработанного: NoSuchMethodError: Вызван метод ancestorWidgetOfExactType)null. ").
Это исключение происходит из-за того, что scopedLoadData еще не завершен.Поэтому я ищу способ дождаться выполнения метода, который все еще выполняется.
Спасибо!