#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. Спасибо, что это сработало!