You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

我的Firestore数据库截图

你可以直接通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:18:04