vnschneider / mermas_digitais_app

O projeto ainda está em desenvolvimento, próximas atualizações serão publicadas em breve
8 stars 3 forks source link

O app possibilita um retorno para a ultima rota. #9

Closed vnschneider closed 1 year ago

vnschneider commented 1 year ago

Afim de manter a resposta para um erro, adicionei o mesmo AlertDialog da tela NewUser na tela de Login. Isso me fez perceber que o app está fazendo o push da nova rota mantendo o ultimo estado salvo, assim o usuário pode voltar para a tela anterior e isso está quebrando a aplicação. Alguma ideia para solucionar este erro? Eliminar o back button da appbar não é o suficiente já que o usuário pode usar os botões de navegação do aparelho para realizar essa ação.

Captura de tela

gzeloni commented 1 year ago

Você pode usar o WillPopScope.

return WillPopScope(
      onWillPop: () async {
        ScaffoldMessenger.of(context).showSnackBar(const SnackBar(
            content: Text('Você não pode retornar para a tela anterior!')));
        return false;
      },
      child: Scaffold(),
);

No método onWillPop: () async {} , você pode definir qualquer ação, o que importa é retornar false. Uma idéia de uso seria uma mensagem do sistema com algo como "aperte voltar mais uma vez para sair da aplicação"

Ao abrir a aplicação de novo, a pilha de widgets vai chamar por ChekLogin, que joga ou para LoginPage ou para HomePage, que também pode ser posto em um WillPopScope para evitar que volte para essa verificação novamente, travando a aplicação.

gzeloni commented 1 year ago

Lembrando, o mesmo não se faz necessário com as telas de navegação da NavBar, pois essa navegação está em um BottomNavigationBar, que não estrutura a navegação em uma pilha.