Flutter 中 Cloud Firestore 的 FieldValue.increment

Posted

技术标签:

【中文标题】Flutter 中 Cloud Firestore 的 FieldValue.increment【英文标题】:FieldValue.increment for Cloud Firestore in Flutter 【发布时间】:2019-09-04 15:39:14 【问题描述】:

我正在使用 Flutter 和 Firebase Firestore 创建一个 android 应用。 我想添加自今年 4 月以来在 Firebase 中明显可用的新 FieldValue.increment 功能,但我遇到了一个错误: The method 'increment' isn't defined for the class 'FieldValue'.

这是我尝试过的代码:

onTap: ()
  Firestore.instance.document('docRef').updateData("numberOfDocs": FieldValue.increment(1));

我只是一个初学者程序员,但是当我检查 field_value.dart 文件时,它缺少“增量”实现。 那么,说 Flutter 团队还没有实现这个功能是正确的答案吗?

我看过一个教程,其中已经在一些 .js 代码中使用了增量,但对我来说它不起作用。 https://www.youtube.com/watch?v=8Ejn1FLRRaw

【问题讨论】:

【参考方案1】:

据我在change log for FlutterFire 中看到的,增量运算符尚未添加。

我添加了feature request to the repo。

【讨论】:

谢谢彼得。我自己只是在浏览CloudFirestore plugin code,结果相同。我会为它添加一个问题/FR。 这似乎在主仓库中:github.com/flutter/plugins/pull/1491【参考方案2】:

从version 0.10.0 开始,这已添加到cloud_firestore Flutter plugin。

您可以将FieldValue.incrementdouble(例如FieldValue.increment(1.0))或int(例如FieldValue.increment(2))一起使用。


Here is the relevant pull request.

如果有人在版本推送到 Pub 之前阅读此内容:该版本的链接将无法使用,但与此同时您可以使用 this Git commit,其中包含我所做的修复。

【讨论】:

【参考方案3】:

导入的用户:

import 'package:cloud_firestore/cloud_firestore.dart';

对于增量:

await FirebaseFirestore.instance.collection('post').doc(postId).update("like": FieldValue.increment(1));

递减:

await FirebaseFirestore.instance.collection('post').doc(postId).update("like": FieldValue.increment(-1));

【讨论】:

以上是关于Flutter 中 Cloud Firestore 的 FieldValue.increment的主要内容,如果未能解决你的问题,请参考以下文章

Flutter - 任务':cloud_firestore:compileDebugJavaWithJavac'的执行失败

Flutter cloud_firestore 系统日期对象的设置/警告

Cloud Firestore 连接我的 Flutter Windows 应用

Flutter:[cloud_firestore/unknown] NoSuchMethodError:null 上的无效成员:'includeMetadataChanges'(Flutter Web

Flutter 中 Cloud Firestore 的 FieldValue.increment

Flutter 中 Cloud Firestore 的 FieldValue.increment