flutter-to-return列表中的嵌套期货
我试图从未来返回一个列表,并将此列表提供给ListView.builder,但每个帖子都需要等待另一个未来才能获取创建帖子的用户的数据。我首先尝试在build方法中返回一个future builder,然后在其中返回一个ListView.builder,对于每一篇文章,我都会返回第二个future builder来获取用户的数据。它似乎是第一个工作,但第二个未来构建器在滚动时不断返回数据,listview变得不可用 这是我的代码:flutter-to-return列表中的嵌套期货,flutter,dart,Flutter,Dart,我试图从未来返回一个列表,并将此列表提供给ListView.builder,但每个帖子都需要等待另一个未来才能获取创建帖子的用户的数据。我首先尝试在build方法中返回一个future builder,然后在其中返回一个ListView.builder,对于每一篇文章,我都会返回第二个future builder来获取用户的数据。它似乎是第一个工作,但第二个未来构建器在滚动时不断返回数据,listview变得不可用 这是我的代码: @override Widget build(BuildCo
@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构建吗?用
异步方法包装这两个未来,然后调用它。异步方法起作用,但它会影响应用程序的性能。取而代之的是,我先加载帖子,这样用户在屏幕上就有了一些东西,在每个帖子磁贴中,我得到了用户的数据。这将如何影响应用程序的性能?帖子页面将在很长一段时间内保持加载状态,屏幕上不会显示帖子,直到加载所有帖子和每个帖子用户,而在第二种方法中,所有帖子都会被加载,用户可以滚动并与帖子交互,即使用户数据仍在加载中,这与性能无关,也与用户体验无关。虽然它看起来更具响应性,但如果用户在帖子加载之前试图对帖子中的用户数据进行处理,则应该小心用户操作。