gpt4 book ai didi

flutter - 我正在练习一个消息应用程序。我把它存放在壁炉

转载 作者:行者123 更新时间:2023-12-03 04:38:25 26 4
gpt4 key购买 nike

我正在开发一个Flutter应用程序,并将文本内部消息存储在FIRESTORE中。但是这里的问题是,当我键入一条消息并按onTap时,它将消息存储在Firestore中,但是streambuilder不会按时间顺序更新文本。这怎么办?
这是消息更新

 Expanded(
child: Container(
child: Column(
children: [
MessageStream(),
],
),
),
),
onTap函数在Firestore中添加文本
GestureDetector(
onTap: () {
_messageTextController.clear();
if (messageTyped.trim().isNotEmpty) {
_firestore.collection('messages').add({
'Text': messageTyped,
'Sender': loggedInUser.email,
});
}
},
child: Container(
margin: EdgeInsets.only(
left: 2.2 * SizeConfig.widthMultiplier), //8
width: 13.88 * SizeConfig.widthMultiplier,
height: 7.44 * SizeConfig.heightMultiplier,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.lightBlueAccent,
),
child: Icon(
Icons.send,
color: Colors.white,
),
),
),
MessageStream STL小部件
class MessageStream extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: _firestore.collection('messages').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Center(
child: CircularProgressIndicator(
backgroundColor: Colors.lightBlueAccent,
),
);
}
final messages = snapshot.data.docs.reversed;
List<MessageBubble> messageBubbles = [];
for (var message in messages) {
final messageSender = message.data()['Sender'];
final messageText = message.data()['Text'];
final currentUser = loggedInUser.email;

final messageBubble = MessageBubble(
text: messageText,
sender: messageSender,
isMe: currentUser == messageSender,
);
messageBubbles.add(messageBubble);
}
return Expanded(
child: ListView(
reverse: true,
padding: EdgeInsets.all(10.0),
children: messageBubbles,
),
);
},
);
}
}

最佳答案

保存消息时添加dateCreated字段:

_firestore.collection('messages').add({
'Text': messageTyped,
'Sender': loggedInUser.email,
'dateCreated': FieldValue.serverTimestamp(),
});
然后使用 dateCreated对流结果进行排序:
StreamBuilder<QuerySnapshot>(
stream: _firestore.collection('messages')
.orderBy('dateCreated', descending: false)
.snapshots(),
builder: (context, snapshot) {
...
},
)

关于flutter - 我正在练习一个消息应用程序。我把它存放在壁炉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63689958/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com