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));
}});
}