Olá pessoal, como estão todos?
Gostaria de saber se poderiam me ajudar, por favor, referente ao seguinte cenário:
Todos os tratamentos para catchError encadeados implementei exatamente como explicado pelo professor Alex, e os conferi em commit, também iguais, contudo, sempre que exibido um erro como por exemplo de tempo excedido, antes deste ou outro também específico, é exibida também a mensagem "Unkown Error", isso sempre antes dos outros.
Gostaria de saber se passaram por isso, e se conseguiram atuar com alguma solução.
Abaixo segue meu código para um melhor entendimento.
TransactionForm
Future<Transaction> _send(Transaction transactionCreated, String password,
BuildContext context) async {
setState(() {
_sending = true;
});
final Transaction transaction =
await _webClient.save(transactionCreated, password).catchError((e) {
_showFailureMessage(context, message: e.message);
}, test: (e) => e is HttpException).catchError((e) {
_showFailureMessage(context,
message: 'Timeout submitting the transaction');
}, test: (e) => e is TimeoutException).catchError((e) {
_showFailureMessage(context);
}).whenComplete(() {
setState(() {
_sending = false;
});
});
return transaction;
}
TransactionWebClient
Future<Transaction> save(Transaction transaction, String password) async {
final String transactionJson = jsonEncode(transaction.toJson());
final Response response = await client.post(baseUrl,
headers: {
'Content-type': 'application/json',
'password': password,
},
body: transactionJson);
if (response.statusCode == 200) {
return Transaction.fromJson(jsonDecode(response.body));
}
throw HttpException(_getMessage(response.statusCode));
}
String? _getMessage(int statusCode) {
if (_statusCodeResponses.containsKey(statusCode)) {
return _statusCodeResponses[statusCode];
}
return 'Unknown error';
}
static final Map<int, String> _statusCodeResponses = {
400: 'There was an error submitting transaction',
401: 'Authentication failed',
409: 'Transaction already exists'
};
}
class HttpException implements Exception {
final String? message;
HttpException(this.message);
}
Desde já, agradeço imensamente. Marcio.