Flutter: Por que o setState pode ser ruim? Dica de Performance no Flutter

Поділитися
Вставка
  • Опубліковано 11 лис 2024

КОМЕНТАРІ • 56

  • @felipewitezak9130
    @felipewitezak9130 2 роки тому +11

    Essa deveria ser a aula 2 de qualquer curso de Flutter.
    Pessoal explica variável, função, mas quando o aluno vai fazer o projeto nada funciona.
    Ai tu descobre que tem que mexer o "estado" das coisas. Parabéns professor!

    • @drantunes
      @drantunes  2 роки тому +1

      Obrigado Felipe 👍🚀

  • @ToshiOssada
    @ToshiOssada 2 роки тому +11

    so um adendo, o widget é recriado entretanto o render tree é reaproveitado se não houver alteração, entao não há desperdício de recurso e usar o setState é safe (olhando especificamente para esse ponto)

    • @empreendimentosagroindustr7435
      @empreendimentosagroindustr7435 Рік тому

      Então, por que não usar o "setstate" se não há problema de recursos?

    • @ToshiOssada
      @ToshiOssada Рік тому +3

      @@empreendimentosagroindustr7435 questão de organização de código e separação de responsabilidade

    • @ToshiOssada
      @ToshiOssada Рік тому +4

      @@empreendimentosagroindustr7435 O problema que muitas das vezes você possui uma regra de negocio para realizar a alteração do estado e nao fica legal colocar essa regra dentro do widget, dai fica melhor você criar uma controller por exemplo, dai que entra a escolha de um gerenciador de estado

    • @DieffersonSantosMusic
      @DieffersonSantosMusic 9 місяців тому +1

      So tem motivo de usar streams ou outras arquiteturas para dados complexos, assyncronos. Pra gerenciar coisa besta de UI como estado de formularios o setState do Flutter é a mellhor opcao

  • @fabioftth
    @fabioftth 6 місяців тому

    Show de aula como sempre 🎉

  • @fabioftth
    @fabioftth 6 місяців тому

    Ele recria toda a tela mesmo sem ter alteração. Entendi professor.

  • @alexandremarques186
    @alexandremarques186 Рік тому

    show, cara. muito obrigado pelo o conteudo.

  • @danielmtdc
    @danielmtdc Рік тому +1

    Excelente!! Muito obrigado, professor. É muito bom ter essas dicas para melhorar cada vez mais.

  • @joselanyfrancisco2924
    @joselanyfrancisco2924 2 роки тому +2

    Até parece que o Professor fica ouvindo as minhas necessidades. Obrigado🔥🔥

  • @josesoaresSoares
    @josesoaresSoares Рік тому

    Parabens Teacher!

  • @ubirajaramoura3741
    @ubirajaramoura3741 2 роки тому

    Mais uma Ótima explicação.
    Parabéns.

  • @BryanGamesBr
    @BryanGamesBr 2 роки тому

    Esse professor é show!

  • @eduardospek
    @eduardospek 2 роки тому

    Gratidão professor!
    Ótimas aulas!
    👊🏽😎

  • @sergiowmuller
    @sergiowmuller 2 роки тому

    muito bom como sempre,

  • @rede_neural
    @rede_neural Рік тому

    Quem passa o context pra essa função (context, int count, _)? O valueListenableBuilder?

  • @lcppb
    @lcppb Рік тому +1

    Ola, neste caso vc usou um setState tipo global...e se fosse colocar o setState somente na opcao tipo ao clicar da um setState na funcao de soma ??? nao ficaria certo

    • @drantunes
      @drantunes  Рік тому

      Pode colocar o setState como toggle local sim

    • @lcppb
      @lcppb Рік тому

      @@drantunes Então na minha opnião nao precisa usar estes componente de TERCEIROS...podemos usar somentes os tipos NATIVOS do FLUTTER tipo initState, setState etc. porque a questão da reatividade ta na mão do programador e nao em usar plugin de outros...pra fazer o seu serviço funcionar com reativade ou seja a atualizacao da visualizaçao do que foi alterado.

  • @wellingtonsoares1237
    @wellingtonsoares1237 2 роки тому

    Professor pode me ajudar gostaria de saber como faço para na tela surgir um container mas ele vai surgir após 20 segundos.

    • @drantunes
      @drantunes  2 роки тому +1

      Você pode usar uma propriedade bool para controlar a exibição do container e no initState você pode chamar um método que contém um Future.delayed com Duration de 20s, que irá mudar o bool para true ;)

    • @wellingtonsoares1237
      @wellingtonsoares1237 2 роки тому

      @@drantunes obg pela ajuda 👍vou colocar em prática.

  • @letrasvisuais
    @letrasvisuais 2 роки тому

    Caraca, me deu um rumo muito bom! Terei de refazer boa parte dos meus códigos, haha!

    • @drantunes
      @drantunes  2 роки тому

      É sempre bom uma inquietação dessas 😀

  • @marcone1338
    @marcone1338 Рік тому

    Se eu fizer um widget stateful e colocar esse widget dentro de um widgetStateless fazer o update parcial da tela?

    • @drantunes
      @drantunes  Рік тому

      Se entendi bem a pergunta, sim. Fará o update apenas da widget incluida

  • @KuroManX
    @KuroManX 2 роки тому

    Muito interessante essa conceito.
    Eu sou iniciante e tenho uma duvida, como eu faria para utilizar apenas uma instancia dessa classe _Counter em múltiplos widgets espalhados por diversas telas de forma nativa sem o uso de packages externos como Provider?

    • @drantunes
      @drantunes  2 роки тому +4

      O mais simples seria criar uma constante no main.dart e passar esta instância como dependência via construtor. Também é possível fazer o import, como mostrei no vídeo, pois com a constante não será criada uma nova instância (por isso protegi a classe com o _ para ficar com escopo privado). Também é possível com Design Patterns, como o Singleton. E a forma mais avançada seria criar o próprio sistema de gerenciamento ... 😀

    • @KuroManX
      @KuroManX 2 роки тому

      @@drantunes vlw professor, eu acabei vendo um exemplo usando singleton com valuenotifier e achei muito interessante essa gerência de estado mais simples, extremamente útil para coisas menores.

  • @ravelsoares6092
    @ravelsoares6092 2 роки тому

    Na sua opinião, qual seria a ordem correta para aprender gerenciamento de estado ? Por qual começar?

    • @drantunes
      @drantunes  2 роки тому +2

      Olá Ravel, beleza? Você pode começar entendendo o que é o estado, os estados locais x compartilhados, setState, ValueNotifier, ChangeNotifier, BLoC, MobX e para injeção de dependências Provider e GetIt (acredito que seja uma trilha fundamental) 👍

    • @ravelsoares6092
      @ravelsoares6092 2 роки тому

      @@drantunes obrigado!

  • @kog9048
    @kog9048 2 роки тому

    Muito bacana! :)

  • @ubirajaramoura3741
    @ubirajaramoura3741 2 роки тому

    Muuuitoo bom !

    • @ubirajaramoura3741
      @ubirajaramoura3741 2 роки тому

      Aproveitando a oportunidade. Existe algum curso seu do básico ao avançado.
      Você é o melhor professor de todos.

  • @devbrunobrito
    @devbrunobrito 2 роки тому

    muito bom

  •  Рік тому

    Eu não entendo por que o Google fez o setState assim. Não dava pra fazer algo mais perfomatico nativo do flutter?

    •  Рік тому

      Ah, então o valueNotifier é nativo do flutter?

    • @drantunes
      @drantunes  Рік тому

      ValueNotifier é nativo, assim como o ChangeNotifier e Inherited Widget (pode usar sem problemas).
      A melhor forma seria com Hooks, mas há uma issue desde 2018 e alguns engenheiros estão lutando para aceitar a proposta :\

  • @victortostaddos
    @victortostaddos 2 роки тому

    Bom dia professor, fiz uma calculadora de imc e gostaria que o icone em uma coluna fosse mudado de acordo com o resultado do calculo do imc que sera feito ao clicar um botão. Tentei usando o conteudo deste video mas não deu certo.

    • @drantunes
      @drantunes  2 роки тому +2

      Olá Victor, para alterar o ícone você poderia usar uma propriedade ValueNotifier para o IMC. Então, no child referente ao Icon você adiciona um ValueListenableBuilder para essa propriedade. Dentro do método builder você pode usar IF e ELSE IFs para verificar o IMC e retornar o Icon que deseja!!! Abraço!

    • @victortostaddos
      @victortostaddos 2 роки тому

      ​@@drantunes Muito obrigado professor!!! ♥

    • @drantunes
      @drantunes  2 роки тому +1

      @@victortostaddos

  • @Lizisousa
    @Lizisousa 2 роки тому

    Top

  • @ninoland498
    @ninoland498 Рік тому

    Melhor usar isolates