cropImage static method

Future<FileData?> cropImage({
  1. required String filePath,
  2. dynamic action(
    1. FileData 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. WebUiSettings? webUiSettings,
  10. IOSUiSettings? iOSUiSettings,
  11. Color? activeControlsWidgetColor,
  12. Color? statusBarColor,
  13. Color? toolbarColor,
  14. Color? toolbarWidgetColor,
  15. List<CropAspectRatioPreset> aspectRatioPresets = const <CropAspectRatioPreset>[CropAspectRatioPreset.original, CropAspectRatioPreset.square, CropAspectRatioPreset.ratio3x2, CropAspectRatioPreset.ratio4x3, CropAspectRatioPreset.ratio16x9],
})

Implementation

static Future<FileData?> cropImage({
  required final String filePath,
  final Function(FileData 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 WebUiSettings? webUiSettings,
  final IOSUiSettings? iOSUiSettings,
  final Color? activeControlsWidgetColor,
  final Color? statusBarColor,
  final Color? toolbarColor,
  final Color? toolbarWidgetColor,
  final List<CropAspectRatioPreset> aspectRatioPresets = const <CropAspectRatioPreset>[
    CropAspectRatioPreset.original,
    CropAspectRatioPreset.square,
    CropAspectRatioPreset.ratio3x2,
    CropAspectRatioPreset.ratio4x3,
    CropAspectRatioPreset.ratio16x9,
  ],
}) async {
  final CroppedFile? result = await ImageCropper().cropImage(
    sourcePath: filePath,
    maxWidth: maxWidth,
    maxHeight: maxHeight,
    aspectRatio: cropAspectRatio,
    compressFormat: imageCompressFormat,
    uiSettings: <PlatformUiSettings>[
      androidUiSettings ??
          AndroidUiSettings(
            aspectRatioPresets: aspectRatioPresets,
            cropStyle: cropStyle,
            toolbarTitle: 'Crop Your Image',
            showCropGrid: true,
            hideBottomControls: false,
            lockAspectRatio: true,
            initAspectRatio: CropAspectRatioPreset.square,
            activeControlsWidgetColor: activeControlsWidgetColor ?? Theme.of(navigatorKey.currentContext!).colorScheme.primary,
            statusBarColor: statusBarColor ?? Theme.of(navigatorKey.currentContext!).colorScheme.primary,
            toolbarColor: toolbarColor ?? Theme.of(navigatorKey.currentContext!).colorScheme.primary,
            toolbarWidgetColor: toolbarWidgetColor ?? Theme.of(navigatorKey.currentContext!).cardColor,
          ),
      iOSUiSettings ??
          IOSUiSettings(
            aspectRatioPresets: aspectRatioPresets,
            cropStyle: cropStyle,
            resetAspectRatioEnabled: false,
            minimumAspectRatio: 1,
            aspectRatioPickerButtonHidden: true,
            title: 'Crop Your Image',
            aspectRatioLockDimensionSwapEnabled: true,
            aspectRatioLockEnabled: true,
            hidesNavigationBar: true,
          ),
      webUiSettings ??
          WebUiSettings(
            context: navigatorKey.currentContext!,
            cropBoxMovable: true,
            background: true,
            center: true,
            checkCrossOrigin: true,
            checkOrientation: true,
            cropBoxResizable: true,
            guides: true,
            highlight: true,
            rotatable: true,
            zoomable: true,
            zoomOnTouch: true,
            zoomOnWheel: true,
          ),
    ],
  );
  final FileData fileData = FileData(
    path: result?.path,
    bytes: await result?.readAsBytes(),
    extension: result?.path.split(".").last,
  );
  if (action != null) action(fileData);
  return fileData;
}