Flutter Firestore开发中如何从流(Stream)中获取文档ID(doc id)
StreamBuilder 内获取 QuerySnapshot 文档 ID 方法
实现逻辑
QuerySnapshot 包含的每一个子文档快照(QueryDocumentSnapshot)都内置了id属性,直接读取该属性即可获得对应文档的唯一ID,无需额外发起查询请求。
具体代码示例
StreamBuilder<QuerySnapshot>( stream: FirebaseFirestore.instance.collection('你的集合名称').snapshots(), builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) { if (snapshot.hasError) { return const Text('数据加载失败'); } if (snapshot.connectionState == ConnectionState.waiting) { return const Text('加载中'); } // 遍历快照内的文档列表 return ListView( children: snapshot.data!.docs.map((QueryDocumentSnapshot doc) { // 此处直接读取doc.id即可获取对应文档ID String documentId = doc.id; // 获取文档内的自定义字段数据 Map<String, dynamic> docData = doc.data() as Map<String, dynamic>; return ListTile( title: Text(docData['展示字段名']), subtitle: Text('文档ID:$documentId'), ); }).toList(), ); } )
注意事项
- 不要尝试从文档的自定义字段中读取ID,默认配置下文档ID不会存入文档自身的字段内,直接调用
doc.id是官方推荐的标准写法 - 过滤、分页等场景下生成的QuerySnapshot同样适用该方法,返回的ID始终对应当前遍历到的文档
内容的提问来源于stack exchange,提问作者Mohammed Nadim
相关产品推荐
相关产品推荐

