safeExecute static method
Future<ApiResult>
safeExecute(
{ - required Future<Response> func(),
- dynamic onOverrideData(
- dynamic data
)?,
- dynamic onSuccess(
- dynamic data
)?,
- String? responseDataPropPath,
})
Implementation
static Future<ApiResult> safeExecute({
required Future<http.Response> Function() func,
dynamic Function(dynamic data)? onOverrideData,
dynamic Function(dynamic data)? onSuccess,
String? responseDataPropPath,
}) async {
ApiResult result;
try {
final response = await func();
if (response.statusCode == 200) {
var responsebody = jsonDecode(response.body);
var data = responseDataPropPath != null && responsebody is Map<String, dynamic> ? responsebody[responseDataPropPath] : responsebody;
if (onOverrideData != null) {
data = onOverrideData(data);
}
result = ApiResult(
success: true,
data: data,
message: 'Operação realizada com sucesso.',
);
if (onSuccess != null) {
onSuccess(data);
}
} else {
Map<String, dynamic> error = jsonDecode(response.body);
result = ApiResult(
success: false,
message:
'Erro na operação. ${HttpUtils.getErrorMsgFromApi(error)}',
);
}
} catch (error) {
result = ApiResult(
success: false,
message: 'Erro na operação. ${error.toString()}',
);
}
return result;
}