Dans mon application Flutter, j'ai un futur qui gère les requêtes http et retourne les données décodées. Mais je veux pouvoir envoyer une erreur si le status code != 200
Qui peut être obtenu avec le gestionnaire .catchError()
.
Voici l'avenir:
Future<List> getEvents(String customerID) async {
var response = await http.get(
Uri.encodeFull(...)
);
if (response.statusCode == 200){
return jsonDecode(response.body);
}else{
// I want to return error here
}
}
et quand j'appelle cette fonction, je veux pouvoir obtenir l'erreur comme:
getEvents(customerID)
.then(
...
).catchError(
(error) => print(error)
);
Vous pouvez utiliser throw
:
Future<List> getEvents(String customerID) async {
var response = await http.get(
Uri.encodeFull(...)
);
if (response.statusCode == 200){
return jsonDecode(response.body);
}else{
// I want to return error here
throw("some arbitrary error"); // error thrown
}
}
Utilisez return
si vous voulez que l'erreur soit interceptée dans catchError()
Utilisez throw
si vous souhaitez que l'erreur soit détectée dans try/catch
.
return Future.error("This is the error", StackTrace.fromString("This is its trace"));