❓ Вопрос Почему катушка 3 не отображает допустимый URL -адрес изображения в JetPack Compose, даже если URL -адрес являетAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 ❓ Вопрос Почему катушка 3 не отображает допустимый URL -адрес изображения в JetPack Compose, даже если URL -адрес являет

Сообщение Anonymous »

Я перевозил экран профиля пользователя из XML + Glide в JetPack Compose с использованием катушки 3.1.0 (io.coil-kt.coil3: coil-compose). < /p>
Изображение профиля возвращается из API и правильно зарегистрировано в ViewModel.

Код: Выделить всё

https://example.com/img/icon_user.png< /code> ← PNG над https < /p>
Это статическое изображение заполнителя, используемое в качестве значка профиля по умолчанию, и он хорошо загружается в браузере. browser
[*]The URL updates correctly via StateFlow
and Compose recomposition occurs
[*]No errors are thrown
[*]Glide handled the same URL fine in the legacy implementation


✅ 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>
✅ композиционное использование < /h3>
@Composable
fun UserProfileScreen(userViewModel: UserViewModel) {
val imageUrl by userViewModel.imageUrl.collectAsStateWithLifecycle()

UserImageThumbnail(
imageUrl = imageUrl,
onClick = { /* omitted */ }
)
}
< /code>
✅ отображение изображения Composable < /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>
Почему катушка 3 не отображает действительный URL -адрес в Compose, даже несмотря на то, что URL является правильным и сочетает в себе? Это включает в себя как пользовательские изображения профиля, так и резервные изображения по умолчанию, которые всегда предоставляются API. Таким образом, URL никогда не бывает нулевым или пустым. < /P>
Я подтвердил в журналах, что URL -адрес является действительным и сочиняется, как и ожидалось. Но изображение не отображается. < /P>
Я попытался отключить как память, так и дисковый кэш с катушкой 3, а также проверил, что один и тот же URL -адрес успешно загружается в Glide и в браузере. Тем не менее, ничего не показано в составе.


Подробнее здесь: https://stackoverflow.com/questions/796 ... mpose-even
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»