我正在关注一个带有flutter和firebase firestore的聊天应用程序的教程。在该应用程序中,当用户向其他人发送短信时,发件人直到在Firestore中对其进行更新后才对发件人可见,然后新数据就会显示在消息列表中。我想是否可以将带有时钟图像的新发送消息添加到消息列表中,以指示它将在数据库中更新,然后在数据库中对其进行更新之后,应将本地添加的消息替换为消息列表中Firestore中的数据。 这是按下按钮发送消息的片段...
void onSendMessage(String content, int type) {
// type: 0 = text, 1 = image, 2 = sticker
if (content.trim() != '') {
textEditingController.clear();
var documentReference = Firestore.instance
.collection('messages')
.document(groupChatId)
.collection('message')
.document(DateTime.now().millisecondsSinceEpoch.toString());
Firestore.instance.runTransaction((transaction) async {
await transaction.set(
documentReference,
{
'idFrom': id,
'idTo': peerId,
'timestamp': DateTime.now().millisecondsSinceEpoch.toString(),
'content': content,
'type': type
},
);
});
listScrollController.animateTo(0.0,
duration: Duration(milliseconds: 300), curve: Curves.easeOut);
} else {
Fluttertoast.showToast(msg: 'Nothing to send');
}
}
的链接
答案 0 :(得分:0)
这应该不难实现。 当前,任何新的聊天消息在提交后都会发送到Firestore数据库。 您只需要扩展执行此操作的onSubmit函数(在代码示例中可能具有另一个名称),即可将消息临时添加到本地消息列表中。
从数据库收到更新后,您只需从列表中删除临时消息,因为它将被数据库中的内容替换。在进度消息中添加进度指示符,就可以了。
如果您需要更详细的答案,请在您的问题中添加一些代码(理想情况下,还应包含原始教程的链接。)注意:当提供指向外部页面的链接时,请确保该问题仍然完整。死了。)