如何获取文档快照索引

时间:2020-04-19 16:49:41

标签: flutter google-cloud-firestore

我是新手,我正在尝试将Firestore文档快照传递给另一个类。 我向快照类传递了一个快照文档,我想指出文档的索引,但是我不知道如何获取它 我有这个

                Expanded(
                child: StreamBuilder<QuerySnapshot>(
                    stream: ((searchString != null) &&
                            (searchString.trim() != ""))
                        ? Firestore.instance
                            .collection('pazienti')
                            .where("searchIndex",
                                arrayContains: searchString)
                            .snapshots()
                        : Firestore.instance
                            .collection('pazienti')
                            .snapshots(),
                    builder: (BuildContext context,
                        AsyncSnapshot<QuerySnapshot> snapshot) {
                      if (snapshot.hasError)
                        return Text('Error: ${snapshot.error}');
                      switch (snapshot.connectionState) {
                        case ConnectionState.waiting:
                          return Center(child: CircularProgressIndicator());
                        default:
                          return ListView(
                            children: snapshot.data.documents
                                .map((DocumentSnapshot document) {

                              return Card(

                                elevation: 10.00,
                                margin: EdgeInsets.all(0.50),
                                child: ListTile(
                                  onTap: () {
                                    Navigator.push(context, MaterialPageRoute(builder: (context) => Profile(miaquery: snapshot.data.documents[????])));
                                  } 
                                  ,
                                  leading: CircleAvatar(
                                    backgroundColor:
                                        Colors.blueGrey.shade800,
                                  ),
                                  title: Text(document['cognome'] +
                                      " " +
                                      document['nome']),
                                  subtitle: Text(document['cognome'] +
                                      " " +
                                      document['nome']),
                                   ),
                              );

                            }).toList(),
                          );
                      }
                    })),
          ],
        ),
      )

我的问题基本上在这里

Navigator.push(context, MaterialPageRoute(builder: (context) => Profile(miaquery: snapshot.data.documents[XXXX]))

如何从使用的地图中获取文档的索引?

非常感谢您的帮助

4 个答案:

答案 0 :(得分:1)

您只想传递水龙头上的文件,因此只需传递从map方法获取的文件。

答案 1 :(得分:0)

查询快照没有数字索引。查询的结果可能在两次查询之间随时更改,并且系统不能保证任何种类的索引都是稳定的。

如果要将文档传递给另一个功能,请传递其唯一的文档ID。然后,接收者可以直接从本地缓存中查询文档,而无需在服务器上进行付费的读取操作。

答案 2 :(得分:0)

var listIndex= snapshot.data.documents.map((e) => e.data['key']);
var passIndex = listIndex.toList().indexOf(doc.data['key']);
print(passIndex);

答案 3 :(得分:0)

您可以在分配列表时简单地传递索引

Widget _buildList(BuildContext context, List<DocumentSnapshot> snapshot) {
    return ListView(
      padding: const EdgeInsets.only(top: 20.0),
      children: snapshot.map((data) => _buildItem(context, data, snapshot.indexOf(data))).toList(),
    );
}