import 'dart:convert'; import 'dart:io'; import 'package:SEFER/constant/api_key.dart'; import 'package:get/get.dart'; import 'package:http/http.dart' as http; import 'package:image_picker/image_picker.dart'; import 'package:path/path.dart'; import '../../constant/box_name.dart'; import '../../constant/colors.dart'; import '../../main.dart'; class ImageController extends GetxController { File? myImage; bool isloading = false; void choosImage(String link) async { XFile? xFile = await ImagePicker().pickImage(source: ImageSource.gallery); myImage = File(xFile!.path); isloading = true; update(); var response = await uploadImage( myImage!, { 'driverID': box.read(BoxName.driverID).toString(), }, link, ); isloading = false; update(); if (response['status'] == 'success') { Get.snackbar('Image Uploaded'.tr, 'Sucsses', backgroundColor: AppColor.greenColor); } } uploadImage(File file, Map data, String link) async { var request = http.MultipartRequest( 'POST', Uri.parse(link), //'https://ride.mobile-app.store/uploadImage1.php' ); var length = await file.length(); var stream = http.ByteStream(file.openRead()); var multipartFile = http.MultipartFile( 'image', stream, length, filename: basename(file.path), ); request.headers.addAll({ 'Authorization': 'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials.toString()))}', }); // Set the file name to the driverID request.files.add( http.MultipartFile( 'image', stream, length, filename: '${box.read(BoxName.driverID)}.jpg', ), ); data.forEach((key, value) { request.fields[key] = value; }); var myrequest = await request.send(); var res = await http.Response.fromStream(myrequest); if (res.statusCode == 200) { return jsonDecode(res.body); } } }