代码流程遇到赋值语句时就停止前进。它没有显示任何错误,代码也没有退出,它只是停在那里。不过它在 flutter web 上运行良好
Future<(double, Map<DateTime, int>)> suppliercalc() async {
final user = FirebaseAuth.instance.currentUser;
final orderef = FirebaseFirestore.instance.collection('orders');
final date = DateTime.now();
double monthlysales = 0;
final thismonth = DateTime(date.year, date.month, 1, 0, 0, 0);
final Map<DateTime, int> linegraphdata = {};
final userid = "/userdetails/${user!.uid}";
final docs = await orderef
.where('timestamp', isGreaterThan: thismonth)
.where('supplier_id', isEqualTo: userid)
.where('delivered', isEqualTo: true)
.get();
final docdata = docs.docs;
for (var eachdoc in docdata) {
Timestamp stamp = eachdoc['timestamp'];
DateTime eachdate = stamp.toDate();
eachdate = DateTime(eachdate.year, eachdate.month, eachdate.day);
monthlysales = monthlysales + eachdoc['total'];
if (eachdate.isBefore(DateTime(date.year, date.month, date.day))) {
DateTime edate = DateTime(eachdate.year, eachdate.month, eachdate.day);
if (linegraphdata.containsKey(edate)) {
linegraphdata[edate] =
linegraphdata[edate]! + eachdoc['total'] as int;
} else {
log('before');
linegraphdata[edate] = eachdoc['total'] as int;
log('after');
}
}
}
return (monthlysales, linegraphdata);
}
这段代码的作用是创建一个地图,其中每个日期都有“总计”的总和,
但是代码在显示第一个日志('before')后停止
我也尝试使用 addEntries() 和 putifAbsent() 但他们也在那一点暂停了
所以,我找到了问题所在,这是因为我将 'eachdoc' 转换为 int,而它是 double 的。