Код: Выделить всё
// Coil
implementation "io.coil-kt:coil-compose:1.4.0"
Ранее я использовал катушку вместе с аккомпаниатором Google, но когда я перехожу на новую версию катушки, как следует из документации, у меня возникают проблемы с целевым методом:
Код: Выделить всё
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.pokedex, PID: 13502
java.lang.IllegalArgumentException: request.target must be null.
at coil.compose.ImagePainterKt.rememberImagePainter(ImagePainter.kt:94)
...
Просматривая внутренний код ImagePainter (класс катушки), вы можете видеть, что целевой метод по какой-то причине действительно должен быть нулевым:
Код: Выделить всё
@Composable
fun rememberImagePainter(
request: ImageRequest,
imageLoader: ImageLoader,
onExecute: ExecuteCallback = ExecuteCallback.Default,
): ImagePainter {
requireSupportedData(request.data)
require(request.target == null) { "request.target must be null." }
...
Вот мой компонент в Jetpack Compose (компонент изображения находится внутри столбца):
Код: Выделить всё
Image(
modifier = Modifier
.size(120.dp)
.align(Alignment.CenterHorizontally),
painter = rememberImagePainter(
data = entry.imageUrl,
builder = {
crossfade(true)
target {
viewModel.calcDominantColor(it) { color ->
dominantColor = color
}
}
transformations(CircleCropTransformation())
},
),
contentDescription = entry.pokemonName
)
Подробнее здесь: https://stackoverflow.com/questions/698 ... tpack-comp
Мобильная версия