2

我想用来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";
}
4

0 回答 0