Flutter GoRouter - Visão Geral de Rotas no Flutter

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 ก.ย. 2024
  • Neste vídeo vou te mostrar como navegar entre telas usando rotas declarativas com o package go_router no Flutter! O GoRouter é um Flutter Favorite e atualmente mantido pela equipe do Flutter!
    ⚙️ Código: github.com/dra...
    📺 Confira também as Playlists:
    👉🏻 Flutter Tips: • Flutter Tips
    👉🏻 Flutter na Prática: • Flutter na Prática
    #Flutter
    #GoRouter
    #Dart

ความคิดเห็น • 51

  • @adrianomilhomens
    @adrianomilhomens 2 ปีที่แล้ว +2

    Didática exemplar! Obrigado pela contribuição!

  • @lindermannla
    @lindermannla ปีที่แล้ว +1

    Excelente tutorial Diego! Parabéns!

  • @marcosbril
    @marcosbril 2 ปีที่แล้ว

    Parabéns! Pelas suas contribuições. Somos grato.

  • @swplogic4158
    @swplogic4158 2 ปีที่แล้ว +1

    Muito massa! Obrigado pelas aulas!

  • @arthurbc
    @arthurbc ปีที่แล้ว +1

    Normalmente eu passo o param id dinâmico diretamente no construtor da página.
    Nela, uso um FutureBuilder para obter o Model pelo id.
    Achei bem interessante você passar o modelo diretamente pelo construtor. Você também faz assim no seu dia-a-dia?
    Consigo enxergar algumas opções:
    Usar arguments (mas é dynamic)
    Usar algum PageGuard assíncrono para fornecer o objeto ou redirecionar.
    Usar um Serviço ou Store global para manter o estado entre telas (tipado)
    Usar essa forma que você fez diretamente pelo construtor.
    Qual opçõe você usa e considera mais escalável?
    Acho que o compartilhamento de estados entre telas é uma das maiores dúvidas que tem. Acho que daria um vídeo muito interessante em termos de visualizações a longo prazo.
    Abraços! Adoro seu trabalho

    • @drantunes
      @drantunes  ปีที่แล้ว +1

      Eu gosto mundo de passar o objeto bruto ou consumir direto de um "cache" como um repository ou na própria estrutura de gerenciamento de estado. Tem que ser sincrono, pois se o dado já está carregado na tela A, não faz sentido carregar ele de novo na tela B. Por isso sempre passo o objeto. A única ressalva aqui é para o uso na web ou de deep links, neste caso você precisa do identificador, pois o client pode entrar direto nessa página B sem passar pela A antes (onde os dados são carregados, e.g. uma lista). Espero ter ajudado...

  • @annyfeltrecat657
    @annyfeltrecat657 ปีที่แล้ว

    Muito bom o vídeo e a didática excelente como sempre... poderia fazer mais vídeos assim voltas para Flutter Web

    • @drantunes
      @drantunes  ปีที่แล้ว

      Boa sugestão!

  • @romavicdosanjos
    @romavicdosanjos 2 ปีที่แล้ว +2

    Oi Diego, espero que estejas bem.
    Se faz favor se houver tempo e disponibilidade da sua parte, faça um vídeo com dio e os seus interceptors e como gerenciar o token do geito correcto.

    • @drantunes
      @drantunes  2 ปีที่แล้ว +2

      Ta no roadmap 👍
      Grande abraço

    • @clehwispdev6512
      @clehwispdev6512 ปีที่แล้ว

      @@drantunes já foi lançado professor?

  • @nortonsena
    @nortonsena 2 ปีที่แล้ว

    Já vou adicionar em um projeto 👏👏

  • @victorteodozio8368
    @victorteodozio8368 ปีที่แล้ว

    Faz mais vídeos professor, gostei de usar o go_router porém tive alguns erros quando vai retornar do empilhamento.

    • @drantunes
      @drantunes  ปีที่แล้ว

      A api é um pouco diferente do Navigator, aí quando faz o pop pode dar problema mesmo.

  • @helvecioguimaraes
    @helvecioguimaraes ปีที่แล้ว

    muito bom!

  • @thyagosouza8087
    @thyagosouza8087 ปีที่แล้ว

    Salve professor... muito show esse pacote.. já to usando em todos projetos ... Se possível, teria como ensinar como colocar uma imagem da galeraia junto com o cadastro do usuario?... Gratidão!

  • @marcosbril
    @marcosbril 2 ปีที่แล้ว

    Poderia fazer um video explicando sobre o VelocityX , obg ?

  • @CosmopolitanDrunk
    @CosmopolitanDrunk ปีที่แล้ว

    Qual o nome dessa extensão que mostra um erro na linha que se está digitando o código? por favor.

  • @user-rc9ki2uj6h
    @user-rc9ki2uj6h 9 หลายเดือนก่อน

    Professor, como funciona a parte do dispose da page, quando navego para outra página, ele somente desativa a page correto ?
    Caso não tenha o gerenciamento para fazer os disposes das telas passadas, isso pode afetar a perfomance aumentando o consumo de memória.
    Consegue me tirar essa dúvida por favor.

    • @drantunes
      @drantunes  9 หลายเดือนก่อน

      No momento que a navegação muda, a tela antiga é automaticamente descartada... Isso é por conta do Flutter + o Garbage Collector do Dart.

    • @user-rc9ki2uj6h
      @user-rc9ki2uj6h 9 หลายเดือนก่อน

      @@drantunes Tive essa dúvida por que quando dei um context.pop() os dados dos inputs ainda estavam salvos;

    • @drantunes
      @drantunes  9 หลายเดือนก่อน

      @@user-rc9ki2uj6h se à navegação ocorre por uma pilha, você não perde o estado anterior

    • @user-rc9ki2uj6h
      @user-rc9ki2uj6h 9 หลายเดือนก่อน

      @@drantunes Como assim professor pilha ?
      outra dúvida pretende lançar um curso ? farei questão de comprar para apoiar seu trabalho ou há algum site para donate ?

    • @drantunes
      @drantunes  9 หลายเดือนก่อน

      @@user-rc9ki2uj6h Ainda não, mas irei divulgar aqui no canal. Se a navegação ocorre em um formato de pilha (stack), a página antiga não é descartada, apenas fica inativa. Ela será descartada apenas se você usar algo como pushAndReplacement.

  • @steniooliv
    @steniooliv 2 ปีที่แล้ว

    Parabéns pelo conteúdo!
    Fiquei com dúvida no go_router, tentei implementar web e tive problema ao sair da página de contatos e ir para a home.
    Não ví opção de fazer um popUntil, e, quando saio para home, utilizando o go não tem opção de voltar na appbar, porém no navegador eu consigo voltar, mesmo utilizando WillScope, tem alguma maneira de contornar isso?

    • @drantunes
      @drantunes  2 ปีที่แล้ว

      Obrigado! É preciso ver qual método está usando para a navegação no go_router, o método go (se não estou enganado) sobrescreve a rota, ou seja, não há caminho para a volta (por isso não aparece o back button na app bar). Qual o comportamento você quer no seu app?

    • @steniooliv
      @steniooliv 2 ปีที่แล้ว

      @@drantunes Obrigado pelo retorno Prof. Diego, ontem fiquei pesquisando bastante e o cenário seria, passo pela splash (que verifica se o usuário está logado, via local storage), e não estiver ele vai pra tela de login, depois de login, home page, porém queria que a home fosse a única página da stack, via android e ios, eu não consigo voltar utilizando o context.go mesmo, está certo. Porém no navegador, quando eu passo por essas páginas, gera um registro no história da página, e o usuário consegue voltar pelo botão do navegador. Eu achei uma flag (routerNeglect) no go_router que desabilita o histórico da página, mas desabilita em todo o app. E eu também teria que redirecionar o usuário se ele digitar novamente apenas / e /login na barra de endereços para caso esteja logado redirecionar para a home. Estou fazendo alguns testes e revendo se talvez essa seria a melhor lógica também, talvez eu não esteja pensando do jeito correto.

  • @MrJunioSmith
    @MrJunioSmith 2 ปีที่แล้ว

    Professor eu tenho um container onde o width dele está com o MediaQuery porém dentro desse container tem um outro container e eu preciso que esse outro container acompanhe o width do container pai porém não sei o que inserir no width !

    • @drantunes
      @drantunes  2 ปีที่แล้ว +1

      Tenta double.infinity 👍

    • @MrJunioSmith
      @MrJunioSmith 2 ปีที่แล้ว

      @@drantunes deu certo eu envolvi em um expanded e Double.infinity ! Obg professor deu certo!

  • @charlessantos4896
    @charlessantos4896 ปีที่แล้ว

    Olá Daniel. Tem como passar ENUM no path do Go Route?

    • @drantunes
      @drantunes  ปีที่แล้ว +1

      Boa tarde Carlos, sim é possível se usar Strings 😀

  • @edvilsonlima6454
    @edvilsonlima6454 2 ปีที่แล้ว

    Professor Diego gostaria de pedir um vídeo falando mais sobre geração do APK e a publicação na Play Story.
    Tenho acompanhado seu vídeo e eles tem me ajudado muito, tanto que conclui meu primeiro projeto Flutter, no entanto já estou a algumas semanas tentando resolver um problema, meu APK sobe para produção, mas os meus usuários não conseguem abrir o app no celular mesmo quando fazem a instalação pelo Play Story.

    • @drantunes
      @drantunes  2 ปีที่แล้ว

      É importante instalar um serviço como Crashlytics para entender onde está quebrando seu app 👍

    • @edvilsonlima6454
      @edvilsonlima6454 2 ปีที่แล้ว

      @@drantunes entendi, muito obrigado

  • @lfcalegari
    @lfcalegari 10 หลายเดือนก่อน

    como remover o # das URLs?

    • @drantunes
      @drantunes  10 หลายเดือนก่อน

      docs.flutter.dev/ui/navigation/url-strategies#hosting-a-flutter-app-at-a-non-root-location

  • @flutterflownapratica8499
    @flutterflownapratica8499 2 ปีที่แล้ว

    Como faço pra criar uma função de download?

  • @rkillgonzaga
    @rkillgonzaga 2 ปีที่แล้ว

    Excelente didática!!! Eu só não entendi muito bem o "routeInformationProvider" no construtor do MaterialApp.router

    • @drantunes
      @drantunes  2 ปีที่แล้ว +1

      Ele será responsável por passar a informação ao Router de quando houver uma mudança na navegação 👍 (i.e. ele que passa a informação da nova rota adiante).

    • @rkillgonzaga
      @rkillgonzaga 2 ปีที่แล้ว

      @@drantunes Entendi! Vi que ele é opcional tbm... que só começou a ser mencionado no Readme a partir da versão 4.0.0

    • @drantunes
      @drantunes  2 ปีที่แล้ว +1

      @@rkillgonzaga Flutter adicionou essa funcionalidade na API, acredito que outros packages vão ter que adotar essa propriedade também.