Reload Coil Image Jetpack Compose
Мне нужно перезагрузить / обновить изображение катушки, потому что оно было переписано на диск / хранилище Код, который я использую
val context = LocalContext.current
val loader = if (!isSvg) {
LocalImageLoader.current ?: remember { ImageLoader(context) }
} else {
remember {
ImageLoader.Builder(context)
.componentRegistry {
add(SvgDecoder(context))
}.build()
}
}
val painter = rememberCoilPainter(request = request, imageLoader = loader)
LaunchedEffect(key1 = invalidate, block = {
val result = loader.execute(
ImageRequest.Builder(context)
.diskCachePolicy(if (fromCache) CachePolicy.ENABLED else CachePolicy.DISABLED)
.data(request).build()
)
Log.d("TL_ImageLoadRes", result.toString())
})
Box(modifier = Modifier.background(MaterialTheme.colors.onBackground.copy(.4f))) {
Image(
modifier = modifier,
painter = painter,
contentDescription = stringResource(R.string.random_image),
contentScale = contentScale
)
}
Каждый раз, когда аннулируются изменения, это означает, что изображение было переписано и теперь его можно найти, и я выполняю LaunchedEffect, но после получения результата успеха я не знаю, куда его поместить, он содержит Drawable, я не знаю, что делать делать с этим
1 ответ
Внутри блока LaunchedEffect добавьте строки ниже, чтобы обновить рисовальщик.
painter.onForgotten()
painter.onRemembered()