我正在尝试使用StreamBuilder从Firestore加载数据 .
在我的名为 'connect' 的集合中,可能有文件 .
但我想只加载特定的文件 .

'connections' 是一个包含 'connect' 集合中某些键的List .
'hello' 是一个QuerySnapshot列表,其中包含 'collection' 集合中的一些文档 .

例如,如果我的数据库包含以下 documentID 的文档:

-LK5SAToCPhI1Zp5W_bL
-LK5Ypv0HeDCwcN4K41M
-LK5j-OGtNjMpgklUB4B
-LK5mOih9wuz5ZSebXMn

列表 'connections' 只包含一部分,例如:

-LK5SAToCPhI1Zp5W_bL
-LK5Ypv0HeDCwcN4K41M

在StreamBuilder中,我想只加载连接中具有相同名称的文档 . 如何仅加载特定文档?

请帮我!

Firestore.instance.collection('connect')
    .snapshots()
    .listen((docSnap) {
  for (DocumentSnapshot docs in docSnap.documents) {
    if (connections.isNotEmpty) {
      for (String keys in connections) {
        if (docs.documentID.toString() == keys) {
          hello.add(docs);
        }
      }
    }
  }
});

@override
Widget build(BuildContext context) {
return new Scaffold(
    body: Center(
        child: Column(
          children: <Widget>[
            Row(
              children: <Widget>[
                Padding(
                  padding: EdgeInsets.only(bottom: 60.0),
                ),
                Expanded(
                  child: Text(
                    "Invitation!",
                    style: TextStyle(fontWeight: FontWeight.bold),
                    textAlign: TextAlign.center,
                  ),
                ),
              ],
            ),
            Flexible(
              child: StreamBuilder<QuerySnapshot>(
                stream: Firestore.instance.collection('connect').snapshots(),
                builder:
                    (BuildContext context,
                    AsyncSnapshot<QuerySnapshot> snapshot) {
                  if (!snapshot.hasData) return const Text("Loading ... ");
                  final int messageCount = snapshot.data.documents.length;

                  return ListView.builder(
                      padding: const EdgeInsets.symmetric(horizontal: 8.0),
                      itemCount: messageCount,
                      itemBuilder: (_, int index) {
                        final DocumentSnapshot document =
                        snapshot.data.documents[index];
                        if (document.documentID ==
                            hello[index].documentID) {
                          return Container(
                            child: Row(
                              children: <Widget>[
                                Text("Hello $messageCount")
                              ],
                            ),
                          );
                        } else {
                          return Container(
                            child: Row(
                              children: <Widget>[Text("Wrong")],
                            ),
                          );
                        }
                      });
                },
              ),
            ),
            _buildLayout(),
          ],
        )));
}