【问题标题】:Flutter firebase add a similar field in all dataFlutter firebase 在所有数据中添加一个类似的字段
【发布时间】:2020-10-25 03:54:57
【问题描述】:

我有一个名为 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”。

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    您的代码中有很多问题,主要是因为数据是异步加载的,您需要始终如一地处理它。我很快发现了一些问题:

    1. getsubtask() 是异步的,所以调用时需要await 其结果。
    2. 这意味着getTotal 也需要是async
    3. 这又意味着您不能像在渲染代码中那样调用它,但您需要使用 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'),
      ),
    

    【讨论】:

      猜你喜欢
      • 2021-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      相关资源
      最近更新 更多