Состояние хранится во ViewModel, а также обновляется оттуда следующим образом:
Код: Выделить всё
casualViewState.updateState { copy(loading = loading) }
Код: Выделить всё
data class ListViewModelState(
val list1Items: List,
val list2Items: List,
val list3Items: List,
val isLoading: Boolean
)
sealed class ItemType(val id: String) {
data class ItemDetailA(val detail: Detail) : ItemType(detail.id)
data class ItemDetailB(val note: Note) : ItemType(note.id)
}
Код: Выделить всё
@Composable
fun GenericListView(state: ListViewModelState) {
LazyColumn {
items(state.list1Items, key = { it.id }) { item ->
GenericItemView(item)
}
items(state.list2Items, key = { it.id }) { item ->
GenericItemView(item)
}
items(state.list3Items, key = { it.id }) { item ->
GenericItemView(item)
}
}
}
Я пробовал использовать уникальные ключи и аннотации @Stable и @Immutable для более эффективного управления перекомпоновкой. . Также попробовал удалить передаваемые параметры и модификаторы, созданные с помощью составного метода, среди составных объектов.
Подробнее здесь: https://stackoverflow.com/questions/784 ... ck-compose
Мобильная версия