簡體   English   中英

Flutter/Firebase 應用程序 stream 構建器加載數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM