[英]firebase Storage return null
real i'm not sure if can explain the proplem真的,我不确定是否可以解释问题
1-I need to get posts from realtime_firebase 2-every post has a user_id 1-我需要从 realtime_firebase 获取帖子 2-每个帖子都有一个 user_id
then I need to get user Image from Storage_firebase by userId然后我需要通过 userId 从 Storage_firebase 获取用户图像
the problem is return null for image问题是为图像返回 null
Code代码
fun getPosts(liveData: MutableLiveData<List<Post>>) {
val databaseRef = firebaseDatabase.getReference("Posts")
var posts: ArrayList<Post> = ArrayList()
databaseRef.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
posts.clear()
for (snapshot in snapshot.children) {
var post = snapshot.getValue(Post::class.java)
post?.image = getUserImage(post?.userId!!)
posts.add(post!!)
}
liveData.value = posts
}
override fun onCancelled(error: DatabaseError) {
}
})
}
private fun getUserImage(user_id: String): String? {
var imageUri = ""
firebaseStorage.reference.child("users").child("profile")
.child(user_id).downloadUrl.addOnSuccessListener {
//problem is not access to this methode
imageUri = it.toString()
}
return imageUri
}
I'm solving the problem but not understand why -using MutableStateFlow to return value我正在解决问题,但不明白为什么 - 使用 MutableStateFlow 来返回值
databaseRef.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
posts.clear()
for (snapshot in snapshot.children) {
var post = snapshot.getValue(Post::class.java)
GlobalScope.launch {
getUserImage(post?.userId!!).collect {
post?.image = it
}
}
posts.add(post!!)
}
liveData.value = posts
}
override fun onCancelled(error: DatabaseError) {
}
})
}
private fun getUserImage(user_id: String): MutableStateFlow<String> {
var imageUri = MutableStateFlow<String>("")
var imageRef = firebaseStorage.reference.child("users").child("profile")
.child(user_id).downloadUrl.addOnSuccessListener {
GlobalScope.launch {
imageUri.emit(it.toString())
}
}
return imageUri
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.