【问题标题】:Why can't I update Firestore string value in Flutter?为什么我不能在 Flutter 中更新 Firestore 字符串值?
【发布时间】:2021-02-22 00:49:26
【问题描述】:

我有一个按钮,当我按下它时,我希望它用一个字符串更新一个空值。在代码中,您会注意到一个未来的构建器,并且只知道我需要它来确定我应该根据 Firestore 中的数据状态准确更新什么。创建用户时,isPledged 的值设置为 null,但正如您在 if 语句中看到的,如果该值为 null,我想用字符串“true”更新它。但是,当我这样做时,Firestore 中没有任何变化,其值仍为 null。我对我搞砸的地方有点困惑,所以任何帮助都将不胜感激。另外,我知道我可以删除 if 语句,但如果值确实有数据,我将添加另一个选项,所以这就是存在的原因。

onPressed: () {
  FutureBuilder(
    future: getPledgedStatus(),
    builder: (_, AsyncSnapshot snapshot) {
    if (!snapshot.hasData) {
      final CollectionReference
      users = FirebaseFirestore.instance.collection('UserNames');
      FirebaseAuth auth = FirebaseAuth.instance;
      String uid = auth.currentUser.uid.toString();
      users.doc(uid).update(
        {'isPledged': "true"}
      );
    }

    },
  );
  Navigator.of(context).pop();
},

【问题讨论】:

  • 我想可能是因为您将用户的 uid 转换为字符串,而 firebase 由于它是字符串而无法检测到该用户 id
  • @iKreateCode 抱歉没用。
  • 代码看起来不错;你能分享你的firestore doc路径结构吗?还可以通过打印 uid 来验证文档 ID。
  • @MuthuThavamani 所以我进行了一些测试并得出结论,Future Builder 一定有问题。当我拿走 Future Builder 而是直接在按下时更新文档时,值确实发生了变化。当我使用 if 语句将相同的代码放回 Future 构建器以检查是否有数据时,它无法工作。你建议我做什么?
  • @MuthuThavamani 实际上你只是使用异步函数是对的,我错过了。我写了一些新代码,它就像一个魅力。我会发布一个答案,谢谢

标签: firebase flutter google-cloud-firestore


【解决方案1】:

好的,所以在 Muthu Thavamani 提醒我可以简单地使用 async 函数而不是它工作的未来构建器之后,这是新代码:

onPressed: () async {
  try {
    final CollectionReference users = firestore.collection('UserNames');
    final String uid = auth.currentUser.uid;
    final result = await users.doc(uid).get();

    var isPledged = result.data()['isPledged'];

    if (isPledged == null) {
      FirebaseFirestore.instance.collection('UserNames').doc(uid).update({
        "isPledged": "true",
      });
      Navigator.of(context).pop();
    } else {
      //Something else
    }
  } catch (e) {
    print(e);
  }
}

【讨论】:

  • 请将您的答案标记为已接受。这样,其他人就可以帮助解决其他问题。
猜你喜欢
  • 2021-06-04
  • 1970-01-01
  • 2016-03-20
  • 2016-08-18
  • 2015-10-28
  • 2021-11-27
  • 1970-01-01
  • 2011-12-29
  • 1970-01-01
相关资源
最近更新 更多