import 'package:dio/dio.dart'; import '../constants/api_constants.dart'; import 'api_interceptor.dart'; /// Dio HTTP client configuration class DioClient { late final Dio _dio; DioClient() { _dio = Dio( BaseOptions( baseUrl: ApiConstants.fullBaseUrl, connectTimeout: Duration(milliseconds: ApiConstants.connectTimeout), receiveTimeout: Duration(milliseconds: ApiConstants.receiveTimeout), sendTimeout: Duration(milliseconds: ApiConstants.sendTimeout), headers: { ApiConstants.contentType: ApiConstants.applicationJson, ApiConstants.accept: ApiConstants.applicationJson, }, ), ); _dio.interceptors.add(ApiInterceptor()); } Dio get dio => _dio; /// GET request Future get( String path, { Map? queryParameters, Options? options, }) async { return await _dio.get( path, queryParameters: queryParameters, options: options, ); } /// POST request Future post( String path, { dynamic data, Map? queryParameters, Options? options, }) async { return await _dio.post( path, data: data, queryParameters: queryParameters, options: options, ); } /// PUT request Future put( String path, { dynamic data, Map? queryParameters, Options? options, }) async { return await _dio.put( path, data: data, queryParameters: queryParameters, options: options, ); } /// DELETE request Future delete( String path, { dynamic data, Map? queryParameters, Options? options, }) async { return await _dio.delete( path, data: data, queryParameters: queryParameters, options: options, ); } }