53 lines
1.4 KiB
Dart

// lib/data/sources/remote/api_service.dart
import 'package:autos/core/constants/api_endpoints.dart';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
class ApiService {
final Dio _dio;
ApiService({String? baseUrl})
: _dio = Dio(
BaseOptions(
baseUrl: baseUrl ?? ApiEndpoints.baseUrl,
connectTimeout: ApiEndpoints.connectTimeout,
receiveTimeout: ApiEndpoints.receiveTimeout,
headers: ApiEndpoints.defaultHeaders,
),
) {
// Add logging interceptor in debug mode
if (kDebugMode) {
_dio.interceptors.add(
LogInterceptor(requestBody: true, responseBody: true),
);
}
}
/// POST request
Future<Response> post(
String endpoint,
Map<String, dynamic> data, {
Options? options,
}) async {
return await _dio.post(endpoint, data: data, options: options);
}
/// GET request with optional overrideBaseUrl and headers
Future<Response> get(
String endpoint, {
Map<String, dynamic>? params,
Map<String, dynamic>? headers, // ✅ NOW SUPPORTED
String? overrideBaseUrl,
}) async {
final String requestUrl =
overrideBaseUrl != null ? overrideBaseUrl + endpoint : endpoint;
return await _dio.get(
requestUrl,
queryParameters: params,
options: headers != null ? Options(headers: headers) : null,
);
}
}