Leticia top demais sua explicação de Clean Architecture, olha que já vi muitos vídeos e sempre parece que falta algo para entrar na cabeça, mais com sua explicação, muitas coisas ficaram claras, continue fazendo seus vídeos e ajudando a comunidade, sucesso sempre e parabéns !!!!!
Muito obrigada, Letícia. Ta me ajudando demais a entender sobre o assunto, Já tinha visto outros vídeos, mas nenhum foi tão legal quanto a sua abordagem . Parabéns, tu explica muuuito bem!
Belo conteúdo, Letícia. Mas não estou conseguindo rodar o Mocktail. Parece que mudou e a chamada não é essa: when(repository) .calls(#getSpaceMediaFromDate) .thenAnswer((_) async => Right(tSpaceMedia)); Eu uso o android Studio e flutter 2.0.6
Desculpa a demora!! Conseguiu resolver? No meio da série o mocktail mudou mesmo, no começo desse vídeo eu explico as diferenças: ruclips.net/video/ejFsMhgnQiA/видео.html
virei fã! Parabéns +1 inscrito. Sou velho de guerra no flutter, mas ainda não tinha parado pra aprender clean architecture, mas entrou um projeto com clean architecture na minha empresa e eu me vi obrigado a estudar (e eu gosto de estudar, principalmente aplicando em flutter que eu amo). E a sua metodologia é top! Vc é muitoooo didática. Não enrola, vai direto ao ponto, mostra a coisa aplicada com bons padrões, sinceramente só duas palavras pra vc: PARA Béns hehe
Muito obrigado! Consegui uma oportunidade com Flutter e tinha dificuldade de implementar TDD, pois só existiam cursos desatualizados (e sem null safety).
Muito bom esse vídeo, meu sonho já pegar o projeto com os testes de unidade já implementados, clean architecture é vida!! Parabéns pelo conteúdo de primeiro!!👏👏👏
Adorei demais esta aula Leticia!! Didática, código limpo, pronúncia linda do inglês hehe, e bastante calma pra ensinar!!! Ameiiii!! Poderia fazer um curso só disso, Clean Architecture do início ao fim com vários projetos diferentes. Eu compraria fácil teu curso!!! Agora uma pergunta: onde posso achar literatura pra isso aí (de preferência com Flutter ou Dart) e o porquê coisas como datasource estão dentro da pasta feature ?
Letícia, você explica muito bem, estou ansioso pra assistir os próximos vídeos! Eu to tentando fixar essa arquitetura na minha cabeça, mas sempre que eu parto pra implementar eu travo em alguma coisa, me perco... Como a maioria dos vídeos são muitos longos, fica difícil "se achar", eu acabo revendo tudo de novo e não saio disso! :( Desabafei! KKKK Solta esses vídeos menina, você é maravilhosa! E muito obrigado!!!
@@brenoverissimo3846 Sim Bruno! Vou dar umas dicas, escreva o que você precisa fazer em cada camada. Entenda o que a injeção de dependência faz e como funciona (tem relação com a abstração/interface) Outra coisa, nos testes, fica atento ao que está sendo testando e observe que o resto dos faz o mock. Isso me confundia também. Precisando, pode me procurar no LinkedIn. Boa sorte aí.
Olá Leticia, reitero meus parabéns a vc pelos vídeos! Gostaria de saber como vc implementaria a Usecase quando os Input constarem em mais de um parâmetro. Agradeço a ajuda!
Olá, o video é muito bom, a didática então, melhor ainda. Estou tentando escrever meus testes porém parece que o mockito não entende mais o método .calls em when, você poderia me ajudar numa substituição?
Muito boa a série, parabéns Voltei nesse vídeo pra tentar tirar uma dúvida na estrutura geral Se eu tenho uma entidade que seria usada por mais features, como eu faria? Por exemplo se eu tenho minha entidade usuário que de algum jeito é usado para pegar a imagem da nasa de outra feature
Parabéns pelo conteúdo, consegue explicar de uma forma simples e tranquila de entender, é disso que precisamos. Uma dúvida, porque eu preciso passar um repository por parâmetro para meu usecase na camada domain ?
Obrigada!! Para conseguir fazer inversão de dependências, você pode fazer em qualquer momento outra implementação para o repositório abstrato, por exemplo, e só passar pelo parâmetro sem mexer na implementação que foi feita antes, no último vídeo da série eu mostro como que faz isso ☺️
Ótimo vídeo! Uma dúvida: Em 20:18 criamos o UseCase mas e quando eu tenho mais de um input? Como faria? Exemplo: Tenho um CriarUsuarioUseCase() e para criar o usuário eu preciso de 3 parametros strings (nome, email e senha)... Como faria nesse caso? Oq é mais correto? Criar 1 modelo de request? mas se sim, esse modelo seria uma entidade? Tipo um CreateUserRequestEntity
Muito bom esse video. Eu tenho algumas dúvidas. Como fazer quando tenho mais de um feature no meu projecto e um feature precisa de alguma coisa desemvolvida em outro? Por essemplo, o token do feature authentication e nessesario para os otros features que chaman uma api. Obrigado!!
Obrigada! Normalmente coisas compartilhadas entre módulos eu coloco em um módulo chamado "core" ou eu deixo um módulo acessível ao outro, a nova versão do modular ajuda muito nisso. Meu próximo vídeo será sobre isso, eu estou fazendo um app de pokemon para exemplificar quando há mais de um módulo e a interação entre eles.
a pasta features no plural é onde cada parte do teu app deverá ser composto, por exemplo você terá a subpasta feature no singular, onde você desenvolveu uma funcionalidade do teu app, e agora você vai desenvolver uma nova feature para teu app, então você terá 2 features separadas dentro do teu app.
Obrigada! Eu uso a fonte Fira Code e habilito o fontLigatures, aqui tem as instruções pra instalar: github.com/tonsky/FiraCode/wiki/VS-Code-Instructions 😉 Quanto aos ícones eu uso o VSCode Great Icons
Muito bom o conteúdo, vou assistir toda a playlist. Só um detalhe que eu prefiro quando uso o verify no mocktail: verify(( ) => repository.myGetMethod(params)).called(1); Não sei se tem a ver com a versão do mocktail, pode ser que sim. Parabéns pelo conteúdo
obrigada pelo feedback! durante a gravação foi lançada uma versão nova do mocktail, nos vídeos seguintes eu comentei sobre isso e fiz a atualização. pretendo fazer uma playlist nova atualizando tudo do zero.
desculpa a demora em responder! Conseguiu resolver? No meio da série o mocktail mudou, no começo desse vídeo eu explico as diferenças: ruclips.net/video/ejFsMhgnQiA/видео.html
Eu quero trazer uma novidade que é o Triple, ele casa muito com o clean architecture. Mas mais pra frente posso trazer variações, até mesmo em questão de injeção de dependências posso mostrar o GetIt 😉 Obrigada pelas sugestões!
Adorei, muito bem feito, explicação de forma que qualquer pessoa, independente de seu nível de conhecimento, consiga entender. Pode até fazer um curso pago que eu compro com certeza. Parabéns pela iniciativa, ansioso pelos próximos vídeos. Já tem previsão de quando sai? 😊
Eu to mais acostumada com o Firebase e Hasura mesmo ou então eu consumo APIs que a equipe do backend faz. Não tenho muito conhecimento de backend ainda, mas quero me aprofundar no Shelf com Dart logo 😊
Parabéns pelos vídeos, qualidade excelente! Tenho uma dúvida quando temos um método "Save" por exemplo. Nele não esperamos retorno, então podemos escrever um teste desta forma? void main() { // Global Definitions //-----Main Objects late SaveDocumentUseCase usecase; late IDocumentRepository repository; //-----Arguments late DocumentEntity tArgument; //-----Either Return late Right tRightReturn; late Left tLeftReturn; // SetUp Test setUp(() { //-----Objects Initialization repository = DocumentRepositoryMock(); usecase = SaveDocumentUseCase(repository); tArgument = tDocument; tRightReturn = Right(Void()); // tRightReturn); //-----Act final result = await usecase.exec(tArgument); //-----Assert expect(result, tRightReturn); verify(() => repository.save(tArgument)).called(1); }, ); }
Obrigada pelo apoio!! Eu costumo criar uma entidade para responder com sucesso (SuccessEntity), tem casos que as pessoas retornam um booleano pra simbolizar o sucesso, ao invés de usar void.
Leticia top demais sua explicação de Clean Architecture, olha que já vi muitos vídeos e sempre parece que falta algo para entrar na cabeça, mais com sua explicação, muitas coisas ficaram claras, continue fazendo seus vídeos e ajudando a comunidade, sucesso sempre e parabéns !!!!!
Muito obrigada, Letícia. Ta me ajudando demais a entender sobre o assunto, Já tinha visto outros vídeos, mas nenhum foi tão legal quanto a sua abordagem . Parabéns, tu explica muuuito bem!
obrigada pelo feedback!!
Belo conteúdo, Letícia. Mas não estou conseguindo rodar o Mocktail. Parece que mudou e a chamada não é essa: when(repository)
.calls(#getSpaceMediaFromDate)
.thenAnswer((_) async => Right(tSpaceMedia));
Eu uso o android Studio e flutter 2.0.6
Desculpa a demora!! Conseguiu resolver? No meio da série o mocktail mudou mesmo, no começo desse vídeo eu explico as diferenças: ruclips.net/video/ejFsMhgnQiA/видео.html
Oh meu Deus, que lindeza!! Obrigado por compartilhar com a gente seu conhecimento. Ficou lindo demais!
virei fã! Parabéns +1 inscrito. Sou velho de guerra no flutter, mas ainda não tinha parado pra aprender clean architecture, mas entrou um projeto com clean architecture na minha empresa e eu me vi obrigado a estudar (e eu gosto de estudar, principalmente aplicando em flutter que eu amo). E a sua metodologia é top! Vc é muitoooo didática. Não enrola, vai direto ao ponto, mostra a coisa aplicada com bons padrões, sinceramente só duas palavras pra vc: PARA Béns hehe
obrigada pelo feedback!! 😃
Muito obrigado! Consegui uma oportunidade com Flutter e tinha dificuldade de implementar TDD, pois só existiam cursos desatualizados (e sem null safety).
Fico muito feliz em estar ajudando!
Mandou muito bem... Esses conceitos são a nata...
obrigada!! 🙏
só gostaria de parabeniza-la pelo projeto, espero que de muito certo para ti, ta sendo um trabalho incrível!
Obrigada!!
Mesmo desatualizada essa é a melhor playlist de clean architecture
obrigada!! 😃 pretendo fazer uma atualizada
@@lebaleiro opaaaaa, aguardando por isso
Fantástico! Foi a melhor aula que assisti até agora...já estava desistindo...
obrigada pelo feedback!!
Top! Que esse assunto venha ganhando forças! 👏🏼
Muito bom esse vídeo, meu sonho já pegar o projeto com os testes de unidade já implementados, clean architecture é vida!! Parabéns pelo conteúdo de primeiro!!👏👏👏
É lindo trabalhar em projetos com clean arch e testes! É outra vida mesmo! E obrigada pelo apoio 😊
Adorei demais esta aula Leticia!! Didática, código limpo, pronúncia linda do inglês hehe, e bastante calma pra ensinar!!! Ameiiii!!
Poderia fazer um curso só disso, Clean Architecture do início ao fim com vários projetos diferentes.
Eu compraria fácil teu curso!!!
Agora uma pergunta: onde posso achar literatura pra isso aí (de preferência com Flutter ou Dart) e o porquê coisas como datasource estão dentro da pasta feature ?
Muito obrigada 😊 Vou pensar com carinho nessa ideia!!
@@lebaleiro vai ser um marco porque acho que não tem curso nenhum com Flutter abordando Clean Architecture de forma tão completa do início ao fim.
Arrasou Letícia! Ficou excelente!
Muito obrigada 😁
Nossa, vey! Você explica tão bem.
obrigadaa!!!
Letícia, você explica muito bem, estou ansioso pra assistir os próximos vídeos! Eu to tentando fixar essa arquitetura na minha cabeça, mas sempre que eu parto pra implementar eu travo em alguma coisa, me perco... Como a maioria dos vídeos são muitos longos, fica difícil "se achar", eu acabo revendo tudo de novo e não saio disso! :( Desabafei! KKKK
Solta esses vídeos menina, você é maravilhosa! E muito obrigado!!!
Muito obrigada pelo apoio!! Espero ajudar 😊
e aí, euclides. Eu tô nessa mesma fase que tu tava aqui. Passou? hahaha
@@brenoverissimo3846 Sim Bruno! Vou dar umas dicas, escreva o que você precisa fazer em cada camada.
Entenda o que a injeção de dependência faz e como funciona (tem relação com a abstração/interface)
Outra coisa, nos testes, fica atento ao que está sendo testando e observe que o resto dos faz o mock. Isso me confundia também. Precisando, pode me procurar no LinkedIn. Boa sorte aí.
Muito didático, parabéns!
Obrigada!
Que legal obrigado por compartilhar o seu conhecimento!
obrigada pelo comentário!!
Olá Leticia, reitero meus parabéns a vc pelos vídeos! Gostaria de saber como vc implementaria a Usecase quando os Input constarem em mais de um parâmetro. Agradeço a ajuda!
Olá Wagner, obrigada! Você pode criar uma classe para o Input com quantos parâmetros forem necessários
brigadão pelo conteúdo! betinho aqui
Olá, o video é muito bom, a didática então, melhor ainda.
Estou tentando escrever meus testes porém parece que o mockito não entende mais o método .calls em when, você poderia me ajudar numa substituição?
Boa tarde. Estou com o mesmo problema
@@diegodesouzacastro consegui arrumar o problema amigo, quando eu chegar em casa te mando o código que usei
@@GXGamerReport Blz. Se puder eu agradeço bastante.
Eu percebi mesmo que mudou! No próximo vídeo (do datasource) já vou trazer a alteração!
@@GXGamerReport solta na roda ai ;-
Muito boa a série, parabéns
Voltei nesse vídeo pra tentar tirar uma dúvida na estrutura geral
Se eu tenho uma entidade que seria usada por mais features, como eu faria?
Por exemplo se eu tenho minha entidade usuário que de algum jeito é usado para pegar a imagem da nasa de outra feature
Me toquei do que eu tava errando no pensamento
Oie Leticia... Parabéns pelos seus videos.. ficaria melhor se vc disponibilizasse esse código pra nós estudarmos..
está aqui: github.com/LeBaleiro/nasa_clean_arch_null_safety
vou colocar na descrição de todos os vídeos também
Bom dia! Ótimo video!
Obrigada!!
Parabéns pelo conteúdo, consegue explicar de uma forma simples e tranquila de entender, é disso que precisamos. Uma dúvida, porque eu preciso passar um repository por parâmetro para meu usecase na camada domain ?
Obrigada!! Para conseguir fazer inversão de dependências, você pode fazer em qualquer momento outra implementação para o repositório abstrato, por exemplo, e só passar pelo parâmetro sem mexer na implementação que foi feita antes, no último vídeo da série eu mostro como que faz isso ☺️
@@lebaleiro obrigado 👏🏼👏🏼❤️❤️
Eu uso a metodologia Screaming Architecture criada pleo UncleBob. Uso no Spring e No flutterDart
Que legal! Você tem algum conteúdo pra me recomendar sobre?
Ótimo vídeo! Uma dúvida:
Em 20:18 criamos o UseCase mas e quando eu tenho mais de um input? Como faria?
Exemplo: Tenho um CriarUsuarioUseCase() e para criar o usuário eu preciso de 3 parametros strings (nome, email e senha)... Como faria nesse caso? Oq é mais correto? Criar 1 modelo de request? mas se sim, esse modelo seria uma entidade? Tipo um CreateUserRequestEntity
desculpa a demora em responder! sim, você pode criar uma entidade para essa request, CreateUserRequestEntity é uma ótima opção, ou SignUpInfoEntity
Muito bom esse video. Eu tenho algumas dúvidas. Como fazer quando tenho mais de um feature no meu projecto e um feature precisa de alguma coisa desemvolvida em outro? Por essemplo, o token do feature authentication e nessesario para os otros features que chaman uma api. Obrigado!!
Obrigada! Normalmente coisas compartilhadas entre módulos eu coloco em um módulo chamado "core" ou eu deixo um módulo acessível ao outro, a nova versão do modular ajuda muito nisso. Meu próximo vídeo será sobre isso, eu estou fazendo um app de pokemon para exemplificar quando há mais de um módulo e a interação entre eles.
Aula top! Poderia dar um exemplo do que representa a pasta features?
a pasta features no plural é onde cada parte do teu app deverá ser composto, por exemplo você terá a subpasta feature no singular, onde você desenvolveu uma funcionalidade do teu app, e agora você vai desenvolver uma nova feature para teu app, então você terá 2 features separadas dentro do teu app.
@aironsilva6452 obrigada por esclarecer a dúvida do @oseiasmrib , é isso mesmo que você falou
Parabéns Letícia, muito bom 👏🏻👏🏻no final vai disponibilizar o código no GH Pra tirarmos dúvidas de implementação?
Obrigada!! Vou sim 😉
Excelente vídeo! Só uma curiosidade, qual é a extensão q vc usa pra ter essa fonte ? 😃
Muito bacana mesmo, o tema inteiro! Queria saber qual é o tema de ícones tbm...
Obrigada! Eu uso a fonte Fira Code e habilito o fontLigatures, aqui tem as instruções pra instalar: github.com/tonsky/FiraCode/wiki/VS-Code-Instructions 😉 Quanto aos ícones eu uso o VSCode Great Icons
@@lebaleiro muito obrigado 🙏
Grato pela explicação
Eu que agradeço pela participação nos comentários!
to queimando neurônio para refatorar meu sistema para loteadoras adotando arquitetura limpa... to faznedo módulo a módulo, implementação em PHP 7.4...
E aí, deu certo? Me conta!
@@lebaleiro o sistema é bem grande, tem quase 120 módulos, ainda estou mais ou menos em 10% da refatoração...
Muito bom o conteúdo, vou assistir toda a playlist.
Só um detalhe que eu prefiro quando uso o verify no mocktail:
verify(( ) => repository.myGetMethod(params)).called(1);
Não sei se tem a ver com a versão do mocktail, pode ser que sim.
Parabéns pelo conteúdo
obrigada pelo feedback! durante a gravação foi lançada uma versão nova do mocktail, nos vídeos seguintes eu comentei sobre isso e fiz a atualização. pretendo fazer uma playlist nova atualizando tudo do zero.
Top d+, gostei muito, conteúdo de qualidade!!!! É muito melhor aprender com essa voz do que de um indiano falando o Inglês dele hehehe
hahahahaha obrigada pelo comentário!
Estou tendo problemas com essa função when() do minuto 43:18 não existe esse método .calls()
Alguém pode me ajudar pf ? valeuuu!!
desculpa a demora em responder! Conseguiu resolver? No meio da série o mocktail mudou, no começo desse vídeo eu explico as diferenças: ruclips.net/video/ejFsMhgnQiA/видео.html
Muito bom o vídeo! esta de parabéns :D
Obrigada!! 😊
Por favor, use o getx ou mobx, para gerenciar estado. E fica bastante na DI
Eu quero trazer uma novidade que é o Triple, ele casa muito com o clean architecture. Mas mais pra frente posso trazer variações, até mesmo em questão de injeção de dependências posso mostrar o GetIt 😉 Obrigada pelas sugestões!
@@lebaleiro pq não o getx?
@@petroniobonavides3530 acho que já tem bastante conteúdo sobre Getx na internet, quero trazer umas novidades
Belo vídeo, mais um inscrito! Uma dúvida, você disponibiliza esse código fonte em algum momento?
Obrigada! Seja muito bem-vindo ao canal!! Aqui está: github.com/LeBaleiro/nasa_clean_arch_null_safety
Adorei, muito bem feito, explicação de forma que qualquer pessoa, independente de seu nível de conhecimento, consiga entender. Pode até fazer um curso pago que eu compro com certeza. Parabéns pela iniciativa, ansioso pelos próximos vídeos. Já tem previsão de quando sai? 😊
Muitíssimo obrigada! Saiu hoje o terceiro! ruclips.net/video/5NEqLt4Ln6k/видео.html 😊
Vc sempre usa o firebase as backend, ou vc TB programa seus backends?
Eu to mais acostumada com o Firebase e Hasura mesmo ou então eu consumo APIs que a equipe do backend faz. Não tenho muito conhecimento de backend ainda, mas quero me aprofundar no Shelf com Dart logo 😊
@@lebaleiro ahhh e se for pro Back, clean architecture neles hahaha!
Parabéns pelos vídeos, qualidade excelente! Tenho uma dúvida quando temos um método "Save" por exemplo. Nele não esperamos retorno, então podemos escrever um teste desta forma?
void main() {
// Global Definitions
//-----Main Objects
late SaveDocumentUseCase usecase;
late IDocumentRepository repository;
//-----Arguments
late DocumentEntity tArgument;
//-----Either Return
late Right tRightReturn;
late Left tLeftReturn;
// SetUp Test
setUp(() {
//-----Objects Initialization
repository = DocumentRepositoryMock();
usecase = SaveDocumentUseCase(repository);
tArgument = tDocument;
tRightReturn = Right(Void()); // tRightReturn);
//-----Act
final result = await usecase.exec(tArgument);
//-----Assert
expect(result, tRightReturn);
verify(() => repository.save(tArgument)).called(1);
},
);
}
Obrigada pelo apoio!! Eu costumo criar uma entidade para responder com sucesso (SuccessEntity), tem casos que as pessoas retornam um booleano pra simbolizar o sucesso, ao invés de usar void.
Muito bom!
Obrigada!
aee sim!!!
Muito bom
Obrigada!
Ganho o inscrito
please make videos in English
I'll make soon 😊