Warum wird Coil 3 nicht eine gültige Bild -URL in Jetpack komponieren, obwohl die URL gültig ist und der StateFlow ordnuAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Warum wird Coil 3 nicht eine gültige Bild -URL in Jetpack komponieren, obwohl die URL gültig ist und der StateFlow ordnu

Post by Anonymous »

Ich migriere einen Benutzerprofil-Bildschirm von XML + Glide zu Jetpack, der mit Coil 3.1.0 (io.coil-kt.coil3: Coil-Compose) komponiert wird.https://example.com/img/icon_user.png< /code> ← png über https < /p>
Es ist ein statisches Platzhalterbild, das als Standardprofilsymbol verwendet wird, und lädt in einem Browser einwandfrei. Browser < /li>
Die URL -Aktualisierungen über StateFlow < /code> und die Zusammensetzung des Zusammenhangs treten auf < /li>
Es werden keine Fehler ausgeworfen. ViewModel < /h3>
class UserViewModel : ViewModel() {
private val _imageUrl = MutableStateFlow("")
val imageUrl: StateFlow = _imageUrl

fun loadUserProfile() {
viewModelScope.launch {
userProfileUseCase.execute().collect {
if (it is RequestState.Success) {
val body = it.response.result.body
val url = body.imageUrl
Log.d("UserViewModel", "imageUrl = $url") // ✅ URL is valid
_imageUrl.emit(url ?: "")
}
}
}
}
}
< /code>
✅ komponierbare Verwendung < /h3>
@Composable
fun UserProfileScreen(userViewModel: UserViewModel) {
val imageUrl by userViewModel.imageUrl.collectAsStateWithLifecycle()

UserImageThumbnail(
imageUrl = imageUrl,
onClick = { /* omitted */ }
)
}
< /code>
✅ Bildanzeige komponierbar < /h3>
@Composable
fun UserImageThumbnail(imageUrl: String?, onClick: () -> Unit) {
val context = LocalContext.current

Box(
modifier = Modifier
.size(107.dp)
.clickable { onClick() }
) {
if (!imageUrl.isNullOrBlank()) {
Image(
painter = rememberAsyncImagePainter(
ImageRequest.Builder(context)
.data(imageUrl)
.memoryCachePolicy(CachePolicy.DISABLED)
.diskCachePolicy(CachePolicy.DISABLED)
.build()
),
contentDescription = null,
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop
)
}

Icon(
painter = painterResource(id = R.drawable.icon_camera),
contentDescription = null,
modifier = Modifier
.align(Alignment.Center)
.size(48.dp)
)
}
}
< /code>
Warum ist Coil 3 nicht eine gültige Bild -URL in Jetpack komponiert, obwohl die URL korrekt ist und die Wiederbelebung komponiert? Dies umfasst sowohl benutzerbezogene Profilbilder als auch Standard-Fallback-Bilder, die immer von der API bereitgestellt werden. Die URL ist also niemals null oder leer. Das Bild wird jedoch nicht angezeigt. Trotzdem wird in Komponsen nichts gezeigt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post