На уровне ViewModel — как угодно и как самому удобнее в конкретных случаях. На уровне компоузабл — второй вариант подходит для эфемерного состояния конкретного компоузабла, а первый для более глобальных штук.
Получается какое правило - для отдельного композабл элемента, если нужен Стейт, то мутабельный, для целого экрана - не мутабельные дата классы? (Состояние все равно сохранится во вьюмодели)
Да нет никаких правил. Просто как факт, если нужен локальный стейт у компоузабла, то вариант с ремемберами отдельных полей куда лучше ложиться. Во всех остальных случаях — вкусовщина и отдельные кейсы. Где-то удобнее рулить стейтом целиком, а где-то держать отдельное поле. Фанаты SSOT скажут, что всегда лучше держать всё в одном data class.
иммутабельные дата классы)
Не онли). Если бы было онли, то и встроенные компоненты - lazylist и другие имели бы не мутабельный стейт. Но он мутабельный! Почему?
Вы, кажется, о разных вещах толкуете. mutableState и (immutable) data class разные вещи и вполне уживаются вместе.
пример можете привести, data class с mutableState полями?
А в каком месте Вы создаёте LazyListState мутабельным? val listState = rememberLazyListState()
Обсуждают сегодня