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被获取,然后我才能获取 serialized List,然后我反序列化并填充然后添加List到ListView.
问题是,这在initState. 通过按钮调用它时工作正常onPressed(),但在initState.
注意事项:
1)没有抛出错误
2)我已经尝试过更保守的替代方案await,即使rawFavouriteList通过单独的函数使用 for ,就像wait()在使用setState()top 填充之前一样_favouriteList,即使它通过按钮手动工作正常。
3)如果我在第二个数据库查询中手动输入number值并删除第一个查询,则一切正常,即
_fetchListItems() async {
List rawFavouriteList = await db.getList(42);
setState((){
rawFavouriteList.forEach((item){
_favouriteList.add(Model.map(item));
}});
}