firebase - Flutter firebase 在所有数据中添加一个类似的字段
问题描述
我有一个名为 span 的集合,其中包含一个字段“qty”。我想在数据中添加所有 qty 字段。我正在从 firebase 查询我的数据,如下所示
getsubtask() async {
return Firestore.instance.collection('span').where('projectid',isEqualTo: widget.detailDocument.documentID).snapshots();
}
所以我需要在我从上面列表中获得的数据中添加所有 qty 字段
int getTotals ;
void getTotal() {
for (int i = 0; i < getsubtask().length; i++)
getTotals += getsubtask()[i]['qty'];
}
我正在尝试获取 qty 字段的总数
ListTile(
title: Text(getTotals.toString()),
leading: Text('qty'),
),
我在 listtile 中显示上述数据。
但它在运行时在标题中显示“null”。
解决方案
您的代码中有很多问题,主要是因为数据是异步加载的,您需要始终如一地处理它。我很快发现了一些问题:
getsubtask()
await
是异步的,所以你在调用它时需要它的结果。- 这意味着
getTotal
也需要async
。 - 这反过来意味着您不能像在渲染代码中那样调用它,但您需要使用 a
StreamBuilder
或将总数存储在状态中。
void getTotal() async {
var subtasks = await getsubtask();
var totals = ;
for (int i = 0; i < subtasks.length; i++)
totals += subtasks[i]['qty'];
}
setState({ totals: totals });
}
现在你可以调用getTotal()
你的构造函数,或者几乎任何地方,开始计算总数,然后渲染总数:
ListTile(
title: Text(totals),
leading: Text('qty'),
),
推荐阅读
- python - ValueError:时间数据与格式不匹配,可选毫秒
- javascript - 这个通过网络摄像头扫描 QR 的 JavaScript 代码代码在本地主机上运行完美,但是当上传到网络服务器上的 realhost 时,摄像头没有打开
- excel - 如何根据循环中的单元格值更改文本框的颜色?
- flutter - 在 performLayout() 期间引发了以下断言:
- python-3.x - 为什么我不能正确设置 Tensorflow 以在 Jupyter 笔记本上使用?
- android - 创建从应用程序主题中设置的默认样式扩展的样式
- javascript - 有没有办法从 Chrome 浏览器的设置中检索默认搜索引擎?
- javascript - 'bitmaprenderer' 不是 Chrome 中屏幕外画布渲染上下文的有效值吗?
- c# - 代码在一行中中断并且没有被 try-catch 捕获。我该如何解决?
- python - 如何处理二进制图像以对齐一行中的稀疏字母?