【发布时间】:2020-06-24 06:45:28
【问题描述】:
我有一个名为getAvctUODoss() 的函数,它应该返回Future<double>,但它总是返回0.0。如果我在 forEach 循环中添加print('sum');,我会看到代码有效,只是为了返回它,我遇到了一些困难。我需要这个函数在另一个函数中的结果,但是因为这个错误的返回,我不能更进一步。我认为我的错误在于将sum 声明为双精度,但我不知道如何解决此问题。我在 Stack Overflow 上进行了搜索,但只找到了在 forEach 循环中打印值的代码。
提前感谢您的宝贵帮助。
这是我的两个函数的代码:
Future<double> getAvctUODoss(String numDoss) async {
double sum = 0.0; // I think the problem is in this declaration
affaireCollection
.document(numDoss.substring(0, 7))
.collection('dossiers')
.document(numDoss)
.collection('rp')
.getDocuments()
.then((querySnapshot) {
querySnapshot.documents.forEach((documentSnapshot) async {
sum += await documentSnapshot.data['avct'] *
(await documentSnapshot.data['UO_AT'] +
await documentSnapshot.data['UO_CH']);
});
});
return sum; //return always 0.0
}
Future updateAvctDoss(String numDoss) async {
await affaireCollection
.document(numDoss.substring(0, 7))
.collection('dossiers')
.document(numDoss)
.updateData({
'avct': await getAvctUODoss(numDoss) / await getTotalUODoss(numDoss)
});
}
【问题讨论】:
标签: firebase flutter dart google-cloud-firestore