import 'dart:convert'; import 'dart:typed_data'; import 'package:dio/dio.dart'; import 'package:flutter/foundation.dart'; class ApiService { static const _baseUrl = 'https://freaccess.com.br/freaccess'; static final Dio _dio = Dio(BaseOptions( baseUrl: _baseUrl, // headers: {'Authorization': 'Bearer $_apiKey'}, )); static Future makeApiCall({ required String endpoint, required Map body, bool isMultipart = false, Uint8List? file, Uint8List? blob, }) async { try { Response response; if (isMultipart && file != null) { FormData formData = FormData.fromMap(body); formData.files.add(MapEntry('file', MultipartFile.fromBytes(file))); response = await _dio.post(endpoint, data: formData); } else if (blob != null) { // Convert the blob to base64 string String base64Image = base64Encode(blob); // Set the request headers Map headers = { 'Content-Type': 'application/json', }; // Create the request body as JSON Map requestBody = { 'image': base64Image, }; response = await _dio.post( endpoint, data: jsonEncode(requestBody), options: Options(headers: headers), ); } else { // Set the request headers Map headers = { 'Content-Type': 'application/json', }; response = await _dio.post( endpoint, data: jsonEncode(body), options: Options(headers: headers), ); } debugPrint('API call to $endpoint successful'); debugPrint('Api call body: $body'); debugPrint('Response: ${response.data}'); debugPrint('Response headers: ${response.headers}'); debugPrint('Response status: ${response.statusCode}'); return response; } catch (e) { rethrow; } } }