You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
1.8 KiB
Dart
64 lines
1.8 KiB
Dart
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<List<File>> pickMultipleImages();
|
|
|
|
Future<File?> pickImageFromPhone(int sourceFlag);
|
|
|
|
Future<File?> pickFile({FileType fileType = FileType.custom, List<String?>? allowedExtensions});
|
|
}
|
|
|
|
class CommonServicesImp implements CommonAppServices {
|
|
@override
|
|
Future<File?> 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<File?> pickFile({FileType fileType = FileType.custom, List<String?>? 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<List<File>> pickMultipleImages() async {
|
|
final picker = ImagePicker();
|
|
final pickedImagesXFiles = await picker.pickMultiImage();
|
|
|
|
List<File> pickedImages = [];
|
|
if (pickedImagesXFiles == null) {
|
|
return [];
|
|
}
|
|
if (pickedImagesXFiles.isEmpty) {
|
|
return [];
|
|
}
|
|
for (var element in pickedImagesXFiles) {
|
|
pickedImages.add(File(element.path));
|
|
}
|
|
return pickedImages;
|
|
}
|
|
}
|