Exponha o estado da interface como StateFlow
Publique uma única fonte de verdade para a tela
Exponha o estado da interface como StateFlow é uma aula grátis de Kotlin Multiplatform Academy no CoddyKit. Esta é a aula 2 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 Kotlin Multiplatform Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Kotlin Multiplatform Academy inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
One Source of Truth
Your screen needs a single, reliable picture of its data. A StateFlow gives you exactly that: one observable value the UI can trust.
Model the Screen as State
Bundle everything the screen shows into one immutable data class. Loading, data and errors all live together in a single object.
data class HomeState(
val isLoading: Boolean = false,
val name: String = ""
)Keep a Private MutableStateFlow
Inside the ViewModel hold a private MutableStateFlow. Only your code may change it, so state stays controlled and predictable.
private val _state =
MutableStateFlow(HomeState())Expose a Read-Only View
Publish it as a read-only StateFlow. The UI can collect values but can never write to it directly. Encapsulation, kept clean.
val state: StateFlow<HomeState> =
_state.asStateFlow()It Always Has a Value
Unlike a plain Flow, a StateFlow always holds a current value. New collectors instantly get the latest state, no waiting.
Update with .update
Change state safely using update. It copies the current value and applies your change atomically, even across threads.
_state.update { it.copy(isLoading = true) }copy Keeps It Immutable
Because the state is a data class, copy produces a fresh object with one field changed. Old state is never mutated in place.
Load Data, Then Emit
Launch a coroutine, fetch your data, then emit the new state. The UI re-renders automatically when the value changes. ✨
scope.launch {
val name = repo.greet()
_state.update { it.copy(name = name) }
}StateFlow vs LiveData
Android devs know LiveData, but it is JVM-only. StateFlow works on every KMP target, so it is the portable choice.
Read the Value Directly
Need the current state without collecting? Just read .value. Handy for tests or one-off checks inside the ViewModel.
val current = _state.valueThe UI Stays Dumb
The screen only collects state and draws it. All decisions stay in shared code, so both apps behave identically.
Quick Check
Let's confirm why we split mutable and read-only flows.
Recap
Bundle screen data in a state class, hold it in a private MutableStateFlow, and expose a read-only StateFlow the UI just observes. 🚀
Perguntas Frequentes
A aula “Exponha o estado da interface como StateFlow” é grátis?
Sim — o texto completo de “Exponha o estado da interface como StateFlow” é 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 Kotlin Multiplatform Academy, atualize para CoddyKit PRO. O curso de Kotlin Multiplatform Academy inclui 4 aulas no total.
O que vou aprender em “Exponha o estado da interface como StateFlow”?
Publique uma única fonte de verdade para a tela Você pratica Kotlin Multiplatform 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 Kotlin Multiplatform Academy?
Nenhuma experiência prévia é necessária. Kotlin Multiplatform 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 2 de 4.
Quanto tempo leva a aula “Exponha o estado da interface como StateFlow”?
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 Kotlin Multiplatform Academy?
Sim. Cada aula de Kotlin Multiplatform 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
- Uma base de ViewModel multiplataforma
- Exponha o estado da interface como StateFlow
- Lide com intenções e ações do usuário
- Vincule o ViewModel a cada interface