функция что-то возвращала. Все через колбэки. Например, у меня дейтпикер (кастомный, т.к. на десктоп материал еще не завезли). Что плохого в том, что компоузебл функция дейтпикера будет возвращать локалдейт и класть его в стейт того компоузебла, который этот дейтпикер вызывал?
@Composable
fun DatePicker(date: (LocalDate) -> Unit) { TODO }
vs
@Composable
fun DatePicker() : LocalDate
потому что компоуз функции - это вьюшки, зачем им данные возвращать?
не аргумент. Я в свою очередь заявляю, что компоузебл — это функция. И она возвращает юнит. Почему бы ей не вернуть что-то другое кроме юнит?
вернуть можешь что угодно, но зачем?
а какой из этих двух вариантов по твоему легче читается?? var date by remember { mutableStateOf(LocalDate.now() } /* */ date = DatePicker() или var date by remember { mutableStateOf(LocalDate.now() } /* */ DatePicker() { date = it } Вопрос удобства сопсна
если бы у бабки был член она была бы дедом
Колбек будет вызван при событии колбека, а компоузабл функция может быть вызвана при каждой рекомпозиции
В первом случае и внутри пикера будет ещё один remember date, чтобы при первом вызове не блокировать UI, или без remember, но тогда нужно будет ждать выполнение пикера и никакой другой код ниже пикера не будет вызван до какого-то времени?
Спасибо за внятный аргумент ) Просто в данном случае дейт пикер это диалог. То есть какой нибудь флоу может вызывать рекомпозицию "за спиной" диалога, и могут быть непредвиденные кейсы. Я верно понял?
По идее если открыт диалог с пикером, то ничего не должно происходить за ним. После того, как закрыл — пожалуйста
https://habr.com/ru/amp/publications/739510/ https://habr.com/ru/companies/kts/articles/595465/ Немного о том, как происходят композиции и рекомпозиции, полезно для понимания, чё там происходит в этом компоузе
Оооо, то что надо! Благодарю!
Обсуждают сегодня