Насколько правильно использовать 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, во первых это может быть проблемой так как

  1. Помещаем mutable variable в immutable data class
  2. Обновлять такой UiState становиться не слишком удобно

Пример нужно обновить screenElements и isLoading, чтоб это сделать нужно выполнить следующее

_uiData.value.screenElements.addAll(elements)

_uiData.emit(
    _uiData.value.copy(
        isLoading = false,
    )
)

то есть для обновления screenElements мы напрямую изменяем данные, а для isLoading испозьуем copy


Ответы (0 шт):