cropImage function

Future<CroppedFile?> cropImage({
  1. required File file,
  2. dynamic action(
    1. CroppedFile file
    )?,
  3. int? maxWidth,
  4. int? maxHeight,
  5. CropStyle cropStyle = CropStyle.rectangle,
  6. CropAspectRatio cropAspectRatio = const CropAspectRatio(ratioX: 3, ratioY: 1.2),
  7. ImageCompressFormat imageCompressFormat = ImageCompressFormat.png,
  8. AndroidUiSettings? androidUiSettings,
  9. IOSUiSettings? iOSUiSettings,
  10. List<CropAspectRatioPreset> aspectRatioPresets = const <CropAspectRatioPreset>[CropAspectRatioPreset.original, CropAspectRatioPreset.square, CropAspectRatioPreset.ratio3x2, CropAspectRatioPreset.ratio4x3, CropAspectRatioPreset.ratio16x9],
})

Implementation

Future<CroppedFile?> cropImage({
  required final File file,
  final Function(CroppedFile file)? action,
  final int? maxWidth,
  final int? maxHeight,
  final CropStyle cropStyle = CropStyle.rectangle,
  final CropAspectRatio cropAspectRatio = const CropAspectRatio(ratioX: 3, ratioY: 1.2),
  final ImageCompressFormat imageCompressFormat = ImageCompressFormat.png,
  final AndroidUiSettings? androidUiSettings,
  final IOSUiSettings? iOSUiSettings,
  final List<CropAspectRatioPreset> aspectRatioPresets = const <CropAspectRatioPreset>[
    CropAspectRatioPreset.original,
    CropAspectRatioPreset.square,
    CropAspectRatioPreset.ratio3x2,
    CropAspectRatioPreset.ratio4x3,
    CropAspectRatioPreset.ratio16x9,
  ],
}) async {
  final CroppedFile? result = await ImageCropper().cropImage(
    sourcePath: file.path,
    maxWidth: maxWidth,
    maxHeight: maxHeight,
    aspectRatio: cropAspectRatio,
    compressFormat: imageCompressFormat,
    cropStyle: cropStyle,
    aspectRatioPresets: aspectRatioPresets,
    uiSettings: <PlatformUiSettings>[
      androidUiSettings ??
          AndroidUiSettings(
            toolbarTitle: 'Crop Your Image',
            showCropGrid: true,
            hideBottomControls: false,
            lockAspectRatio: true,
            initAspectRatio: CropAspectRatioPreset.square,
            activeControlsWidgetColor: context.theme.primaryColor,
            statusBarColor: context.theme.primaryColor,
            toolbarColor: context.theme.primaryColor,
            toolbarWidgetColor: context.theme.cardColor,
          ),
      iOSUiSettings ??
          IOSUiSettings(
            resetAspectRatioEnabled: false,
            minimumAspectRatio: 1,
            aspectRatioPickerButtonHidden: true,
            title: 'Crop Your Image',
            aspectRatioLockDimensionSwapEnabled: true,
            aspectRatioLockEnabled: true,
            hidesNavigationBar: true,
          ),
    ],
  );
  if (action != null) action(result!);
  return result;
}