如何使用 StreamBuilder 从多个文档中获取数据?

How do I get data from multiple documents with StreamBuilder?

我正在尝试使用 chat 制作我的 Flutter 应用。
我使用 streambuilder 来更新聊天数据。

我的问题是我不知道如何使用 streambuilder.读取多个文档

这是我的数据库:

我的计划是从该文档中获取所有数据。
之前,我 将 id 存储在对象中 并且我使用 for 循环 从文档 .
中获取所有数据 这些文档可以是 随机计数 (2 或 10...)。

这是我的 streambuilder:

body() {
  //build stream link get id
  Stream _build_stream_id() async* {
    //load user
    var user_id = await StorageUserID.loadData();
    yield* FirebaseFirestore.instance
        .collection('chat')
        .doc('users')
        .collection(user_id)
        .snapshots();
  }

  //build stream link get data
  Stream _build_stream_data(chat_overview_object, index) async* {
    yield* FirebaseFirestore.instance
        .collection('chat')
        .doc('chat_overview_data')
        .collection('data')
        .doc(chat_overview_object[index].chat_overview_id[0])
        .snapshots();
  }

  return StreamBuilder(
    stream: _build_stream_id(),
    builder: (context, snapshot) {
      if (snapshot.hasData) {
        var chat_overview_object = query_chat_overview_data_1(snapshot.data);
        for (var i = 0; i < chat_overview_object.length; i++) {
          return StreamBuilder(
            stream: _build_stream_data(chat_overview_object, i),
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                return Text('test: ' + snapshot.data.toString());
              } else {
                return Text("No data");
              }
            },
          );
        }
      } else {
        return Text("No data");
      }
      return Text('data');
    },
  );
}

如果你找到更好的方法请告诉我。 如果您有任何问题,请随时问我。
非常感谢 (:

您可以使用异步包中的 StreamGroup 组合流。

import 'package:async/async.dart' show StreamGroup;

List<Stream> streamList = [stream1, stream2];

Stream combinedStream = StreamGroup.merge(streamList);

尽管处理具有不同字段的 Firestore 集合可能很棘手。