import 'dart:developer'; import 'package:app_skeleton/providers/user_images.dart'; import 'package:app_skeleton/widgets/auth_handler.dart'; import 'package:async/async.dart'; import 'package:http/http.dart' as http; import 'dart:convert'; import 'dart:io'; import 'dart:async'; import 'package:app_skeleton/models/image.dart'; const apiSendImageUrl = 'http://172.28.188.65:8000/images/'; Future<String> imageToBase64(File imageFile) async { List<int> imageBytes = await imageFile.readAsBytes(); String base64Image = base64Encode(imageBytes); return base64Image; } Future<dynamic> createFutureRequest( Uri uri, Map<String, String> headers, Photo photo, UserImagesNotifier notifier, ) async { final base64Image = await imageToBase64(photo.image); // Prepare request body var requestBody = json.encode({ "user_id": photo.userId, "created_at": photo.creationDate, "image": base64Image, "email": photo.email, }); // Create and send the request var response = await http.post( uri, headers: headers, body: requestBody, ); // Handle response if (response.statusCode == 201) { log('Request sent successfully'); notifier.removePhotos(photo.id, photo.image); } else { log('Failed to save images. ${response.body}, Status code: ${response.statusCode}'); } } // Based on what Roberto Neto did Future<void> uploadObjectList( List<Photo> photos, UserImagesNotifier notifier) async { String? tokenID = await getFirebaseTokenID(); Uri uri = Uri.parse(apiSendImageUrl); var headers = { 'Content-Type': 'application/json', 'Authorization': 'Token $tokenID', }; var futureGroup = FutureGroup(); if (photos.isNotEmpty) { for (Photo photo in photos) { futureGroup.add(createFutureRequest(uri, headers, photo, notifier)); } // Wait for all requests to complete futureGroup.close(); } }