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

如何从Firebase获取数据并存储到Flutter的列表中?

从Firebase文档获取数据并存储到列表

最终会得到你示例中那样的结构化数据列表,以下是各平台的具体实现方案:

Web 端(JavaScript)

模块化SDK(v9+)

import { getFirestore, collection, getDocs } from "firebase/firestore";

// 初始化Firestore实例
const db = getFirestore();
// 初始化存储数据的列表
const dataList = [];

// 异步获取集合数据并填充列表
async function loadDataToList() {
  const querySnapshot = await getDocs(collection(db, "你的集合名"));
  querySnapshot.forEach(doc => {
    // 把文档ID和数据合并后加入列表
    dataList.push({ id: doc.id, ...doc.data() });
  });
  // 验证结果
  console.log(dataList);
}

// 执行函数
loadDataToList();

旧版命名空间SDK

const db = firebase.firestore();
const dataList = [];

db.collection("你的集合名").get().then(querySnapshot => {
  querySnapshot.forEach(doc => {
    dataList.push({ id: doc.id, ...doc.data() });
  });
  console.log(dataList);
}).catch(error => {
  console.error("获取数据出错:", error);
});

Android 端(Kotlin)

import com.google.firebase.firestore.FirebaseFirestore

val db = FirebaseFirestore.getInstance()
val dataList = mutableListOf<MutableMap<String, Any>>()

db.collection("你的集合名")
    .get()
    .addOnSuccessListener { snapshot ->
        snapshot.documents.forEach { doc ->
            val itemData = doc.data?.toMutableMap() ?: mutableMapOf()
            itemData["id"] = doc.id
            dataList.add(itemData)
        }
        // 数据已存入列表,可后续使用
        println(dataList)
    }
    .addOnFailureListener { e ->
        println("数据获取失败: ${e.message}")
    }

iOS 端(Swift)

import FirebaseFirestore

let db = Firestore.firestore()
var dataList: [[String: Any]] = []

db.collection("你的集合名").getDocuments { snapshot, error in
    guard let documents = snapshot?.documents, error == nil else {
        print("获取数据失败: \(error?.localizedDescription ?? "未知错误")")
        return
    }
    
    for doc in documents {
        var item = doc.data()
        item["id"] = doc.documentID
        dataList.append(item)
    }
    // 列表已填充完成
    print(dataList)
}

单个文档的情况

如果只需要获取单个文档的数据存入列表,只需修改查询逻辑:

// Web示例(模块化)
async function loadSingleDocToList() {
  const docRef = doc(db, "你的集合名", "目标文档ID");
  const docSnap = await getDoc(docRef);
  if (docSnap.exists()) {
    dataList.push({ id: docSnap.id, ...docSnap.data() });
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:00:58