如何从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
相关产品推荐
相关产品推荐

