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()
Другие вопросы по тегам