0

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,然后我反序列化并填充然后添加ListListView.

问题是,这在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));
           }}); 
  }
4

0 回答 0