gpt4 book ai didi

firebase - Flutter:实时数据库,追加特定UID下的数据

转载 作者:行者123 更新时间:2023-12-05 04:54:07 26 4
gpt4 key购买 nike

我试图在每次点击实时数据库时添加一个网格。然而,当添加一个新值时,尽管它的键不同,数据库仍然用新索引替换旧索引。

总而言之,这是我想要的结构:

User.UID
|
|___ 0 -> cross
|
|___ 1 -> tick
|
|___ 2 -> cross
|
|___ 3 -> tick

但是我得到:

User.UID
|
|___ 1 -> tick

即:旧索引 0 被新索引 1 替换。

我的代码是:

playGame(int index, final databaseReference) {
if (this.gameState[index] == "empty") {
setState(() {
if (this.isCross) {
this.gameState[index] = "cross";
} else {
this.gameState[index] = "circle";
}
this.isCross = !this.isCross;
this.checkWin();
});

databaseReference
.child(authUser.currentUser.uid)
.set({index.toString(): gameState[index]});
}

网格:

Container(
margin: EdgeInsets.all(15),
height: MediaQuery.of(context).size.height / 2,
color: Colors.white12,
child: GridView.builder(
padding: EdgeInsets.only(top: 30),
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3,
childAspectRatio: 1.0,
crossAxisSpacing: 10.0,
mainAxisSpacing: 10.0),
itemCount: 9,
itemBuilder: (context, i) => SizedBox(
child: MaterialButton(
onPressed: () {
this.playGame(i, databaseReference);
},
child: Image(
image: this.getImage(this.gameState[i]),
),
),
),
),
),

谁能帮我解决这个问题?

最佳答案

当您在某个位置调用 set(...) 时,它会设置您传递给该位置的值,覆盖该位置的任何现有值.

如果您只想更新位置中的特定键,请使用 update(...) 方法。所以在你的情况下就是我:

databaseReference
.child(authUser.currentUser.uid)
.update({index.toString(): gameState[index]});

关于firebase - Flutter:实时数据库,追加特定UID下的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65864436/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com