我想用来PreferenceDataStore
获取保存在 Firebase 数据库中的用户设置。
set- 函数就像一个魅力,因为没有监听器:
override fun putString(key: String?, value: String?) {
if(key != null && value != null){
val userId = UserUtils.getCurrentUser()?.uid.orEmpty()
val preferencesReference = database.getReference("users/$userId/preferences")
preferencesReference.updateChildren(HashMap<String,String>().apply {
this.put(key,value)
}.toMap())
}
}
get- 函数更复杂,因为您可能知道,firebase 数据库为我们提供了一个回调方法,用于返回数据。还有办法获取价值吗?你有什么想法?
override fun getString(key: String?, defValue: String?): String? {
if(key == null){
return defValue
}
val userId = UserUtils.getCurrentUser()?.uid.orEmpty()
database.getReference("users/$userId/preferences/$key").addListenerForSingleValueEvent(object: ValueEventListener{
override fun onDataChange(p0: DataSnapshot) {
//the return value is here, but i am not able to return it cause it's a listener
}
override fun onCancelled(p0: DatabaseError) {}
})
return "wot";
}