【发布时间】:2021-08-14 14:03:40
【问题描述】:
我试图通过使用 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,
);
}),
),
),
输出
======== 小部件库捕获的异常===========================
在构建 FutureBuilder(dirty, state: _FutureBuilderState#bfce6) 时引发了以下 NoSuchMethodError: 在 null 上调用了方法“
【问题讨论】:
标签: flutter dart google-cloud-firestore stream-builder flutter-futurebuilder