2
respostas

[Dúvida] HttpException

Segui os mesmo passos do instrutor porém quando digita uma senha incorreta a mensagem de erro não aparece na tela apesar de aparecer no console e a mesagem de erro do email aparecer. Alguém pode me ajudar?

login(BuildContext context) { String email = _emailController.text; String password = _passwordController.text; service.login(email: email, password: password).then((value) { if (value) { Navigator.pushReplacementNamed(context, 'home'); } }).catchError( (error) { var innerError = error as HttpException; showExceptionDialog(context, content: innerError.message); }, test: (error) => error is HttpException, ).catchError( (error) { showDialogBox( context, content: 'Usuário não cadastrado. Deseja criar uma conta?', ).then((value) { if (value != null && value) { service.register(email: email, password: password).then((value) { if (value) { ScaffoldMessenger.of(context).showSnackBar(const SnackBar( content: Text( 'Cadastro realizado com sucesso!', ), )); Navigator.pushReplacementNamed(context, 'home'); } }); } }); }, test: (error) => error is UserNotFoundException, ).catchError( (error) => showExceptionDialog(context, content: 'O servidor crashou! Tente novamente mais tarde!'), test: (error) => error is TimeoutException); }

2 respostas

Olá Rafael!

Pelo que pude entender, você está enfrentando um problema ao exibir a mensagem de erro na tela quando a senha está incorreta, mesmo que a mensagem esteja sendo exibida no console. Vou te ajudar a resolver isso!

No código que você compartilhou, percebi que você está tratando os erros utilizando o método catchError(). No entanto, acredito que o problema esteja na forma como você está tratando o erro de HttpException.

Dentro do bloco (error), você está tentando acessar a propriedade message do HttpException, mas acredito que você não está conseguindo acessar corretamente essa propriedade. Uma forma de resolver isso é utilizando o error.toString() para exibir a mensagem de erro na tela.

Vou te mostrar como ficaria o trecho do código que trata o erro de HttpException:

.catchError(
  (error) {
    showExceptionDialog(context, content: error.toString());
  },
  test: (error) => error is HttpException,
)

Dessa forma, a mensagem de erro deve ser exibida corretamente na tela quando a senha estiver incorreta.

Espero que essa solução te ajude a resolver o problema! Se tiver mais alguma dúvida, é só me dizer. Espero ter ajudado e bons estudos!

Tentei dessa forma mas sem resultado.