import 'package:dio/dio.dart'; import 'package:get/get.dart'; import 'package:quiz_app/core/endpoint/api_endpoint.dart'; import 'package:quiz_app/core/utils/logger.dart'; class ApiClient extends GetxService { late final Dio dio; Future init() async { dio = Dio(BaseOptions( baseUrl: APIEndpoint.baseUrl, connectTimeout: const Duration(minutes: 3), receiveTimeout: const Duration(minutes: 10), headers: { "Content-Type": "application/json", }, )); dio.interceptors.add( InterceptorsWrapper( onRequest: (options, handler) { logC.i(''' ➡️ [REQUEST] [${options.method}] ${options.uri} Headers: ${options.headers} Body: ${options.data} '''); return handler.next(options); }, onResponse: (response, handler) { logC.i(''' ✅ [RESPONSE] [${response.statusCode}] ${response.requestOptions.uri} Data: ${response.data} '''); return handler.next(response); }, onError: (DioException e, handler) { logC.e(''' ❌ [ERROR] [${e.response?.statusCode}] ${e.requestOptions.uri} Message: ${e.message} Error Data: ${e.response?.data} '''); return handler.next(e); }, ), ); return this; } }