grockResponseHandler<T> method
Future<T?>
grockResponseHandler<T>({
- T success(
- Response response
- void error(
- dynamic err
- void loading()?,
- void done()?,
----------------- grockResponseHandler example -----------------
final response = await GrockDioServices.request().grockResponseHandler(
success: (response) => Model.fromJson(response.data),
error: (err) => Toast.show(err.toString()),
loading: () => print("loading"),
done: () => print("done"),
);
Implementation
Future<T?> grockResponseHandler<T>(
{T Function(Response response)? success,
void Function(dynamic err)? error,
void Function()? loading,
void Function()? done}) async {
try {
loading?.call();
final response = await this;
if (response.statusCode == 200) {
done?.call();
return success?.call(response);
} else {
done?.call();
throw DioException(
requestOptions: response.requestOptions,
type: DioExceptionType.badResponse,
response: response,
error: response.data,
message: response.statusMessage,
stackTrace: StackTrace.current,
);
}
} on DioException catch (e) {
log("Error: ${e.error}, Response: ${e.response}, Message: ${e.message}, StackTrace: ${e.stackTrace}, RequestOptions: ${e.requestOptions}, Type: ${e.type}",
name: "DioException Error");
if (e.response?.data != null) {
error?.call(e.response?.data);
throw Exception(e.response?.data);
} else {
error?.call(e.error);
throw Exception(e.response?.statusMessage);
}
} catch (e) {
log("Error: $e", name: "Catch Error");
error?.call(e);
throw Exception(e);
}
}