Как обновить функцию compose новыми данными?

#android #android-jetpack-compose

Вопрос:

Есть ли способ перекомпозировать функцию компоновки после получения новых данных? Я показываю начальное изображение из drawable при запуске, но пользователь может добавить изображение из своей галереи. Как я могу отобразить это изображение вместо исходного, используя ту же функцию создания? Запоминание не работает, так как я получаю новые данные изображения вне функции создания

Комментарии:

1. Не уверен, правильно ли я понимаю ваш вопрос, но почему вы не можете просто передать изображение (или то, что ваш составной файл использует для визуализации этого изображения, например, путь) в качестве аргумента вашей составной функции? затем используйте remember в родительском, чтобы сохранить состояние

2. Путь обновляется вне функции создания

Ответ №1:

Это довольно простая вещь, когда государство в составе:

 var pickedImage by remember { mutableStateOf<String?>(null) }
Image(
    painter = pickedImage?.let {
        // this is from coil.compose
        rememberImagePainter(it)
    } ?: painterResource(id = R.drawable.my_image),
    "...",
)
Button(onClick = {
    // pick image
    pickedImage = "new/image/url"
}) { 
    Text("Pick image")
}
 

Я предлагаю вам начать с документации, включая это видео на YouTube, в котором объясняются основные принципы.

Комментарии:

1. Спасибо, что это сработало!