You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中如何将Firebase节点Key以String类型添加至列表

解决Firebase节点Key添加为字符串而非对象集合的问题

你的问题出在values.keys.toString()这行代码——它会把整个Keys集合转换成字符串格式(所以输出带括号),而不是提取单个节点的Key字符串。

修正方案

情况1:查询结果仅返回单个节点

直接获取集合中的第一个Key并转成字符串:

var myList = [];

await database.ref().child("team").orderByChild(uid).equalTo("test").once().then((DatabaseEvent databaseEvent){
  if (databaseEvent.snapshot.value != null) {
    Map<dynamic, dynamic> values = databaseEvent.snapshot.value as Map<dynamic, dynamic>;
    // 取第一个Key并转字符串
    myList.add(values.keys.first.toString());
    print(myList);
  }
});

情况2:查询结果可能返回多个节点

遍历所有Keys,逐个添加到列表:

var myList = [];

await database.ref().child("team").orderByChild(uid).equalTo("test").once().then((DatabaseEvent databaseEvent){
  if (databaseEvent.snapshot.value != null) {
    Map<dynamic, dynamic> values = databaseEvent.snapshot.value as Map<dynamic, dynamic>;
    // 遍历所有Key并添加
    values.keys.forEach((key) {
      myList.add(key.toString());
    });
    print(myList);
  }
});

说明

  • values.keys返回的是一个Key集合,直接调用toString()会输出集合的整体格式(带括号);
  • 通过first可以获取集合中的第一个元素,或者用forEach遍历所有元素,再分别转成字符串添加到列表,就能得到你期望的纯Key字符串列表。

内容的提问来源于stack exchange,提问作者Bernhard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:45:36