您如何比较两个飞镖中的蒸汽值?

时间:2020-07-08 12:18:42

标签: flutter dart google-cloud-firestore

我有两个流,其中一个流接收到新事件时需要比较它们的值。现在,我有一个功能几乎可以实现我想要的功能,只是它是一个Future而不是一个stream,因此它只触发一次。

  Future<int> getUnreadMessages(String brfID, String conversationID, String uid) async {
    DocumentSnapshot conversation = await getConversation(brfID, conversationID).last;
    QuerySnapshot messages = await getMessages(brfID, conversationID, 10).last;
    int unread = 0;

    for (var message in messages.documents) {
      if (message.data['time'].millisecondsSinceEpoch > conversation.data['users'][uid]['lastRead'].millisecondsSinceEpoch) {
        unread++;
      }
    }
    return unread;
  }

我该如何将其转换为流?如果其中一个值不是流,那将很容易。那么我只能使用Firestores .where(),但这不适用于两个流。

两个流看起来像这样:

Stream<QuerySnapshot> getMessages(String brfID, String conversationID, [int limit]) {
    return brfCollection
        .document('$brfID/messaging/$conversationID')
        .collection('messages')
        .orderBy('time', descending: true)
        .limit(limit)
        .snapshots();
  }

Stream<DocumentSnapshot> getConversation(String brfID, String conversationID) {
    return brfCollection.document('$brfID/messaging/$conversationID').snapshots();
  }

0 个答案:

没有答案