@HiltViewModel
class ProfileViewModel @Inject constructor(
// code
) : ViewModel() {
private val _profilePicUrl = MutableStateFlow("")
val profilePicUrl: StateFlow<String?> = _profilePicUrl
init {
viewModelScope.launch {
val image = getUserProfileImage()
if (image != null) {
_profilePicUrl.value = image.toString()
}
}
}
private suspend fun observeUserProfileImage(): String? {
var userProfileImageUrl: String? = null
dataStoreRepository.getImageURL().collect { imageUrl ->
userProfileImageUrl = imageUrl
}
return userProfileImageUrl
}
private suspend fun getUserProfileImage(): String? {
return try {
val firebaseImageUrl = getUserData("profileImage")
if (firebaseImageUrl.toString()
.contains("profilePicture_${auth.currentUser!!.uid}") && firebaseImageUrl != null
) {
saveData(firebaseImageUrl.toString())
firebaseImageUrl.toString()
} else {
observeUserProfileImage()
}
} catch (e: Exception) {
null
}
}
private suspend fun getUserData(fieldName: String): Any? {
return try {
userRepository.getCurrentUserData(fieldName)
} catch (e: Exception) {
Log.d("MelonFeedError", e.message.toString())
null
}
}
private fun saveData(imageURL: String) {
viewModelScope.launch {
dataStoreRepository.saveImageURL(imageURL)
}
}
// other code
}
当我打开飞行模式并打开此屏幕时,我想查看数据存储首选项中的图像。 这就是我正在检查的条件
if (firebaseImageUrl.toString().contains("profilePicture_${auth.currentUser!!.uid}") && firebaseImageUrl != null)
.
这对我不起作用。 谁能帮我解决这个问题吗?
这就是我想要的: 打开屏幕 -> 获取图像 Firebase -> 已收到或未收到图像
情况 1) 如果收到图像 -> 将其发送到首选项 -> 从首选项显示
情况 2) 如果未收到图像 -> 显示 pref 中的图像
请帮助我。
您的代码
if (firebaseImageUrl.toString()
.contains("profilePicture_${auth.currentUser!!.uid}") && firebaseImageUrl != null
){
保存数据(firebaseImageUrl.toString())
firebaseImageUrl.toString()
}
检查图像看起来是否良好
但是你可以分享observeUserProfileImage()的代码吗
这个函数可能是罪魁祸首