2
respostas

unhandled exception: invalid argument(s) (onerror): the error handler of future.catcherror must return a value of the future's type

Após ter refatorado o código e utilizado async await e incluindo os catchErro acontece o erro =unhandled exception: invalid argument(s) (onerror): the error handler of future.catcherror must return a value of the future's type.

Metodo abaixo criado no curso de "Comunicação HTTP: Flutter com web API"

  Future<Transaction> _send(Transaction transactionCreated, String password,
      BuildContext context) async {
    final Transaction transaction =
        await _webClient.save(transactionCreated, password).catchError((e) {
      _showFailureMessage(context, msg: 'timeout submitting the transaction');
    }, test: (e) => e is TimeoutException).catchError((e) {
      _showFailureMessage(context, msg: e.message);
    }, test: (e) => e is HttpException).catchError((e) {
      _showFailureMessage(context);
    }, test: (e) => e is Exception);
    return transaction;
  }

Qual seria a solução para corrigir esse erro?

2 respostas

Solução encontrada

Future<void> _send(Transaction transactionCreated, String password, BuildContext context) async {
    try {
      final Transaction transaction =
      await _webClient.save(transactionCreated, password);
      _showSuccessfulMessage(transaction, context);
      Navigator.pop(context);
    }on TimeoutException catch(e){
      _showFailureMessage(context, msg: e.message.toString());
    }on HttpException catch(e){
      _showFailureMessage(context, msg: e.message);
    }on Exception catch(e){
      _showFailureMessage(context);
    }finally{
      setState(() {
        _sending = false;
      });
    }
  }

Olá, Herik! Tudo bem?

Que bom que conseguiu encontrar a solução.

Continue praticando e bons estudos!

Abraços.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software