Files
retail/lib/core/network/dio_client.dart
Phuoc Nguyen b94c158004 runable
2025-10-10 16:38:07 +07:00

86 lines
1.8 KiB
Dart

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<Response> get(
String path, {
Map<String, dynamic>? queryParameters,
Options? options,
}) async {
return await _dio.get(
path,
queryParameters: queryParameters,
options: options,
);
}
/// POST request
Future<Response> post(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Options? options,
}) async {
return await _dio.post(
path,
data: data,
queryParameters: queryParameters,
options: options,
);
}
/// PUT request
Future<Response> put(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Options? options,
}) async {
return await _dio.put(
path,
data: data,
queryParameters: queryParameters,
options: options,
);
}
/// DELETE request
Future<Response> delete(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Options? options,
}) async {
return await _dio.delete(
path,
data: data,
queryParameters: queryParameters,
options: options,
);
}
}