У меня есть function
в моем initState
:
@override
void initState() {
_fetchListItems();
super.initState();
}
Это function
очень просто. У него есть две async
await
операции sqflite
, одна из которых ожидает завершения другой:
_fetchListItems() async {
wait() async {
number = await db.getNumber(userId); }
await wait();
List rawFavouriteList = await db.getList(number);
setState((){
rawFavouriteList.forEach((item){
_favouriteList.add(Model.map(item));
}});
}
Я должен ждать получения number
, только тогда я могу получить сериализованный List
, который затем десериализуется и заполняется, а затем добавляется к List
, который отображается в ListView
.
Проблема в том, что это не работает в initState
. Работает нормально, когда вызывается через onPressed()
кнопки, но не в initState
.
Примечания:
1) Ошибка не выдается
2) Я уже пробовал более консервативные альтернативы, используя await
для четного rawFavouriteList
через отдельную функцию, такую как wait()
, прежде чем использовать setState()
top, чтобы заполнить _favouriteList
, хотя он работает нормально вручную с помощью кнопок .
3) Все работает нормально, если я вручную ввожу значение number
во второй запрос к базе данных и просто удаляю первый запрос, т.е.
_fetchListItems() async {
List rawFavouriteList = await db.getList(42);
setState((){
rawFavouriteList.forEach((item){
_favouriteList.add(Model.map(item));
}});
}