Guia Definitivo de BLoC no Flutter 2022

Поделиться
HTML-код
  • Опубликовано: 21 окт 2024

Комментарии • 131

  • @_ir4ever_
    @_ir4ever_ Год назад +23

    Gostei muito da aula, a única coisa que sempre me incomoda nas aulas do youtube é vcs falarem: "poderíamos fazer isso" e n fazer, ainda mais pra exemplos reais q acontecem muito como a questão de error e loading. Não me importo que aula mude de 35min pra 1h se eu terei todo o conhecimento necessário ali pra fazer algo bem feito.

    • @williamcraftart2582
      @williamcraftart2582 6 месяцев назад +3

      Entendo sua questão, porém, se faz vídeos de uma hora, muitos não irão ver, consequentemente o engajamento cai, logo o RUclips não entrega, sendo assim, desanima o criador e por isso não rola fazer

  • @Retr0w
    @Retr0w Месяц назад

    Bom demais! Deu pra entender perfeitamente, professor! O complicado é achar vaga de Flutter pra Júnior kakakaka

  • @ViniciusMARTINS-q8l
    @ViniciusMARTINS-q8l Месяц назад

    Muito bom, agora só preciso assistir mais 5 vezes. =)

  • @JoaoPaulo-iu2xl
    @JoaoPaulo-iu2xl 2 года назад +3

    Que aula! Já trabalho com flutter_bloc, mas ver implementação de bloc puro, depois só com packge bloc até chegar no bloc com flutter_bloc foi muito bom.

  • @KuroManX
    @KuroManX 2 года назад +12

    Pude rever a aula com calma e essa abordagem de ensinar o Bloc sem nenhum package, só no conceito foi um divisor de águas no meu entendimento do padrão, muito obrigado professor, vou sim estudar mais sobre esse padrão que é tão requisitado pelas empresas.

    • @drantunes
      @drantunes  2 года назад +1

      Obrigado pelo comentário Rafael!!!! É a melhor coisa mesmo, tentar entender como estes padrões funcionam, pois no fundo os packages geralmente são abstrações ou implementações deles 👍

    • @swplogic4158
      @swplogic4158 2 года назад

      Bloc é o melhor gerenciador de estado que existe até o momento!

  • @glhrme8678
    @glhrme8678 5 месяцев назад +1

    Sou dev IOS nativo mas também trabalhei com React e RN por 3 anos e apareceu um app para dar manutenção de um cliente em Flutter e tô dando uma estudada. Mas na boa, me parece um bagui de maluco, complexidade gigantesca pra fazer para implementar um CRUD básico.
    Código verboso demais, um role enorme.

    • @drantunes
      @drantunes  5 месяцев назад

      Dependendo do projeto será verboso sim, mas pode ser mais funcional se quiser ;)

    • @TheMathues123
      @TheMathues123 2 месяца назад

      tive a mesma impressão estudando flutter, uma cacetada de código pra fazer algo básico

  • @matheusmedeiros7533
    @matheusmedeiros7533 2 года назад +8

    Caraca ai sim tava precisando dessa aula na empresa que estou atualmente la é bloc e tava precisando de conteudo atualizado! vc é fera professor. Obrigado!!!

    • @drantunes
      @drantunes  2 года назад

      Valeu Matheus!!! Sucesso na sua empresa aí!!! 🚀

  • @Alissonsk1
    @Alissonsk1 2 года назад +14

    Muito bom, aguardando um guia de getx também, like!

    • @adrianomilhomens
      @adrianomilhomens 2 года назад

      @Alisson Araujo, sei que já há 1 ano desde a publicação, mas é um ótimo conteúdo e ainda muito relevante: Gerenciamento de Estado no Flutter com GetX e Provider - ruclips.net/video/OTBR40yevG4/видео.html

  • @fabioftth
    @fabioftth Год назад

    Enfim encontrei a aula certa... eu tinha certeza que com o Diego ficaria facil entender esse assunto!

    • @drantunes
      @drantunes  Год назад +1

      Que bom que ajudou!! Grande abraço!

  • @Adoracion-Alabanza
    @Adoracion-Alabanza 2 года назад +1

    Entendi BLoC muchisimas gracias Profesor!!!

  • @antoniomarcos-rosa
    @antoniomarcos-rosa Год назад +1

    Parabéns pelo conteúdo, é muito bom para a comunidade ter acesso a aulas tão objetivas.

  • @ExpirionGamer
    @ExpirionGamer 2 года назад +2

    Muito obrigado por essa aula, professor. O senhor é muito didático, comecei essa semana uma vaga de estagiário em desenvolvimento flutter e na empresa eles usam Bloc, e eu to bastante perdido lkkkkkk, obrigado por me ajudar a ter uma luz.

    • @drantunes
      @drantunes  2 года назад

      Valeu 👍 vai conseguir pegar logo!!!!

  • @JoaoVictor-im3pe
    @JoaoVictor-im3pe 2 года назад +2

    Geralmente n uso classe que estende um estado genérico, eu crio uma classe coloco as variáveis dentro e um método copyWith, na minha cabeça fica mais organizado e mais fácil de trabalhar.

  • @Cecilxb3
    @Cecilxb3 2 года назад +1

    Sua didática é 10!

  • @KuroManX
    @KuroManX 2 года назад +2

    Que coincidência boa, comecei ontem a fazer o curso de Bloc do Flutterly e esse conteúdo mais atualizado e em português vai me ajudar muito!

    • @KuroManX
      @KuroManX 2 года назад

      Aproveitando, qual o nome dessa extensão que faz você criar o arquivo direto do command palett no vscode?

    • @drantunes
      @drantunes  2 года назад +1

      Valeu Rafael! Bons estudos aí 👍

    • @drantunes
      @drantunes  2 года назад +1

      @@KuroManX Advanced New File 😉

  • @williamcardoso1181
    @williamcardoso1181 Год назад

    Aula sensacional

  • @if_th4nr634
    @if_th4nr634 Год назад +1

    sensacional

  • @stroherdebora
    @stroherdebora 2 года назад +1

    Obrigada professor!!! Sanou diversas dúvidas!

    • @drantunes
      @drantunes  2 года назад

      Valeu Debora 👍😎

  • @saintclairjunior
    @saintclairjunior 2 года назад

    excelente conteudo, eu tenho preguiça de gerenciamento de estado, mas a forma que explicou me fez interessar, preciso me aprimorar nesse sentido, agradeço e vou usar o conhecimento

    • @drantunes
      @drantunes  2 года назад

      Espero ter ajudado!! Desejo sucesso !!

  • @charless.9139
    @charless.9139 2 года назад +1

    Obrigado pelo vídeo. Foi bem didático !

  • @MangekyouGui
    @MangekyouGui 2 года назад +1

    Muito bacana esse material. Parabéns! Ficou bem didático.

    • @drantunes
      @drantunes  2 года назад

      Valeu Guilherme 👍🙏

  • @willianmascimiano
    @willianmascimiano Год назад +1

    Top demais

  • @SCORPIONPR
    @SCORPIONPR 2 года назад

    Explicou de um jeito super simples que eu entendi, muito obrigadoo

  • @nordao1
    @nordao1 2 года назад +2

    Parabéns, excelente aula e didática!

  • @pedrogiamarco1449
    @pedrogiamarco1449 Год назад

    Era tudo o que eu estava precisando cara kk, ótima aborgagem, deu pra entender tudo, muito obrigado!!

  • @lLuccas-programming
    @lLuccas-programming Год назад

    Obrigado, professor.

  • @jacksonmonteiro4658
    @jacksonmonteiro4658 Год назад

    Ótima a aula, estava preso tentando entender melhor sobre BloC, mas ainda ficou uma dúvida no ar para mim. Como faria caso precisasse utilizar mais de um BloC na aplicação, ou uma aplicação com múltiplas telas e diferentes BloC para cada tela trabalhando em conjunto?

    • @drantunes
      @drantunes  Год назад +1

      Terá mais BLoCs e usara o provider para gerenciar as dependências

  • @rdrgbaioco
    @rdrgbaioco 2 года назад

    Se aprender é massa, com professor fica melhor ainda, parabéns pelo conteúdo!

    • @drantunes
      @drantunes  2 года назад +1

      Muito obrigado Rodrigo! E bom estudo 🚀

    • @rdrgbaioco
      @rdrgbaioco 2 года назад

      @@drantunes Professor, poderia trazer mais conteudos sobre banco de dados e drift, coisas tipo como exportar depois de salvo, etc

    • @drantunes
      @drantunes  2 года назад +1

      @@rdrgbaioco Vou pensar aqui em algumas formas de abordar o tema!!!

  • @alexbleiva
    @alexbleiva 7 месяцев назад

    muito bom... obrigado pela excelente explicação

  • @odnumiar
    @odnumiar 2 года назад

    Ótima abordagem e didática. Obrigado professor.

  • @rrrovalle
    @rrrovalle 2 года назад

    Boa! É isso que tava faltando

    • @drantunes
      @drantunes  2 года назад

      Valeu Rodrigo 👍😎

  • @oseiasmrib
    @oseiasmrib 7 месяцев назад

    Faz uma aula ensinando como usar Flutter_bloc para atualizar dados entre telas usando navegação com push e pop. Tipo, da tela A mando um Id para tela B, que por sua vez chama e constrói um bloc state com os dados do usuário. Sempre tenho problemas do estado vir desatualizado e as vezes repetir varias vezes.

    • @drantunes
      @drantunes  7 месяцев назад +1

      Obrigado pela sugestão!

  • @ReinaldoNeto7
    @ReinaldoNeto7 2 года назад

    top prof 🔝🔝🔝

  • @naplanilha
    @naplanilha 5 месяцев назад

    Olá prof. Diego, tudo bem? O Signal seria um substituto adequado para o BLoC? Entendo que é importante visto organização e também por se tratar de um padrão, porém achei pouco produtivo em termos de quantidade de arquivos e classes criadas. Existe alternativa menos complexa e com potencial de benefícios similar? Ou seria esta a melhor prática de mercado?

    • @drantunes
      @drantunes  5 месяцев назад

      Pode ser um substituto sim, mas os signals são apenas a reatividade... neste caso, você precisa estabelecer um padrão para a interface. O BLoC te dá isso ;)

    • @drantunes
      @drantunes  5 месяцев назад

      Sobre mercado varia de cada empresa... o BLoC é mais usado muito por ser o mais antigo... Tem também o combo ChangeNotifier + Provider, MobX ou Riverpod.

  • @leandropilz7996
    @leandropilz7996 Год назад

    Uma pergunta Diego, bloc é sempre vinculado a uma tela, ou seja reaproveitamento de bloc/cubit para telas distintas poderia ser uma boa prática???

    • @drantunes
      @drantunes  Год назад +1

      Na prática o pessoal geralmente cria um por tela ou por feature. Mas nada impede de você ter um bloc que seja usado em várias telas. A questão principal é ter os eventos como input e um state como output.

  • @juniorgutekoski6582
    @juniorgutekoski6582 2 года назад

    muito top a aula, entendi bastante sobre o bloc. Tenho uma dúvida, sobre os estados de error e loading, o chaveamento seria na view mesmo ou posso criar tipo uma viewController para gerenciar esses estados e deixar a view somente como view sem logica.

    • @drantunes
      @drantunes  2 года назад +1

      Pode fazer direto na View com o BlocBuilder 👍

    • @juniorgutekoski6582
      @juniorgutekoski6582 2 года назад

      @@drantunes massa, obrigado por responder:)

  • @danielaraujo5857
    @danielaraujo5857 Год назад

    professor, uma duvida simples, no minuto 32:34 o seu vscode fechou as chaves {} automaticamente é um plugin ou configuração do vscode?

    • @drantunes
      @drantunes  Год назад

      Era um plugin: autoclose brackets senão me engano

  • @andreimoreira8373
    @andreimoreira8373 2 года назад

    Conteúdo Bacana, o que vc acha da extensão Equatable com o bloc ?

    • @drantunes
      @drantunes  2 года назад

      Valeu! Não vejo vantagem em utilizar, acredito que faça mais sentido com Entities e Models 👍

  • @lucas-op6bx
    @lucas-op6bx 2 года назад

    Ótimo vídeo! Deu pra sacar bastante essa parade de block aí...
    Aliás, alguém sabe o nome da extensão que mostra os erros direto na linha? Igual do professor

  • @brisson4993
    @brisson4993 2 года назад

    Eu to começando com o Flutter agora, e adorei essa IDE.
    Alguém poderia me dizer qual ele ta usando?

    • @drantunes
      @drantunes  2 года назад

      Estou usando o VSCode mesmo!

    • @brisson4993
      @brisson4993 2 года назад

      Obrigado, @@drantunes.
      Eu olhei alguns de seus vídeos e acabei achando um que você mostra suas extensões.
      Agora estou com o ambiente parecido com o seu c:

  • @fabiovalinhos
    @fabiovalinhos Год назад

    Diego vc não tem o projeto inicial no git para codar acompanhando o tutorial?

    • @drantunes
      @drantunes  Год назад +1

      Projeto inicial não, mas pode pegar pelo histórico no git

    • @fabiovalinhos
      @fabiovalinhos Год назад

      ​@@drantunes foi mais ou menos o que eu fiz.
      No git tem apenas 1 commit, então imaginei que vc mandou o projeto pronto. Nao tinha histórico.
      Para voltar ao início eu apaguei a pasta bloc/ e deu para refazer a clients_page através do vídeo.
      grato

  • @ramon-dev
    @ramon-dev 7 месяцев назад

    Qual modelo vc acha mais interessante de trabalhar o Bloc ou o MVVM?

    • @drantunes
      @drantunes  7 месяцев назад

      Depende do projeto, mas mvvm funciona bem no mobile

  • @ggcedicoes6599
    @ggcedicoes6599 7 месяцев назад

    Professor, se os dados viessem de uma API externa, ao adicionar um cliente a lista seria automaticamente atualizada ou teria que fazer um novo load? E se sim qual a melhor forma de fazer isso?

    • @drantunes
      @drantunes  7 месяцев назад

      A forma tradicional de fazer seria um novo loading, mas a melhor estratégia é usar um cache em memória dos dados (e.g. em uma lista). Assim, você mostra um loading para o cliente e após sucesso na API, você salva apenas o dado inserido na lista.

  • @ig0rtiz
    @ig0rtiz 2 года назад

    valeu!

  • @EdsonVanderlei-p7e
    @EdsonVanderlei-p7e 10 месяцев назад

    Olá professor, tudo joia ?
    Caso eu esteja usando o Bloc junto do get it, onde tenho um fluxo e desejo fazer o dispose dele no final desse fluxo, por exemplo um onboarding ou cadastro.
    Instanciaria como uma factory e daria o dispose do Bloc na ultima tela do fluxo ?
    Como funcionaria ?
    Outra dúvida, caso eu use um Bloc por toda aplicação, qual seria a melhor de formar de dar um dispose geral em todas blocs, ao fazer Log Out.

    • @drantunes
      @drantunes  10 месяцев назад

      Você pode criar uma widget na raiz para cuidar dessas dependências. No dispose da widget você pode fazer o dispose dos blocs

    • @EdsonVanderlei-p7e
      @EdsonVanderlei-p7e 10 месяцев назад

      @@drantunes Professor surgiu outra dúvida, não há como ter mais de uma property em um state do bloc, por exemplo endereço, dados pessoais, onde cada um seria complementado em duas telas diferentes eu teria que criar um bloc para cada ?
      Ou tem alguma abordagem para manter elas juntar em "Bloc Person" com copywith ou algo semelhante

    • @drantunes
      @drantunes  10 месяцев назад

      @@EdsonVanderlei-p7e sim, cria um bloc que contem um objeto User por exemplo como dados.

    • @EdsonVanderlei-p7e
      @EdsonVanderlei-p7e 10 месяцев назад

      @@drantunes por exemplo dentro deste user contém Address and Contact que serão pegos em pages diferentes.
      Como seria a abordagem ?

  • @peppokkk
    @peppokkk 8 месяцев назад

    Poxa eu não consegui acompanhar, o vídeo já começou com algumas partes dos códigos já prontos e eu não consegui ver. Eu estava conseguindo acompanhar melhor quando pegava pra fazer do zero na hora :(

  • @teteutheys3366
    @teteutheys3366 2 года назад +1

    Professor, teria como disponibilizar o codigo utilizado no video? Para dá uma estudada no padrão, pois ele possui tantas caracteristicas que a gente acaba se perdendo kkkkk

    • @drantunes
      @drantunes  2 года назад

      Vou colocar na descrição 👍

  • @quicksketch1617
    @quicksketch1617 2 года назад

    Estava revendo e fiquei pensando na parte que você falou de captura de erro, eu não faço ideia de como aplicar, seria chamar um evento de erro no lugar de um [ ] vazio do snapshot? minuto 22:47

    • @drantunes
      @drantunes  2 года назад

      Você poderia criar um novo state de erro. Quando esse erro ocorrer, o BLoC irá enviar o state de erro para a view. E lá você faz o tratamento, por exemplo, mostrando alguma mensagem com o erro 👍

    • @quicksketch1617
      @quicksketch1617 2 года назад

      @@drantunes O que fica meio abstrato pra mim, é que eu não vi nada sendo retornado em ClientSuccessState, se fosse criar da mesma forma, eu não saberia como criar, o que colocar. Não é a estrutura, é o que colocar na função, eu nunca sei. No mapEvent passa um evento de erro também no else if e depois um output com erro?

  • @thimor
    @thimor 2 года назад

    Olá, uma duvida, aos 12:25 você fala que o código da linha quatro pegaria usando provider. Da para pegar uma instancia do provider de fora de um widget? pq nesse caso de onde viria a instancia do BuildContext para fazer o Provider.of(context) ?

    • @drantunes
      @drantunes  2 года назад +1

      Se você executar o Provider no runApp você consegue fazer isso 👍. Caso contrário, sem o context, você precisaria de alguma solução que não utiliza o BuildContext. Também, se for um app mais simples, você poderia usar o ClientRepository como um singleton

  • @williamcardoso1181
    @williamcardoso1181 Год назад

    Ainda tenho duvida quando tenho de tratar com dois provedores: imagina que eu tenha que carregar uma lista de clientes e uma lista de carros. E alguns componentes precisam verificar ambos os loadings das duas operações, que ao meu ver poderiam ser dois blocs. Como proceder? fico em duvida

    • @drantunes
      @drantunes  Год назад +1

      Precisa pensar na modelagem dos dados. Se há um relacionamento de clientes e carros, e você precisa desta informação, pode criar um repositório que agregue esses dados. Pense nos estados do BLoC como "fotos" da sua tela em diferentes momentos (sem dados, carregando, com dados, com erro, etc). Como os dados serão modelados, estruturados e carregados serão de responsabilidade de outra classe ou camada ;)

    • @williamcardoso1181
      @williamcardoso1181 Год назад

      @@drantunes muito obrigado!

  • @brunoabreu10
    @brunoabreu10 2 года назад

    Adêdê?

  • @antoniomanoel2873
    @antoniomanoel2873 2 года назад

    entendi mas na hora de usar me embanano todo, dá um nó na cabeça.

  • @rodrigocardosoantonio7420
    @rodrigocardosoantonio7420 11 дней назад

    Bloc funciona com geranciador de estado global ?

    • @drantunes
      @drantunes  10 дней назад

      Pode funcionar, mas não é o recomendado pela abordagem.

  • @BernardoVerasDev
    @BernardoVerasDev 2 года назад

    Eu utilizo GetX nas minhas aplicações porém várias pessoas falam que o BLoC é melhor para se trabalhar em app’s grande. Isso procede?

    • @drantunes
      @drantunes  2 года назад

      As empresas utilizam mais o BLoC ou outras abordagens que são padrões como MobX e Redux.

  • @sergiowmuller
    @sergiowmuller 2 года назад

    mto bom

  • @Pedro5antos_
    @Pedro5antos_ Год назад

    Showww!

  • @AdeilsonTube
    @AdeilsonTube 2 года назад

    que massa

  • @adrianomilhomens
    @adrianomilhomens 2 года назад

    Tenho uma limitação, que acredito ser de ordem psicológica, muito grande em entender bloc. Honestamente não me sinto confortável. Já tentei de diversas maneira me dar a chance de entender melhor mais parece que a cada vez, só complica!

    • @drantunes
      @drantunes  2 года назад +1

      A forma mais simples de entender o conceito é que ao invés de você manipular uma variável (state), por exemplo, um counter, você irá enviar continuamente um State (dentro desse state você pode ter propriedades, como o counter). Como é utilizada uma stream para enviar os dados de forma contínua, é importante ter outros states como um InitialState. As operações neste state também não são diretas, mas por meio de eventos (IncrementCounter, DecrementCounter, etc). State e Event são classes e, dentro delas, é que você irá realizar as operações. Espero ter ajudado

  • @_drumering
    @_drumering 2 года назад

    Finalmente consegui parar pra assistir! Parabéns! Tem alguma forma de ter essas aulas na UTFPR?

    • @drantunes
      @drantunes  2 года назад +1

      Obrigado Anderson!!! As aulas na universidade são apenas para os alunos. Por isso criei este canal pessoal: para levar ao público também conhecimentos sobre Flutter 👍. Você está procurando um curso sobre Flutter?

    • @_drumering
      @_drumering 2 года назад

      @@drantunes Isso! Há algum curso na faculdade que aborde flutter?

    • @drantunes
      @drantunes  2 года назад +1

      @@_drumering Bacharelado em Ciência da Computação e Analise e Desencolvimento de Sistemas, na disciplina de Programação de Dispositivos Móveis 👍

    • @_drumering
      @_drumering 2 года назад

      @@drantunes Achei que houvesse alguma pós relacionada. Há algum curso que recomende? No mais vou maratonar mais seus vídeos, parabéns pela didática!

    • @drantunes
      @drantunes  2 года назад +1

      @@_drumering Obrigado! Fica de olho aqui no canal que assim que lançar cursos particulares irei avisar aqui no canal 👍

  • @cledilsonprogramador
    @cledilsonprogramador 2 года назад

    um bloc pode ser instanciado dentro de uma função estática? estou tendo um erro ao tentar fazer isso...

    • @drantunes
      @drantunes  2 года назад

      Não deveria dar problema, pois é uma instância como qualquer outra...

    • @cledilsonprogramador
      @cledilsonprogramador 2 года назад

      @@drantunes estava usando o bloc pattern professor, ele fiz que esse meu bloc não está na árvore de Widgets tentando instanciar ele em uma função estática

    • @cledilsonprogramador
      @cledilsonprogramador 2 года назад

      E ele está declarado antes do material

    • @drantunes
      @drantunes  2 года назад

      @@cledilsonprogramador Não deveria dar erro de toda forma, a menos que você esteja usando alguma widget que precise do context (neste caso você não o teria mesmo na árvore). O que pode fazer é definir uma variável const para esse bloc e compartilhar ele via import.

  • @thiagochristian6199
    @thiagochristian6199 2 года назад

    Aos 26:30 minutos começa a falar das dependencias

  • @ivensauro
    @ivensauro 2 года назад

    gank da flutterando

  • @quicksketch1617
    @quicksketch1617 2 года назад

    👏👏👏👏

  • @nezabarom1816
    @nezabarom1816 2 года назад

    emit() mb?

    • @drantunes
      @drantunes  2 года назад

      Não entendi sua dúvida ...

  • @marcioborges2567
    @marcioborges2567 6 месяцев назад

    Aula excelente, porém a arquitetura de bloc se utiliza de muitas classes... escreve muito.

  • @momentslive5697
    @momentslive5697 2 года назад

    Bem complexo o entendimento do bloc, mostrando a arquitetura e depois a explicação acredito que seria mais facil compartilhar o conhecimento, mas de qualquer maneira parabéns pela didática.

  • @DiegoRodrigues06
    @DiegoRodrigues06 2 года назад

    Credo cheiro do quase falecido redux