Flutter中使用QuerySnapshot获取Firestore文档ID的实现方法

你可以直接通过DocumentSnapshot实例的id属性获取对应文档的documentID,该属性是Firestore SDK内置提供的,不需要从文档数据字段中读取。
修改后的完整代码如下,你可以直接获取到documentID进行打印或者后续更新操作:
class LoadData extends StatefulWidget { const LoadData({Key? key}) : super(key: key); @override _LoadDataState createState() => _LoadDataState(); } class _LoadDataState extends State<LoadData> { // 实时快照读取数据 final Stream<QuerySnapshot> _cupCakeStream = FirebaseFirestore.instance .collection('cupcake') .snapshots(includeMetadataChanges: true); @override Widget build(BuildContext context) { return StreamBuilder<QuerySnapshot>( stream: _cupCakeStream, builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) { if (snapshot.hasError) { return Text('出现未知错误'); } if (snapshot.connectionState == ConnectionState.waiting) { return Text("加载中"); } return ListView( shrinkWrap: true, children: snapshot.data!.docs.map((DocumentSnapshot document) { Map<String, dynamic> data = document.data()! as Map<String, dynamic>; // 直接通过document.id获取当前文档的documentID String documentId = document.id; print('文档ID:$documentId,文档数据:$data'); // 如果需要做更新操作可以直接用这个ID,示例如下 // FirebaseFirestore.instance.collection('cupcake').doc(documentId).update({'cupcake_name': '新名称'}); return ListTile( title: Text(data['cupcake_name']), subtitle: Text(data['description']), ); }).toList(), ); }, ); } }
内容的提问来源于stack exchange,提问作者Zenixo
相关产品推荐
相关产品推荐

