嵌套期货扑朔迷离地返回清单

时间:2020-10-06 20:55:22

标签: flutter dart

我试图从将来返回一个列表,并将该列表提供给ListView.builder,但是每个帖子都需要等待另一个将来才能获取创建该帖子的用户的数据。我首先尝试在build方法中返回一个将来的构建器,在其中返回一个ListView.builder,对于每个Post我都返回一个第二个将来的构建器以获取用户的数据。它似乎首先起作用,但是第二个将来的构建器在滚动时将继续返回数据,并且列表视图变得不可用。

这是我的代码:

@override
  Widget build(BuildContext context) {
    return FutureBuilder(
        future: FirestoreService().posts(),
        builder: (context, posts) {
          if (posts.connectionState == ConnectionState.done && posts.hasData) {
            return ListView.builder(
                itemCount: posts.data.length,
                itemBuilder: (cobtext, index) {
                  return FutureBuilder(
                      future: FirestoreService()
                          .getUserById(posts.data[index].postedBy),
                      builder: (context, user) {
                        if (user.connectionState == ConnectionState.done &&
                            user.hasData) {
                          posts.data[index].user = user.data;
                          return postTile(
                            postObject: posts.data[index],
                            showUserInfo: true,
                          );
                        } else {
                          return Container();
                        }
                      });
                });
          } else {
            return Container();
          }
        });
}

有什么主意我可以从两个期货中获取列表并将其直接提供给listview版本吗?

0 个答案:

没有答案