【问题标题】:firebase realtime database updating value twicefirebase 实时数据库更新值两次
【发布时间】:2021-09-26 17:26:21
【问题描述】:

我试图在颤动的实时数据库中设置一个布尔值,但它改变了两次值。首先将值从 true 设置为 false,然后立即将其再次更改为 true。

Future<void> changeTurnkey1(String roomCode, String key1) async {
var codeRef = _codeRef(roomCode);
await codeRef.child(playersKey).child(key1).get().then((value) async {
final Map snapshotMap = value.value;
bool val = snapshotMap[canPlay];
if (val) {
  await codeRef.child(playersKey).child(key1).update({
    canPlay: false,
  });
} else {
  codeRef.child(playersKey).child(key1).update({
    canPlay: true,
  });
}
});
}

【问题讨论】:

  • "首先将值从 true 设置为 false,然后立即将其再次更改为 true。"我不确定我是否了解您的应用中发生的情况。您能否编辑您的问题以描述(或者更好的是:展示)您是如何观察到这一点的?

标签: firebase flutter firebase-realtime-database


【解决方案1】:

您似乎同时使用了async/await.then()...这肯定会产生不良影响。

尝试像这样使用async/await

Future<void> changeTurnkey1(String roomCode, String key1) async {
var codeRef = _codeRef(roomCode);
var value = await codeRef.child(playersKey).child(key1).get()
final Map snapshotMap = value.value;
bool val = snapshotMap[canPlay];
if (val) {
  await codeRef.child(playersKey).child(key1).update({
    canPlay: false,
  });
} else {
  codeRef.child(playersKey).child(key1).update({
    canPlay: true,
  });
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多