Fundamentos do Kotlin Flow
Emita e colete fluxos de dados.
Fundamentos do Kotlin Flow é uma aula grátis de Android 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 Android Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Android Academy inclui 4 aulas no total.
O que é um Fluxo?
Um Fluxo é um fluxo assíncrono que emite vários valores ao longo do tempo. Pense nele como uma sequência suspensível que você pode transformar e coletar.
Construindo um Fluxo
O construtor flow { } permite emit valores, suspendendo opcionalmente entre eles.
fun numbers(): Flow<Int> = flow {
for (i in 1..3) {
delay(100)
emit(i)
}
}Coletando um Fluxo
Um fluxo não faz nada até que você o cole||||
scope.launch {
numbers().collect { value ->
println(value)
}
}Fluxos frios
Os Fluxos são frios: o bloco construtor é executado novamente para cada coletor. Dois coletores recebem, cada um, sua própria sequência independente desde o início.
Transformando com map e filter
Os operadores transformam as emissões de forma preguiçosa, executando somente quando são coletadas.
numbers()
.map { it * 10 }
.filter { it > 10 }
.collect { println(it) }Mais operadores
take(n)— somente os primeiros n valores.onEach— efeito colateral por valor.distinctUntilChanged— ignora repetições.
Tratando erros
Capture exceções do fluxo upstream com o operador catch.
numbers()
.map { riskyTransform(it) }
.catch { e -> emit(-1) }
.collect { println(it) }Reagindo à conclusão
Use onCompletion para executar código quando o fluxo terminar ou for cancelado.
numbers()
.onCompletion { println("done") }
.collect { println(it) }Alterando a thread do produtor
Use flowOn para executar o fluxo upstream em um distribuidor específico sem afetar o coletor.
fun load(): Flow<Data> = flow {
emit(readFromDisk())
}.flowOn(Dispatchers.IO)Operadores terminais
Alguns operadores encerram o fluxo e retornam um valor, como toList, first ou reduce. Eles são funções suspensas.
val all: List<Int> = numbers().toList()Onde os Fluxos se destacam no Android
Os Fluxos representam qualquer coisa que emita valores ao longo do tempo: alterações no banco de dados (Room), atualizações de localização, pesquisa enquanto você digita e combinação de várias fontes de dados.
Verificação rápida
Teste sua compreensão dos conceitos básicos de Fluxo.
Recapitulação
Você aprendeu:
flow { emit(...) }constrói um fluxo assíncrono.- Os Fluxos são frios e só são executados quando coletados.
- Transforme-os com
map/filtere trate erros comcatch. flowOndefine o distribuidor do produtor.
Perguntas Frequentes
A aula “Fundamentos do Kotlin Flow” é grátis?
Sim — o texto completo de “Fundamentos do Kotlin 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 “Fundamentos do Kotlin Flow”?
Emita e colete fluxos de dados. 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 3 de 4.
Quanto tempo leva a aula “Fundamentos do Kotlin 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
- Fundamentos e escopos de corrotinas
- viewModelScope e Dispatchers
- Fundamentos do Kotlin Flow
- StateFlow e SharedFlow