-
Notifications
You must be signed in to change notification settings - Fork 253
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
Tem horas que mesmo saindo de um módulo, ele não tá executando dispose. #11
Comments
Confirmado, verifiquei aqui em outra tela, que ao navegar para outra rota, não fez dispose do módulo |
Qual versão está utilizando? |
flutter_modular: ^0.1.0+1 |
fix version 0.1.2 |
Alguma coisas precisam ser esclarecidas sobre o popAndPushNamed. Navigator.pushNamedAndRemoveUntil(context, '/home', ModalRoute.withName('/home')); Aqui nesse caso especifico, ele vai enviar a rota /home com o push, e vai removendo todas as rotas que estejam acima do /home, definimos isso com o preficado ModalRoute.withName('/home') Essa é uma boa estratégia para sair de uma rota dupla e o Modular entender e remover da memória o módulo com o dispose. |
Bom dia @jacobaraujo7, atualizeo a versão aqui e testei com o Ah detalhe, com o |
Nos meus testes aqui ele aconteceu com o pushReplacement |
Rodei um flutter clean aqui e tentei de novo mas não deu com o pushReplacementNamed... Já com o pushNamedAndRemoveUntil funcionou conforme vc falou! |
Bom dia @jacobaraujo7 , estou usando a versão 0.1.3, e o meu cenário é parecido: AppModule @override
List<Router> get routers => [
Router('/', module: HomeModule()),
Router('/login', module: LoginModule()),
]; Quando entro na minha HomePage, uso meu HomeBloc pra verificar se o usuário está logado, se não estiver faço isso: checkToken(BuildContext context) async {
final prefs = await SharedPreferences.getInstance();
final token = prefs.getString('TOKEN');
// remover
await Future.delayed(Duration(seconds: 10));
if (token == null) {
Navigator.pushReplacementNamed(context, '/login');
return;
} else {
// check token on api
onLoggedChanged(true);
}
} Mas não acontece o HomeModule DISPOSED. Nesse caso não deveria acontecer? Até faz o dispose da minha HomePage, mas o módulo não. |
Seu caso é igual ao meu. Seu HomeModule aí tá na rota principal, daí não vai dar dispose mesmo. Eu penei aqui um tempão até entender. Teve que o @jacobaraujo7 interfeir aqui pra eu entender essa bagaça! hehehehe |
No meu caso acontece quase a mesma coisa: E na ProductView está assim: |
@andregusmao Meu caso é o mesmo, isso precisa ser remediado e essa issue reaberta. |
Ah @andregusmao enquanto isso não é visto, tem a opção de remover o modulo manualmente, vou mandar meu código de exemplo: |
Boa tarde, tem horas que mesmo saindo de um módulo, ele não tá executando dispose. Veja um exemplo de uma rota:
AppModule
ProfileModule
No meu app, primeiro entra no ProfilePage pra exibir os dados, e exibe uma opção para exibir detalhes (
/profile/about
) ou editar o perfil(/profile/edit
)... E pelo botão voltar que é colocado na AppBar, vai seguindo a stack das rotas até retornar pra tela anterior à carga do/profile
aqui o comportamento tá certinho... mas se tento navegar pra fora, com umpushReplacementNamed
,popAndPushNamed
etc, navega pro novo destino fora da rota/profile
mas não dá dispose no módulo.Nesse caso eu devo forçar o dispose de alguma forma antes de navegar pra fora da rota ?
The text was updated successfully, but these errors were encountered: