Sobes.tech
Junior — Middle

Como atualizar o valor da propriedade State na arquitetura MVI?

sobes.tech IA

Resposta da IA

Na arquitetura MVI (Model-View-Intent), o estado (State) geralmente é um objeto imutável. Para atualizar o valor de uma propriedade do State, cria-se um novo objeto de estado com os dados modificados, e então esse novo objeto é passado para o fluxo de dados (por exemplo, através de LiveData, StateFlow ou RxJava), que está inscrito nas atualizações da interface do usuário.

Exemplo em Kotlin usando data class e StateFlow:

// Definição do estado
data class ViewState(val isLoading: Boolean, val data: List<String>)

// No ViewModel
private val _state = MutableStateFlow(ViewState(isLoading = false, data = emptyList()))
val state: StateFlow<ViewState> = _state

fun loadData() {
    _state.value = _state.value.copy(isLoading = true)
    // após carregar os dados
    _state.value = _state.value.copy(isLoading = false, data = listOf("item1", "item2"))
}

Dessa forma, a atualização ocorre através da criação de uma nova instância do estado usando o método copy, o que garante imutabilidade e previsibilidade do estado.