![](/img/trans.png)
[英]How to show Flutter firebase realtime database on widgets with data updates using Stream builder?
[英]Flutter/Firebase application stream builder load data
我正在使用 Flutter 開發移動應用程序。
在我的應用程序中,我進行了實時消息傳遞。
通過獲得更多的用戶,聊天室中有很多聊天。
我只是想知道如何獲取數據,每當我向上滾動而不是初始 state 中的所有數據時。
StreamBuilder<QuerySnapshot>(
stream: controller.stream,
builder: (context, snapshots) {
if (!snapshots.hasData) {
return Container();
} else {
List<MessageBox> messages = [];
snapshots.data.docs.forEach((msg) {
ChatMessage message = ChatMessage.fromDocument(msg);
if (messages.length != 0) {
DateTime preTime =
messages[messages.length - 1].chatMessage.time;
DateTime thisTime = message.time;
if (preTime.year != thisTime.year ||
preTime.month != thisTime.month ||
preTime.day != thisTime.day) {
messages.add(MessageBox(
curreuntUserID: authentication.currentUser.userID,
isCurrentUserMessage:
authentication.currentUser.userID ==
ChatMessage.fromDocument(msg).senderID,
chatMessage: ChatMessage(
tagedUserIDList: null,
time: preTime,
messageID: null,
message: null,
messageType: null,
recieverID: null,
senderID: null,
imageURLs: null),
));
}
}
messages.add(MessageBox(
curreuntUserID: authentication.currentUser.userID,
chatMessage: message,
isCurrentUserMessage: authentication.currentUser.userID ==
ChatMessage.fromDocument(msg).senderID,
));
});
return MediaQuery.removePadding(
context: context,
removeBottom: true,
child: ListView(
reverse: true,
children: messages,
),
);
}
如果您希望數據僅在滾動時加載,請使用 ListView.builder。 這只會在屏幕上呈現文本並略高於/低於文本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.