如何从此类获取所有documentID

时间:2020-04-16 16:17:43

标签: flutter dart google-cloud-firestore

我在此类内有此方法,我想在屏幕上调用此方法,并在map()中获取所有ID。


final databaseReference = Firestore.instance;

class CompanyServices {
  static CollectionReference get companies =>
      databaseReference.collection('companies');

  static getDocumentID() async {
    final QuerySnapshot result = await companies.getDocuments();
    final List<DocumentSnapshot> documents = result.documents;

    documents.forEach((data) {
      print(data.documentID);
    });
  }
}

屏幕上我是这样叫的:

CompanyServices.getDocumentID()

,我有这个错误: type 'Future<dynamic>' is not a subtype of type 'String'

如何调用该方法在地图中获取所有documentID?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

您的问题似乎出在DocumentSnapshot中,因为当您执行每个循环时,data的类型为DocumentSnapshot,而当您执行data.documentID时,似乎该字段不是字符串,而是Future,您可以尝试在打印文件中进行await data.documentID.toString(),但由于我不知道数据形状,所以我不建议您这样做,

答案 1 :(得分:0)

所以...感谢@ Abbas.M和@ julemand101的见解。 你是我的代码心理学家:P

回答我自己的问题: 我当时正试图在没有.then和所有其他东西的情况下获得一个Future,并在它到达之前等待获得响应。。。我在JS中用promises忘记了我的背景。

我开始工作,将所有屏幕从无状态转换为有状态,并获取该数据,将其存储到状态var中,并对其进行重建,并且我随时可以拥有该var。

感谢您的支持和解答。

我可以对您的两个答案都投票吗? :P