我在此类内有此方法,我想在屏幕上调用此方法,并在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?
提前谢谢。
答案 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