execute<T extends BaseResponseModel, K> method
Implementation
@override
Future<Result<K, NetworkError>> execute<T extends BaseResponseModel, K>(
T responseModel) async {
if (await NetworkConnectivity.status) {
try {
final response = await _dio!.fetch(RequestOptions(
baseUrl: _baseURL ?? '',
path: _path ?? '',
data: _body,
contentType: _contentType,
headers: _header,
method: _method,
connectTimeout: _connectTimeout,
receiveTimeout: _receiveTimeOut ?? 3000,
sendTimeout: _sendTimeout ?? 3000,
queryParameters: _queryParameters,
validateStatus: (statusCode) => (statusCode! >= HttpStatus.ok &&
statusCode <= HttpStatus.multipleChoices),
));
var decodeResponse = NetworkDecoding.decode<T, K>(
response: response, responseType: responseModel);
return Result.success(decodeResponse);
} on DioError catch (diorError) {
if (debugMode == true) {
// ignore: avoid_print
print(" => ${NetworkError.request(error: diorError)}");
}
return Result.failure(NetworkError.request(error: diorError));
// TYPE ERROR
} on TypeError catch (e) {
if (debugMode == true) {
// ignore: avoid_print
print("=> ${NetworkError.type(error: e.toString())}");
}
if (_interceptor != null) {
_dio?.interceptors.add(_interceptor!);
}
return Result.failure(NetworkError.type(error: e.toString()));
}
} else {
if (debugMode == true) {
// ignore: avoid_print
print(
const NetworkError.connectivity(message: 'No Internet Connection'));
}
return const Result.failure(
NetworkError.connectivity(message: 'No Internet Connection'));
}
}