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 nach Jetpack mit dieser Spulenabhängigkeit: < /p>
io.coil-kt.coil3:coil-compose:3.1.0
< /code>
Die Profilbild -URL wird aus einer API zurückgegeben und korrekt in der ViewModel angemeldet.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 -Updates über StateFlow < /code> und komponieren Die Neuverdichtung tritt 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