我正在构建一个新的 Compose Multiplatform 项目,我想添加一些 Firestore 功能。
我添加了 Firebase Kotlin SDK:https://github.com/GitLiveApp/firebase-kotlin-sdk
# build.gradle.kts
plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidApplication)
alias(libs.plugins.jetbrainsCompose)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.googleServices)
kotlin("plugin.serialization") version "2.0.0-RC3"
}
kotlin {
sourceSets {
androidMain.dependencies {
implementation(compose.preview)
implementation(libs.androidx.activity.compose)
}
commonMain.dependencies {
implementation("dev.gitlive:firebase-firestore:1.12.0")
implementation("dev.gitlive:firebase-common:1.12.0")
}
}
}
但我无法在 Firestore 调用中添加任何回调,例如
addSnapshotListener
或 addOnSuccessListener
我得到: Unresolved reference: addSnapshotListener
suspend fun getDocument(id: String) {
val db = Firebase.firestore
try {
val result = db.collection("session").document(id).get().addSnapshotListener { }
} catch (e: Exception) {
}
}
我想监听 FireStore 中数据的变化,并在发生变化时更新 UI。
DocumentReference#get() 方法返回 Task
addSnapshotListener
。如果你想监听特定文档的实时更新,那么你必须直接在 addSnapshotListener
对象上调用 DocumentReference
,如下所示:
suspend fun getDocument(id: String) {
val db = Firebase.firestore
try {
val result = db.collection("session").document(id).addSnapshotListener{ }
} catch (e: Exception) {
}
}
看,我已经删除了
get()
通话。所以这是可能的,因为 addSnapshotListener() 方法属于 DocumentReference 类,而不属于 Task