Modelando uma Classe de Dados UiState
Represente a tela com um único objeto de estado.
Modelando uma Classe de Dados UiState é uma aula grátis de Jetpack Compose Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Jetpack Compose Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Jetpack Compose Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
One Object for the Screen
Instead of juggling many separate fields, model the whole screen with a single UiState data class that describes exactly what to draw.
data class ProfileUiState(
val name: String = "",
val isLoading: Boolean = false
)Why One State Object
Grouping fields together prevents impossible combinations and makes the UI a pure function of one value: same state in, same screen out.
Make It Immutable
Use val properties so a UiState can never be mutated in place. You always produce a new state, which keeps Compose updates predictable.
Updating With copy
Data classes give you copy() for free, so you can build the next state by changing only the fields that differ.
val next = state.copy(isLoading = false)Modeling Loading
Capture progress with a flag like isLoading so the UI can show a spinner while work runs, all from the same state object.
Modeling Errors
Add a nullable errorMessage field. When it is non-null, the screen shows the error; when null, everything is fine. ⚠️
data class UiState(
val items: List<Item> = emptyList(),
val errorMessage: String? = null
)Sealed Classes for Phases
For mutually exclusive phases, a sealed hierarchy is cleaner: Loading, Success, and Error become distinct types you handle exhaustively.
sealed interface UiState {
object Loading : UiState
data class Success(val data: List<Item>) : UiState
}Sensible Defaults
Give every property a default value so the initial state is one easy expression and new screens start in a clean, known condition.
private val _state = MutableStateFlow(ProfileUiState())Exposing It Read-Only
Hold a mutable state inside the ViewModel but expose it as a read-only type, so only the ViewModel may change the screen’s state.
val state: StateFlow<ProfileUiState> = _state.asStateFlow()Rendering From It
Your Composable reads one UiState and branches on its fields. The render logic stays tiny because the state already says what to show.
Single Source of Truth
A UiState class becomes the single source of truth for the screen, so your UI and logic can never quietly drift out of sync. ✨
Quick Check
Test your modeling instincts for screen state.
Recap
Model the screen with one immutable UiState data class, update it with copy(), expose it read-only, and let the UI render purely from that single source.
Perguntas Frequentes
A aula “Modelando uma Classe de Dados UiState” é grátis?
Sim — o texto completo de “Modelando uma Classe de Dados UiState” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Jetpack Compose Academy, atualize para CoddyKit PRO. O curso de Jetpack Compose Academy inclui 4 aulas no total.
O que vou aprender em “Modelando uma Classe de Dados UiState”?
Represente a tela com um único objeto de estado. Você pratica Jetpack Compose Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Jetpack Compose Academy?
Nenhuma experiência prévia é necessária. Jetpack Compose Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Modelando uma Classe de Dados UiState”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Jetpack Compose Academy?
Sim. Cada aula de Jetpack Compose Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que o ViewModel Sobrevive à Rotação
- viewModel() em uma Composable
- Modelando uma Classe de Dados UiState
- collectAsStateWithLifecycle