firebase - 如何以相反的顺序获取消息序列
问题描述
在此处输入图像描述我正在尝试制作一个聊天应用程序,并且根据视频讲座,我已将反向添加到我获取快照的列表中,但它没有在应用程序中反映出来。我附上代码。请提供帮助,如果需要,我将非常乐意提供任何澄清。
StreamBuilder<QuerySnapshot>(
stream: _firestore.collection('messages').snapshots(),
builder: (context,snapshot){
if(snapshot.hasData) {
final messages = snapshot.data.docs.reversed;
List<MessageBubble> messageBubbles=[];
for(var message in messages)
{
final messageText=message.get('text');
final messageSender=message.get('sender');
final currentUser= loggedInUser.email;
final messageBubble=
MessageBubble(sender:messageSender,
text:messageText,
isMe:currentUser==messageSender);
messageBubbles.add(messageBubble);
}
return Expanded(
flex:8,
child: ListView(
reverse:true,
padding:EdgeInsets.symmetric(horizontal:10,vertical:20),
children: messageBubbles
),
);
}
else {
return Column(
children: []
);
}
},
);
这张图片显示我发送的最后一条消息是“你好,我是第一次发短信”,它既不在先前消息的顶部也不在底部,而是随机介于两者之间。我希望它始终位于底部,并且还希望屏幕默认始终保持在底部,直到用户向上滚动为止。
图片在哪里收藏有快照在此处输入图片描述t。
解决方案
您正在两个地方颠倒列表:
直接上榜。
final messages = snapshot.data.docs.reversed;
在
ListView
.ListView( reverse:true, padding:EdgeInsets.symmetric(horizontal:10,vertical:20), children: messageBubbles ),
您可以摆脱其中的一个,ListView
只需反转列表本身。
推荐阅读
- microsoft-graph-api - 通过路径从共享文件夹中获取 DriveItem 资源
- ios - 在 Realm 中存储字符串数组
- linux - 在电子邮件正文中发送带有文本而不是作为附件的电子邮件
- python - 多线程中的 Python 锁和 GIL
- javascript - jQuery不要等到滚动停止运行代码?
- java - 仅使用谓词在 Java 中制作 Set 数据结构,不使用集合或数组。如何实现迭代器相关的功能?
- javascript - Javascript替换左括号和右括号
- java - ParquetIO Writer 错误使用 apache 梁
- css - SVG 变换中的 transform3d 等价物
- ios - iOS:如何显示“打开方式”应用切换器(操作系统选择器表)。没有文件,只有一个链接。