0Pricing
Android Academy · Aula

Observando dados com Flow

Reaja às alterações do banco de dados de forma reativa.

Observando dados com Flow é uma aula grátis de Android Academy no CoddyKit. Esta é a aula 4 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 Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.

Leituras reativas do banco de dados

Em vez de fazer uma consulta apenas uma vez, o Room pode retornar um Fluxo que emite um novo valor sempre que os dados subjacentes mudam. Sua interface se atualiza automaticamente.

Retornando um Fluxo de um DAO

Declare o tipo de retorno como Flow<...>. Observe que essa função não é uma função suspensa.

@Query("SELECT * FROM users ORDER BY name")
fun observeUsers(): Flow<List<User>>

Por que não usar uma função suspensa aqui

Uma função suspend retorna um único resultado e termina. Um Flow é um fluxo contínuo, portanto é uma função comum que retorna o objeto de fluxo; você o coleta ao longo do tempo.

Como o Room sabe quando emitir novamente

O Room acompanha quais tabelas uma consulta acessa. Quando uma escrita afeta essas tabelas, o Room executa a consulta novamente e emite o resultado atualizado pelo Fluxo. Isso é automático.

Coletando em uma corrotina

Você coleta o fluxo dentro de uma corrotina, normalmente no ViewModel.

viewModelScope.launch {
    dao.observeUsers().collect { users ->
        _uiState.value = UiState(users)
    }
}

Mapeando o Fluxo

Você pode transformar o fluxo com operadores como map antes de expô-lo.

val names: Flow<List<String>> =
    dao.observeUsers().map { list ->
        list.map { it.name }
    }

Transformando-o em StateFlow

Converta um fluxo frio do DAO em um StateFlow quente para a interface usando stateIn.

val uiState = dao.observeUsers()
    .map { UiState(it) }
    .stateIn(
        viewModelScope,
        SharingStarted.WhileSubscribed(5000),
        UiState()
    )

Coletando no Compose

A tela coleta esse estado levando o ciclo de vida em consideração, exatamente como você aprendeu anteriormente.

@Composable
fun UsersScreen(vm: UserViewModel) {
    val state by vm.uiState
        .collectAsStateWithLifecycle()
    UserList(state.users)
}

A cadeia reativa completa

Juntando tudo:

  • O Room emite quando os dados mudam.
  • O ViewModel mapeia os dados para o estado da interface por meio de stateIn.
  • O Compose coleta com collectAsStateWithLifecycle.

Escreva no banco de dados de qualquer lugar, e a tela se atualizará sozinha.

Fonte única da verdade

Esse padrão faz do banco de dados a fonte única da verdade. A interface nunca mantém cópias desatualizadas; ela sempre reflete o que está realmente armazenado.

As escritas acionam atualizações

Qualquer inserção, atualização ou exclusão em uma tabela observada faz o fluxo emitir novamente, portanto você não precisa atualizar manualmente a lista depois de uma alteração.

suspend fun addUser(u: User) = dao.insert(u)
// observeUsers() flow re-emits automatically

Verificação rápida

Teste sua compreensão sobre a observação de dados com Fluxo.

Recapitulação

Você aprendeu:

  • Os métodos de DAO que retornam Flow emitem novamente quando os dados mudam.
  • Eles são funções normais (não suspensas) que retornam um fluxo.
  • Use stateIn + collectAsStateWithLifecycle para atualizar a interface de forma reativa.
  • O banco de dados se torna a fonte única da verdade.

Perguntas Frequentes

A aula “Observando dados com Flow” é grátis?

Sim — o texto completo de “Observando dados com Flow” é 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 Android Academy, atualize para CoddyKit PRO. O curso de Android Academy inclui 4 aulas no total.

O que vou aprender em “Observando dados com Flow”?

Reaja às alterações do banco de dados de forma reativa. Você pratica Android 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 Android Academy?

Nenhuma experiência prévia é necessária. Android 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 4 de 4.

Quanto tempo leva a aula “Observando dados com Flow”?

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 Android Academy?

Sim. Cada aula de Android 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

  1. Entidades e DAOs
  2. A classe de banco de dados Room
  3. Consultas e relacionamentos
  4. Observando dados com Flow
← Voltar para Android Academy