Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Módulo nunca é descartado ao usar RouterOutlet #899

Open
GuilhermeVVeiga opened this issue Sep 11, 2023 · 5 comments
Open

Módulo nunca é descartado ao usar RouterOutlet #899

GuilhermeVVeiga opened this issue Sep 11, 2023 · 5 comments
Labels
new New issue request attention

Comments

@GuilhermeVVeiga
Copy link

Describe the bug
Quando utilizado o RouterOutlet para nevegação de módulos ou rotas internas, o módulo (pai) nunca é disposado ao navegar entre as rotas internas. Ou seja, caso haja navegação para o módulo que contenha o RouterOutlet e faça o retorno imediato, há o dispose do módulo todo. Caso entre, navegue entre rotas internas e depois saia completamente do módulo, ele sempre ficará ativo (o modulo pai).

No miniprojeto zipado não contem nenhuma dependência, porém no projeto que está em produção na minha empresa há e elas permanecem ativas em toda aplicação.

Environment
[√] Flutter (Channel stable, 3.13.2, on Microsoft Windows [versÆo 10.0.19045.3324], locale pt-BR)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[X] Chrome - develop for the web (Cannot find Chrome executable at .\Google\Chrome\Application\chrome.exe)
! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
[√] Android Studio (version 2022.2)
[√] VS Code (version 1.81.1)
[√] Connected device (2 available)
[√] Network resources

To Reproduce
module.zip

Expected behavior
Ao sair do módulo pai, ele deve ter o disposed.

Screenshots
Do login para a home1 (sub modulo da homeModulo)
image

Ao voltar para a login diretamente
image

Quando eu navego entre os módulos internos
image

Porém, quando eu tento voltar para o login: (Houve disposed no sub modulo mas o pai ficou ativo)
image

@GuilhermeVVeiga GuilhermeVVeiga added the new New issue request attention label Sep 11, 2023
@migdev-br
Copy link

O RouterOutlet() deve ser um componente na View, na sua rota no r.child, tenta por uma página ao invés do RouterOutlet() e add no scaffold da pagina.

@GuilhermeVVeiga
Copy link
Author

GuilhermeVVeiga commented Sep 11, 2023

O RouterOutlet() deve ser um componente na View, na sua rota no r.child, tenta por uma página ao invés do RouterOutlet() e add no scaffold da pagina.

No projeto que eu descobri o problema estava exatamente da forma que você citou. No exemplo usei o RouterOutlet() direto no Module apenas para facilitar

@migdev-br
Copy link

Eu encontrei esse problema tbm, quando você entra no módulo principal do RouterOutlet sem navegar entre os módulos/rotas filhos e sai para o módulo login por exemplo o dispose do módulo principal do RouterOutlet é feito, porém se navegar internamente nos módulos filho, só esses são disposed e o do módulo principal do RouterOutlet não.
Senhores, @jacobaraujo7, @Bwolfs2, tem alguém olhando isso? Obrigado

@GuilhermeVVeiga
Copy link
Author

GuilhermeVVeiga commented Sep 25, 2023

Eu encontrei esse problema tbm, quando você entra no módulo principal do RouterOutlet sem navegar entre os módulos/rotas filhos e sai para o módulo login por exemplo o dispose do módulo principal do RouterOutlet é feito, porém se navegar internamente nos módulos filho, só esses são disposed e o do módulo principal do RouterOutlet não. Senhores, @jacobaraujo7, @Bwolfs2, tem alguém olhando isso? Obrigado

Acabei encontrando o mesmo problema em qualquer tipo de navegação entre rotas filhas. Parece que o problema não é específico do RouterOutlet.

@eduardoflorence
Copy link

Olá @GuilhermeVVeiga @migdev-br
Eu fiz um um pull request #911 para resolver esse problema e está aguardando análise.
Por favor, se puderem testar a solução e colocar um comentário no pull request, eu agradeceria.

Para testar, como a alteração é referente ao modular_core, acrescente isso ao seu pubspec (não precisa alterar a dependência flutter_modular):

dependency_overrides:
  modular_core:
    git: 
      url: https://github.com/eduardoflorence/modular.git
      ref: module_not_dispose
      path: modular_core

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new New issue request attention
Projects
None yet
Development

No branches or pull requests

3 participants