caberia usar flow em um scroll de conteudo? por exemplo, um instagram carrega X posts, chega ao final da tela e carrega mais X e assim por diante (portanto não carrega sem input do usuario)
Diferença importante entre LiveData e Flows (basicamente duas soluções de produtor/consumidor, embora com focos diferentes): LiveData aceita produção sem consumo (valores ignorados ou enfileirados) e consumo sem produção. Em Flows só há consumo (coleta) se alguém produziu, e só há uma próxima produção se alguém tiver coletado. Ao invés de trabalhar com Flow e LiveData, prefiro (com Jetpack Compose por exemplo) ficar só com o Flow.
Muito boa sua explicação, entrei em um projeto onde usamos o flow e nao entendia direito, nesse caso, eu so preciso usar o flow quando tenho esse cenario especifico, onde preciso receber uma sequencia de dados, caso contrario o uso do flow nao tras nenhum beneficio em relacao ao uso do coroutines?
Muito bom o conteúdo Douglas. Parabéns! Tenho uma dúvida. Para conseguir esse efeito de atualização contínua (web socket) da view não poderíamos utilizar somente MutableLiveData? Sem precisar usar o Flow. Dando um postValue a cada nova atualização, e a view ficar escutando esse MutableLiveData?
Olá Mayk! Não é possível ter atualizações em tempo real, sem nenhum tipo de ação por parte do usuário, sem a autlização de ferramentas reativas como o RxJava e Flow. Ou seja, toda vez que há uma atualização no backend, o app deve reagir automaticamente e atualizar os dados na tela. Isso só é possível com web socket e com uma solução reativa que mantém o stream de dados aberto enquanto há a ligação com o web socket.
@@DouglasMotta Sim sim claro, para isso temos que usar em conjunto tbm outra ferramenta para manter esse canal de comunicação aberto, para a aplicação reagir mesmo sem ter havido uma ação por parte do usuário. Fiquei com dúvidas quanto ao Flow, porque eu consegui esse efeito utilizando o Realtime Database do Firebase que faz esse papel do web socket em conjunto com o MutableLiveData para atualizar a view a cada atualização no canal aberto do web socket. Sem precisar utilizar o Flow, sabe. Em resumo utilizei apenas Realtime Database (web socket) e MutableLiveData
Sim, com o Realtime é possível se vc implementar a nível de view model, pois basta apenas vincular a um LiveData, mas quando você tem uma implementação de web socket implementado em outras camadas do seu app, onde o live data não é recomendado (repository, data layer, etc.) você deve usar uma solução com o Flow ou RxJava, até chegar no ViewModel, e ali você pode converter para live data ou escutar o flow direto na view. Um abraço.
Muito bom como sempre. RXJava seria um dos meus próximos tópicos de estudo, provavelmente irei focar no Flow por enquanto, bem mais amigável. No entanto acredito que entender o RXJava seja indispensável para trabalhar com legado.
Sim Allysson, com certeza há vários projetos já desenvolvidos com RxJava. É importante também saber como ele funciona. Estou pensando em gravar um vídeo sobre ele também. Até porque pode ser requisito das empresas num futuro próximo a migração do RxJava para o Kotlin Flow :) Valeu pelo comentário
Hehe, o Kotlin trouxe muitas possibilidades para o desenvolvimento Android, por isso as coisas estão evoluindo muito rápido. Por isso tento dar uma ajuda sobre esse updates aqui no canal :) Abraço
Esse vídeo ta tão bom que eu me perguntei como eu não conseguia entender esse assunto antes! Obg pela explicação ❤
Por nada :)
Realmente
Muuuuito shoooow, entendi o conteúdo plenamente!!!
Video muito bom, continua atual
Obrigado mesmo pelo vídeo, sou iniciante e estava com algumas dúvidas lendo apenas a documentação, mas o seu vídeo clareou tudo.
Fico feliz em ajudar :)
Muito bom, cara!!
Primeira vez que vejo sobre o kotlin flow
Gostaria que fizesse um vídeo apresentando Kotlin Flow no Jetpack Compose! Obrigado Douglas Motta.
Obrigado pela sugestão Douglas.
Obrigado pelo conteúdo!! Vlw
Vídeo perfeito!
Parabéns Douglas, ficou muito bem explicado !
Sensacional, obrigado por compartilhar seu conhecimento, isso ajuda muito!
Muito bom, acompanho seus vídeos e me ajuda muito! Parabéns!
Estou gostando dos seus videos. Sua didatica é muito boa.
Muito obrigado 😃
Muito legal isso.
caberia usar flow em um scroll de conteudo? por exemplo, um instagram carrega X posts, chega ao final da tela e carrega mais X e assim por diante (portanto não carrega sem input do usuario)
Sim, daria para usar flow integrado com as biblioteca de paginação (paging3)
Mais fácil de entender que RxJava, aprendi RxJava recentemente e foi bem confuso no início
Diferença importante entre LiveData e Flows (basicamente duas soluções de produtor/consumidor, embora com focos diferentes):
LiveData aceita produção sem consumo (valores ignorados ou enfileirados) e consumo sem produção.
Em Flows só há consumo (coleta) se alguém produziu, e só há uma próxima produção se alguém tiver coletado.
Ao invés de trabalhar com Flow e LiveData, prefiro (com Jetpack Compose por exemplo) ficar só com o Flow.
Boa explicação Cláudio! Obrigado pela contribuição. Um abraço.
O mesmo aqui
Interessante isso aí, valeu
Mto legal obrigado pela ótima aula!
Se fizesse esse exemplo Kotlin Flow com Jetpack Compose.
Muito boa sua explicação, entrei em um projeto onde usamos o flow e nao entendia direito, nesse caso, eu so preciso usar o flow quando tenho esse cenario especifico, onde preciso receber uma sequencia de dados, caso contrario o uso do flow nao tras nenhum beneficio em relacao ao uso do coroutines?
Olá Bruno!
O Flow foi desenhado para retornar múltiplos valores de uma só vez, portanto é neste caso de uso em que ele se aplica.
Um abraço.
Muito bom o conteúdo Douglas. Parabéns! Tenho uma dúvida. Para conseguir esse efeito de atualização contínua (web socket) da view não poderíamos utilizar somente MutableLiveData? Sem precisar usar o Flow. Dando um postValue a cada nova atualização, e a view ficar escutando esse MutableLiveData?
Olá Mayk! Não é possível ter atualizações em tempo real, sem nenhum tipo de ação por parte do usuário, sem a autlização de ferramentas reativas como o RxJava e Flow. Ou seja, toda vez que há uma atualização no backend, o app deve reagir automaticamente e atualizar os dados na tela. Isso só é possível com web socket e com uma solução reativa que mantém o stream de dados aberto enquanto há a ligação com o web socket.
@@DouglasMotta Sim sim claro, para isso temos que usar em conjunto tbm outra ferramenta para manter esse canal de comunicação aberto, para a aplicação reagir mesmo sem ter havido uma ação por parte do usuário. Fiquei com dúvidas quanto ao Flow, porque eu consegui esse efeito utilizando o Realtime Database do Firebase que faz esse papel do web socket em conjunto com o MutableLiveData para atualizar a view a cada atualização no canal aberto do web socket. Sem precisar utilizar o Flow, sabe. Em resumo utilizei apenas Realtime Database (web socket) e MutableLiveData
A diferença é que neste exemplo vc ultilizou o delay do Coroutines para simular essa produção contínua de dados
Sim, com o Realtime é possível se vc implementar a nível de view model, pois basta apenas vincular a um LiveData, mas quando você tem uma implementação de web socket implementado em outras camadas do seu app, onde o live data não é recomendado (repository, data layer, etc.) você deve usar uma solução com o Flow ou RxJava, até chegar no ViewModel, e ali você pode converter para live data ou escutar o flow direto na view.
Um abraço.
@@DouglasMotta muito obrigado Douglas, vlw mesmo!
Utilizei o StateFlow com DataStore, bem massa acho que ele foi promovido para API estável no coroutines 1.4.0
Boa, vou trazer um material sobre o StateFlow, acho bem legal.
Um abraço.
Show
Muito bom como sempre. RXJava seria um dos meus próximos tópicos de estudo, provavelmente irei focar no Flow por enquanto, bem mais amigável. No entanto acredito que entender o RXJava seja indispensável para trabalhar com legado.
Sim Allysson, com certeza há vários projetos já desenvolvidos com RxJava. É importante também saber como ele funciona. Estou pensando em gravar um vídeo sobre ele também. Até porque pode ser requisito das empresas num futuro próximo a migração do RxJava para o Kotlin Flow :)
Valeu pelo comentário
@@DouglasMotta Show. Irei aguardar o seu vídeo.
Primeira vez que ouço falar....estou muito atrasado ?!
kkkkkk
Hehe, o Kotlin trouxe muitas possibilidades para o desenvolvimento Android, por isso as coisas estão evoluindo muito rápido. Por isso tento dar uma ajuda sobre esse updates aqui no canal :)
Abraço
foi mais fácil koin