pickImage method
Implementation
Future<File?> pickImage({required BuildContext context, required ImageFrom source}) async {
cameraUiSettings?.initialCameraSide ??= CameraSide.back;
try {
if (source == ImageFrom.camera) {
debugPrint('Camera settings: ${cameraUiSettings?.toJson()}');
file = await Navigator.push<File?>(
context,
CupertinoPageRoute<File?>(
builder: (context) => CameraPlugin(cameraUiSettings: cameraUiSettings),
),
);
} else {
final pickedFile = await _picker.pickImage(source: ImageSource.gallery);
if (pickedFile != null) {
debugPrint('Image picked successfully: ${pickedFile.path}');
file = File(pickedFile.path);
} else {
debugPrint('User canceled image picking');
}
}
if (file != null && features?.crop != null && features!.crop!.enabled) {
file = await _cropIfNeeded(file!);
}
if (compressImage && file != null) {
if (!compressOnlyForCamera || (compressOnlyForCamera && source == ImageFrom.camera)) {
final sizeInKbBeforeCompression = file!.lengthSync() / 1024;
debugPrint('Before compress: $sizeInKbBeforeCompression KB');
file = await compress(image: file!, compressParams: compressParams ?? defaultCompress);
if (file != null) {
final sizeInKbAfterCompression = file!.lengthSync() / 1024;
debugPrint('After compress: $sizeInKbAfterCompression KB');
}
}
}
return file;
} catch (e, st) {
debugPrint('Error picking image: $e\n$st');
return null;
}
}