Conteúdo valioso e gratuito pra galera, com qualidade de curso dos mais caros e bons! Pra quem ta começando: vai treinando toda essa estrutura que ele ensinou, porque é muito importante, atual e funcional. Com o tempo acaba sendo intuitivo demais. Valeu Alex, tu é o cara! nossa referencia! Eu fico até com curiosidade em como você aprendeu tanto (sendo que a maioria dos cursos, em Inglês mesmo, tem qualidade média). Abraços!
Saaalve, Newtyzito! Cara, fico muito feliz em como vc enxerga o valor do conteúdo! Porque foi um dos assuntos que levei um tempo para entender, praticar, testar e concluir os motivos para manter essa prática. Muito obrigado pelo incentivo, principalmente no reforço para que outras pessoas deem importância para o conteúdo! E acho que é isso que comentou, com o tempo, conforme a prática, vai ficando mais intuitivo. Vlw demais por todo apoio e consideração 😎 Quanto a parte de aprender, é trocando ideia com outros devs, é mostrando como faço, perguntando como fazem, tentando me expor quando vejo algo novo na documentação para entender se faz ou não sentido hehe
Salve Salve, Leo! Basicamente, só precisa conectar com um 'modelo' que geralmente seria um repositório. No vídeo de Room já tem um exemplo, mas, posso fazer um outro vídeo para formalizar o pattern.
Alex, que conteúdo show esse... curti demais o fluxo que tu adotou, foi alterando as peças e explicando junto. Compartilha depois o código fonte desse projeto, a visao final, se possível. Parabéns.
Salve, Giovani! Quando eu faço um mais focado, tento ir por essa linha e fico feliz que curtiu! Essa semana eu subo o código no github e mando aqui na resposta e deixo na descrição tbm! vlw pelo apoio!
Muito Top o conteúdo Alex, se eu puder fazer uma sugestão de conteúdo. Fala um pouco sobre responsividade, explicando um pouco como usar o WindowSizeClass! Vlw pelo conteúdo!!!
Até da um desanimo de ter que aprender essa estrutura. Acho muito complexo para a sua função mas infelizmente não tem o que fazer, com o tempo isso deve ficar mais claro e fácil. Parabéns pelo vídeo.
Inicialmente, eu tive uma sensação similar a sua, Antonio! Mas, com o tempo, praticando bastante, eu até que gosto dessa abordagem considerando o quanto ela facilita algumas coisas considerando a ideia de código reativo. Vlw pelo apoio!
Salve Marlon, tem aqui um exemple de como é feito com requisição HTTP ua-cam.com/video/rEnAbdixC2k/v-deo.html No geral, vc vai mexer mais no repositório mesmo, essa parte do UiState é focado em fazer a ponte do que vem do repositório, então, pode ser qualquer fonte de dados, desde que o repositório mantenha a mesma interface de comunicação durante a resposta
Ótimo video, Alex! Uma dúvida: em um app de produção, é aceitável "instanciar" o viewmodel no Composable? Não fica muito acoplado, pesado pra fazer o Preview ou pra testes unitários?
Salve Roberto! Primeiramente, muito obrigado pelo apoio nos membros! 😎 Da maneira como está, não, o ideal é seguir próximo do que é feito na configuração do navigation, neste vídeo mostra como deve ficar incluindo as boas práticas de configuração de navegação ua-cam.com/video/wLzEOD9p_oE/v-deo.html Fique à vontade para tirar dúvidas pontuais
Salve, Yuri! Não sei se entendi bem a sua dúvida, pois a ideia do init é que você já configure todos os eventos do estado que você não tem intenção de modificar. Agora, se a ideia é fazer essas configurações em algum outro momento em específico, ai sim, você vai precisar criar os métodos que deseja e colocar a configuração neles! O grande detalhe é usar a técnica de cópia para garantir que o estado seja mantido.
@@AlexFelipeDev O senhor entendeu perfeitamente a pergunta, professor! Obrigado pela ajuda, sua didática é INCRÍVEL, continue ensinado, pois é um prazer enorme aprender com o senhor
Excelente conteúdo, Alex! Como vc contrói o UIState para tela mais complexas? Por exemplo mantém o estado de loading e error numa mesma data class ou utiliza sealed class para representar cada um?
Para casos mais complexos eu costumo usar sealed class! Como comentou, estados que precisam ser compartilhados eu deixo como property da classe base, e as coisas exclusivas em cada um das variações do sealed class. Se fizer do jeito 'simples' (apenas declarando o sealed), ele dá muito mais trabalho do que ajuda, pois é meio chato de lidar com o casting... Mas tem técnicas para facilitar isso e talvez eu traga aqui no canal
Massa demais, gostaria muito de ver esse conteúdo. Parabéns pelo seu trabalho, te acompanho desde os tempos de Alura e suas aulas fizeram muita diferença pra minha jornada.
O Compose multiplatform já resolve a parte da aplicação mobile e desktop. Quanto a aplicação web, ainda não vi como o KMP está desempenhando, então acho que seria uma boa seguir com o React ou outro framework web mais maduro
@@koepeh tem sim, ou vc vai precisar implementar manualmente seguindo os guidelines da documentação, ou então, vai precisar usar libs, como por exemplo essa github.com/material-components/material-web/tree/main
Professor, uma outra duvida me surgiu. onGasolinaChange e onAlcoolChange poderiam ser implementados na classe AppUiState? Como por exemplo GasolinaEAlcool() ?
Salve, Yuri! De boas? Para esse padrão que é necessário fazer a cópia não. A única alternativa é fazer com que o próprio ViewModel tenha os métodos para alterar as properties do ui state a partir da cópia.
É exatamente isso, Antonio! Faz parte do processo! A única ausência seria em fazer a conexão com o Model que costuma ser um UseCase ou Repository. Tem vídeo aqui no canal mostrando sobre a conexão com repositórios, seria o de Room!
Top demais! lembra muito o Bloc do Flutter! Obrigado por compartilhar!
A ideia é similar mesmo
Conteúdo top, vlw demais tava perdido com a ideia e colocar tudo na viewModel
Boooooa, Jordan!
Conteúdo valioso e gratuito pra galera, com qualidade de curso dos mais caros e bons! Pra quem ta começando: vai treinando toda essa estrutura que ele ensinou, porque é muito importante, atual e funcional. Com o tempo acaba sendo intuitivo demais.
Valeu Alex, tu é o cara! nossa referencia!
Eu fico até com curiosidade em como você aprendeu tanto (sendo que a maioria dos cursos, em Inglês mesmo, tem qualidade média).
Abraços!
Saaalve, Newtyzito! Cara, fico muito feliz em como vc enxerga o valor do conteúdo! Porque foi um dos assuntos que levei um tempo para entender, praticar, testar e concluir os motivos para manter essa prática.
Muito obrigado pelo incentivo, principalmente no reforço para que outras pessoas deem importância para o conteúdo! E acho que é isso que comentou, com o tempo, conforme a prática, vai ficando mais intuitivo.
Vlw demais por todo apoio e consideração 😎
Quanto a parte de aprender, é trocando ideia com outros devs, é mostrando como faço, perguntando como fazem, tentando me expor quando vejo algo novo na documentação para entender se faz ou não sentido hehe
Cr muito bom, gostei muito, sou de web quero migrar, mas muita coisa nova em comparação com web
Vou acompanhar fielmente o canal de vdd hehe
Salve, Alex! Cara, desenvolver Apps android com técnicas modernas tem muita coisa legal! Só bora!
Perfeito, faz um app ensinando a arquitetura MVVM na pratica seria bom dms
Salve Salve, Leo! Basicamente, só precisa conectar com um 'modelo' que geralmente seria um repositório. No vídeo de Room já tem um exemplo, mas, posso fazer um outro vídeo para formalizar o pattern.
Alex, que conteúdo show esse... curti demais o fluxo que tu adotou, foi alterando as peças e explicando junto.
Compartilha depois o código fonte desse projeto, a visao final, se possível.
Parabéns.
Salve, Giovani! Quando eu faço um mais focado, tento ir por essa linha e fico feliz que curtiu! Essa semana eu subo o código no github e mando aqui na resposta e deixo na descrição tbm!
vlw pelo apoio!
Demorei mas tá aqui o código, Giovani! github.com/alexfelipe/alcool-ou-gasolina/commit/0495eb6edcecc0701c7a5ad44ee8692f7936ccf6
Muito Top o conteúdo Alex, se eu puder fazer uma sugestão de conteúdo. Fala um pouco sobre responsividade, explicando um pouco como usar o WindowSizeClass!
Vlw pelo conteúdo!!!
Salve, Lucas! Me parece um tema show! Eu vou considerar sim!
@@AlexFelipeDev massa vou ficar acompanhando pra quando sair kkkkk
@@lucassantana2364 qualquer coisa, vai lá no discord e vamos trocando ideia enquanto não produzo o video
@@AlexFelipeDev Entrando agora kkkk
Até da um desanimo de ter que aprender essa estrutura. Acho muito complexo para a sua função mas infelizmente não tem o que fazer, com o tempo isso deve ficar mais claro e fácil. Parabéns pelo vídeo.
Inicialmente, eu tive uma sensação similar a sua, Antonio! Mas, com o tempo, praticando bastante, eu até que gosto dessa abordagem considerando o quanto ela facilita algumas coisas considerando a ideia de código reativo.
Vlw pelo apoio!
Esses videos sobre gerenciamento de estado, arquitetura são melhores, o gerenciamento de estado com jetpack é bem mais complicado de entender
Boa! Se possível, lança um video com o memsmo exemplo só que utilizando uma api qualquer, caso ja tenha, me fala o nome do video.
Salve Marlon, tem aqui um exemple de como é feito com requisição HTTP ua-cam.com/video/rEnAbdixC2k/v-deo.html
No geral, vc vai mexer mais no repositório mesmo, essa parte do UiState é focado em fazer a ponte do que vem do repositório, então, pode ser qualquer fonte de dados, desde que o repositório mantenha a mesma interface de comunicação durante a resposta
Video muito bom!! Faz um de paggin 3.0 com o compose ? 🥺
Oi Sthephanie! Posso considerar, sim!
Ótimo video, Alex! Uma dúvida: em um app de produção, é aceitável "instanciar" o viewmodel no Composable? Não fica muito acoplado, pesado pra fazer o Preview ou pra testes unitários?
Salve Roberto! Primeiramente, muito obrigado pelo apoio nos membros! 😎
Da maneira como está, não, o ideal é seguir próximo do que é feito na configuração do navigation, neste vídeo mostra como deve ficar incluindo as boas práticas de configuração de navegação
ua-cam.com/video/wLzEOD9p_oE/v-deo.html
Fique à vontade para tirar dúvidas pontuais
Professor, mas em casos em que a gente não vai utilizar o init, deveremos então criar funções separadas para cada método do presente no UiState?
Salve, Yuri! Não sei se entendi bem a sua dúvida, pois a ideia do init é que você já configure todos os eventos do estado que você não tem intenção de modificar.
Agora, se a ideia é fazer essas configurações em algum outro momento em específico, ai sim, você vai precisar criar os métodos que deseja e colocar a configuração neles! O grande detalhe é usar a técnica de cópia para garantir que o estado seja mantido.
@@AlexFelipeDev O senhor entendeu perfeitamente a pergunta, professor! Obrigado pela ajuda, sua didática é INCRÍVEL, continue ensinado, pois é um prazer enorme aprender com o senhor
Excelente conteúdo, Alex!
Como vc contrói o UIState para tela mais complexas?
Por exemplo mantém o estado de loading e error numa mesma data class ou utiliza sealed class para representar cada um?
Para casos mais complexos eu costumo usar sealed class!
Como comentou, estados que precisam ser compartilhados eu deixo como property da classe base, e as coisas exclusivas em cada um das variações do sealed class.
Se fizer do jeito 'simples' (apenas declarando o sealed), ele dá muito mais trabalho do que ajuda, pois é meio chato de lidar com o casting... Mas tem técnicas para facilitar isso e talvez eu traga aqui no canal
Massa demais, gostaria muito de ver esse conteúdo.
Parabéns pelo seu trabalho, te acompanho desde os tempos de Alura e suas aulas fizeram muita diferença pra minha jornada.
Jetpack compose + Compose Desktop ou React pra um app Web, Mobile e Desktop?
O Compose multiplatform já resolve a parte da aplicação mobile e desktop. Quanto a aplicação web, ainda não vi como o KMP está desempenhando, então acho que seria uma boa seguir com o React ou outro framework web mais maduro
@@AlexFelipeDev Tem como desenvolver um app React com material design 3?
@@koepeh tem sim, ou vc vai precisar implementar manualmente seguindo os guidelines da documentação, ou então, vai precisar usar libs, como por exemplo essa github.com/material-components/material-web/tree/main
Professor, uma outra duvida me surgiu. onGasolinaChange e onAlcoolChange poderiam ser implementados na classe AppUiState? Como por exemplo GasolinaEAlcool() ?
Salve, Yuri! De boas? Para esse padrão que é necessário fazer a cópia não. A única alternativa é fazer com que o próprio ViewModel tenha os métodos para alterar as properties do ui state a partir da cópia.
Professor, por acaso com essa questão do ViewModel ela se entrelaça com os conceitos de MVVM?
É exatamente isso, Antonio! Faz parte do processo! A única ausência seria em fazer a conexão com o Model que costuma ser um UseCase ou Repository. Tem vídeo aqui no canal mostrando sobre a conexão com repositórios, seria o de Room!
top