Firebase 我可以使用此快照调用访问文档id吗?

Firebase 我可以使用此快照调用访问文档id吗?,firebase,flutter,dart,google-cloud-firestore,snapshot,Firebase,Flutter,Dart,Google Cloud Firestore,Snapshot,这是我用来一次访问所有文档的streambuilder 我可以使用docid:snapshot.data.document[index].documentid单独访问文档ID吗?如果没有,有什么选择?谢谢 您可以通过这种方式获取documentID StreamBuilder( stream: Firestore.instance.collection('projects').snapshots(), builder: (context, snapshot) {

这是我用来一次访问所有文档的streambuilder

我可以使用docid:snapshot.data.document[index].documentid单独访问文档ID吗?如果没有,有什么选择?谢谢


您可以通过这种方式获取documentID

StreamBuilder(
        stream: Firestore.instance.collection('projects').snapshots(),
        builder: (context, snapshot) {
          if (!snapshot.hasData) return Text('data is loading');
          return ListView.builder(
            itemBuilder: (ctx, index) {
              QuerySnapshot snap = snapshot.data; // Snapshot
              List<DocumentSnapshot> items = snap.documents; // List of Documents
              DocumentSnapshot item = items[index]; Specific Document
              return ProjectItem(
                id: item.data['id'],
                title: item.data['title'],
                members: item.data['members'],
                complexity: item.data['complexity'],
                affordability: item.data['affordability'],
                duration: item.data['duration'],
                docid: item.documentID, // Document ID
              ); 
            },
            itemCount: snapshot.data.documents.length,
          );
        },
      ),
    )
StreamBuilder(
流:Firestore.instance.collection('projects').snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData)返回文本('正在加载数据');
返回ListView.builder(
itemBuilder:(ctx,索引){
QuerySnapshot snap=snapshot.data;//快照
列表项=snap.documents;//文档列表
DocumentSnapshot item=项目[索引];特定文档
返回项目(
id:item.data['id'],
标题:item.data['title'],
成员:item.data['members'],
复杂性:item.data['complexity'],
可承受性:项目数据[“可承受性”],
持续时间:item.data['duration'],
docid:item.documentID,//文档ID
); 
},
itemCount:snapshot.data.documents.length,
);
},
),
)

您可以通过这种方式获取文档ID

StreamBuilder(
        stream: Firestore.instance.collection('projects').snapshots(),
        builder: (context, snapshot) {
          if (!snapshot.hasData) return Text('data is loading');
          return ListView.builder(
            itemBuilder: (ctx, index) {
              QuerySnapshot snap = snapshot.data; // Snapshot
              List<DocumentSnapshot> items = snap.documents; // List of Documents
              DocumentSnapshot item = items[index]; Specific Document
              return ProjectItem(
                id: item.data['id'],
                title: item.data['title'],
                members: item.data['members'],
                complexity: item.data['complexity'],
                affordability: item.data['affordability'],
                duration: item.data['duration'],
                docid: item.documentID, // Document ID
              ); 
            },
            itemCount: snapshot.data.documents.length,
          );
        },
      ),
    )
StreamBuilder(
流:Firestore.instance.collection('projects').snapshots(),
生成器:(上下文,快照){
如果(!snapshot.hasData)返回文本('正在加载数据');
返回ListView.builder(
itemBuilder:(ctx,索引){
QuerySnapshot snap=snapshot.data;//快照
列表项=snap.documents;//文档列表
DocumentSnapshot item=项目[索引];特定文档
返回项目(
id:item.data['id'],
标题:item.data['title'],
成员:item.data['members'],
复杂性:item.data['complexity'],
可承受性:项目数据[“可承受性”],
持续时间:item.data['duration'],
docid:item.documentID,//文档ID
); 
},
itemCount:snapshot.data.documents.length,
);
},
),
)

您可以创建自定义对象构造函数来使用文档快照中的数据

class ProjectItem {
  String id;
  String title;
  String members;
  String complexity;
  String affordability;
  String duration;
  String docid;

  ProjectItem({....});

  factory ProjectItem.fromFirestore(DocumentSnapshot doc) {
    return ProjectItem(
      id: doc.data['id'],
      title: doc.data['title'],
      members: doc.data['members'],
      complexity: doc.data['complexity'],
      affordability: doc.data['affordability'],
      duration: doc.data['duration'],
      docid:  doc.documentID,
    );
  }
}
然后在列表视图中使用这个构造函数来创建对象

return ProjectItem.fromFirestore(
   snapshot.data.documents[index]
);

您可以创建自定义对象构造函数来使用文档快照中的数据

class ProjectItem {
  String id;
  String title;
  String members;
  String complexity;
  String affordability;
  String duration;
  String docid;

  ProjectItem({....});

  factory ProjectItem.fromFirestore(DocumentSnapshot doc) {
    return ProjectItem(
      id: doc.data['id'],
      title: doc.data['title'],
      members: doc.data['members'],
      complexity: doc.data['complexity'],
      affordability: doc.data['affordability'],
      duration: doc.data['duration'],
      docid:  doc.documentID,
    );
  }
}
然后在列表视图中使用这个构造函数来创建对象

return ProjectItem.fromFirestore(
   snapshot.data.documents[index]
);
这对我很有用:

这对我很有用:


让我的代码与另一个片段一起工作,但这看起来也是合法的,谢谢!让我的代码与另一个片段一起工作,但这看起来也是合法的,谢谢!将问题标记为已回答将问题标记为已回答