每次尝试通过for函数时,我都试图将其添加到名为counter的int变量中,但是由于它不在范围内,因此似乎没有相加。
int test(String carNumber) {
int counter = 0;
Firestore.instance
.collection('Notes')
.document('LoanedEquipments')
.collection(carNumber)
.getDocuments()
.then((QuerySnapshot snapshot) {
snapshot.documents.forEach((f) {
print(f.data['Items']);
counter++;
});
});
return counter;
}
答案 0 :(得分:2)
只需尝试以下代码,
Future<int> test(String carNumber) async {
int counter = 0;
QuerySnapshot snapShot=await Firestore.instance
.collection('Notes')
.document('LoanedEquipments')
.collection(carNumber)
.getDocuments();
if(snapShot!=null){
snapShot.documents.forEach((f) {
print(f.data['Items']);
counter++;
});
}
return counter;
}
您没有获得合适的计数器值,因为您正在更新then方法中的计数器值,该方法将在从firebase中获取Querysnapshot数据后调用。
您的Querysnapshot将花费一些时间从Firebase查询数据。因此,在获取Querysnapshot数据之前,您的方法将返回初始计数器值。
因此,请使用await方法等待Querysnapshot从firebase中获取数据并计算计数器值,然后返回该计数器值。