#flutter #dart
#flutter #dart
Вопрос:
Я пытаюсь вернуть список из будущего и передать этот список в ListView.builder, но каждому сообщению нужно ждать другого будущего, чтобы получить данные пользователя, создавшего сообщение. Сначала я попытался вернуть future builder в методе build, а внутри него вернуть ListView.builder, и для каждого сообщения я возвращаю второй future builder для получения пользовательских данных. Кажется, он работает первым, но второй конструктор будущего продолжает возвращать данные при прокрутке, и listview становится непригодным для использования.
это мой код:
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: FirestoreService().posts(),
builder: (context, posts) {
if (posts.connectionState == ConnectionState.done amp;amp; 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 amp;amp;
user.hasData) {
posts.data[index].user = user.data;
return postTile(
postObject: posts.data[index],
showUserInfo: true,
);
} else {
return Container();
}
});
});
} else {
return Container();
}
});
}
Есть идеи, как я могу получить список из двух фьючерсов и передать его непосредственно в сборку listview?
Комментарии:
1. Оберните оба фьючерса в
async
метод и просто вызовите его.2. Метод async сработал, но он снижает производительность приложения. Сначала я загрузил сообщения, чтобы у пользователя было что-то на экране, и внутри каждой плитки сообщений я получаю данные пользователя..
3. Как это повлияет на производительность приложения?
4. Страница сообщений будет находиться в состоянии загрузки в течение длительного периода времени, при этом сообщения не будут отображаться на экране, пока не будут загружены все сообщения и каждый пользователь post, в то время как во втором методе загружаются все сообщения, и пользователь может прокручивать и взаимодействовать с сообщениями, даже если данные пользователей все еще загружаются
5. Это не имеет ничего общего с производительностью и все, что связано с UX. И хотя это выглядит более отзывчивым, вы должны быть осторожны с действиями пользователей, если они пытаются что-то сделать с пользовательскими данными в сообщении до его загрузки.