import 'dart:io'; import 'package:file_picker/file_picker.dart'; import 'package:image_picker/image_picker.dart'; import 'package:mc_common_app/utils/utils.dart'; abstract class CommonAppServices { Future> pickMultipleImages(); Future pickImageFromPhone(int sourceFlag); Future pickFile({FileType fileType = FileType.custom, List? allowedExtensions}); } class CommonServicesImp implements CommonAppServices { @override Future pickImageFromPhone(int sourceFlag) async { final picker = ImagePicker(); final pickedImage = await picker.pickImage( source: sourceFlag == 0 ? ImageSource.camera : ImageSource.gallery, ); final pickedImageFile = File(pickedImage!.path); return pickedImageFile; } @override Future pickFile({FileType fileType = FileType.custom, List? allowedExtensions}) async { FilePickerResult? result = await FilePicker.platform.pickFiles(type: FileType.custom, allowedExtensions: ['png', 'pdf', 'jpeg']); if (result != null) { File file = File(result.files.single.path ?? ""); int sizeInBytes = file.lengthSync(); // double sizeInMb = sizeInBytes / (1024 * 1024); if (sizeInBytes > 1000) { Utils.showToast("File is larger then 1KB"); } else { return file; } } else { // User canceled the picker return null; } return null; } @override Future> pickMultipleImages() async { final picker = ImagePicker(); final pickedImagesXFiles = await picker.pickMultiImage(); List pickedImages = []; if (pickedImagesXFiles == null) { return []; } if (pickedImagesXFiles.isEmpty) { return []; } for (var element in pickedImagesXFiles) { pickedImages.add(File(element.path)); } return pickedImages; } }