Dart 代码在映射操作期间被阻塞

问题描述 投票:0回答:1

代码流程遇到赋值语句时就停止前进。它没有显示任何错误,代码也没有退出,它只是停在那里。不过它在 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() 但他们也在那一点暂停了

flutter dart
1个回答
0
投票

所以,我找到了问题所在,这是因为我将 'eachdoc' 转换为 int,而它是 double 的。

© www.soinside.com 2019 - 2024. All rights reserved.