如何解决 The method '<' was called on null.接收者:null 尝试调用:<(0.0)?

How to resolve The method '<' was called on null. Receiver: null Tried calling: <(0.0)?

我试图通过使用 FutureBuilder 从 firestore 检索所需的字段值来计算百分比,但这样做时我遇到了这个错误。有人可以让我知道这个错误的原因以及我在代码中哪里做错了吗?请帮我解决这个问题。

这是代码:

displayPercentage() :

dynamic percentage = 0.0;
  displayPercentage() async {
    var totalClassesTook;
    var totalClassesAttended;
    try {
      totalClassesTook =
          await tutor_details.doc(uid).snapshots().map((event) async {
        var val = await event.data()['TotalClassesTook'];
        return val;
      });

      totalClassesTook = await totalClassesTook == null ? 0 : totalClassesTook;

      totalClassesAttended =
          await tutor_details.doc(uid).snapshots().map((event) async {
        var val = await event.data()['TotalClassesAttended'];
        return val;
      });
      totalClassesAttended =
          await totalClassesAttended == null ? 0 : totalClassesAttended;
      return percentage =
          await ((totalClassesAttended / totalClassesTook) * 100) / 100;
    } catch (e) {
      return percentage = 0.0;
    }
  }

从这里调用正文中的上述函数:

body: Center(
            child: Padding(
              padding: EdgeInsets.symmetric(vertical: 150.0),
              child: FutureBuilder(
                  future: displayPercentage(),
                  builder: (context, snapshot) {
                    return new CircularPercentIndicator(
                      radius: 120.0,
                      lineWidth: 13.0,
                      animation: true,
                      percent: snapshot.data,
                      center: new Text(
                        "${snapshot.data}",
                        style: new TextStyle(
                            fontWeight: FontWeight.bold, fontSize: 20.0),
                      ),
                      footer: Padding(
                        padding: EdgeInsets.symmetric(
                            horizontal: 10.0, vertical: 10.0),
                        child: new Text(
                          "Attendance Percentage",
                          style: new TextStyle(
                              fontWeight: FontWeight.bold, fontSize: 17.0),
                        ),
                      ),
                      circularStrokeCap: CircularStrokeCap.round,
                      progressColor: Colors.purple,
                    );
                  }),
            ),
          ),

输出

======== widgets库捕获异常===========================

构建 FutureBuilder 时抛出以下 NoSuchMethodError(脏,状态:_FutureBuilderState#bfce6): 在 null 上调用了方法“<”。 接收者:空 尝试调用:<(0.0)

builder 中放置一个 if 条件来检查 snapshot.hasData

builder: (context, snapshot) {
  if (snapshot.hasData) {
    // return CircularPercentIndicator here.
  },
  return Text('No Data');
},