Насколько правильно использовать mutable data types внутри imutable data class?
Есть вот такой UiState
data class LandingScreenUiState(
val isLoading: Boolean,
val navigationLinkId: String?,
val screenElements: SnapshotStateList<ScreenElementUi>,
val error: Error?
)
SnapshotStateList
выглядит как лист оптимизированный для работы с compose. Но судя по всему его лучше использовать как отдельный class member, так как если он находится в UiState data class, во первых это может быть проблемой так как
- Помещаем mutable variable в immutable data class
- Обновлять такой UiState становиться не слишком удобно
Пример нужно обновить screenElements
и isLoading
, чтоб это сделать нужно выполнить следующее
_uiData.value.screenElements.addAll(elements)
_uiData.emit(
_uiData.value.copy(
isLoading = false,
)
)
то есть для обновления screenElements
мы напрямую изменяем данные, а для isLoading
испозьуем copy