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
Didática exemplar! Obrigado pela contribuição!
Excelente tutorial Diego! Parabéns!
Parabéns! Pelas suas contribuições. Somos grato.
Muito massa! Obrigado pelas aulas!
Disponha!
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
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...
Muito bom o vídeo e a didática excelente como sempre... poderia fazer mais vídeos assim voltas para Flutter Web
Boa sugestão!
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.
Ta no roadmap 👍
Grande abraço
@@drantunes já foi lançado professor?
Já vou adicionar em um projeto 👏👏
Faz mais vídeos professor, gostei de usar o go_router porém tive alguns erros quando vai retornar do empilhamento.
A api é um pouco diferente do Navigator, aí quando faz o pop pode dar problema mesmo.
muito bom!
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!
Poderia fazer um video explicando sobre o VelocityX , obg ?
Qual o nome dessa extensão que mostra um erro na linha que se está digitando o código? por favor.
Error Lens
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.
No momento que a navegação muda, a tela antiga é automaticamente descartada... Isso é por conta do Flutter + o Garbage Collector do Dart.
@@drantunes Tive essa dúvida por que quando dei um context.pop() os dados dos inputs ainda estavam salvos;
@@user-rc9ki2uj6h se à navegação ocorre por uma pilha, você não perde o estado anterior
@@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 ?
@@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.
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?
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?
@@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.
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 !
Tenta double.infinity 👍
@@drantunes deu certo eu envolvi em um expanded e Double.infinity ! Obg professor deu certo!
Olá Daniel. Tem como passar ENUM no path do Go Route?
Boa tarde Carlos, sim é possível se usar Strings 😀
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.
É importante instalar um serviço como Crashlytics para entender onde está quebrando seu app 👍
@@drantunes entendi, muito obrigado
como remover o # das URLs?
docs.flutter.dev/ui/navigation/url-strategies#hosting-a-flutter-app-at-a-non-root-location
Como faço pra criar uma função de download?
No Mobile ou Web? Que tipo de arquivo deseja baixar?
@@drantunes mobile
Imagem e documentos
Dê uma olhada no package flutter_downloader, acredito que irá te ajudar 👍
@@drantunes obrigado
Excelente didática!!! Eu só não entendi muito bem o "routeInformationProvider" no construtor do MaterialApp.router
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).
@@drantunes Entendi! Vi que ele é opcional tbm... que só começou a ser mencionado no Readme a partir da versão 4.0.0
@@rkillgonzaga Flutter adicionou essa funcionalidade na API, acredito que outros packages vão ter que adotar essa propriedade também.