hnvn / flutter_image_cropper

A Flutter plugin for Android and iOS supports cropping images
994 stars 392 forks source link

Sending empty preset array throws an exception on android #428

Open MehmetKaranlik opened 1 year ago

MehmetKaranlik commented 1 year ago

In my project function below throws exception that i shared below. Due to my conditions setOptions returns null so it takes empty array and throws.

  Future<CroppedFile?> cropImage(XFile? file) async {
    if (file == null) return null;

    final croppedFile = await imageCropper?.cropImage(
      sourcePath: file.path,
      aspectRatioPresets: delegate?.setOptions()?.aspectRatioPresets ?? <CropAspectRatioPreset>[],
      cropStyle: delegate?.setOptions()?.cropStyle ?? CropStyle.rectangle,
      aspectRatio: delegate?.setOptions()?.aspectRatio,
      maxHeight: delegate?.setOptions()?.maxHeight ?? kProfileMaxResolution,
      maxWidth: delegate?.setOptions()?.maxWidth ?? kProfileMaxResolution,
    );
    if (croppedFile == null) {
      delegate?.imagePickerDidCancel();
    } else {
      delegate?.imageCropperDidCropImage(croppedFile);
    }

    return croppedFile;
  }

Log

E/MethodChannel#plugins.hunghd.vn/image_cropper(17274): java.lang.IllegalArgumentException: Index [selectedByDefault = 0] (0-based) cannot be higher or equal than aspect ratio options count [count = 0].
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at com.yalantis.ucrop.UCrop$Options.setAspectRatioOptions(UCrop.java:491)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at vn.hunghd.flutter.plugins.imagecropper.ImageCropperDelegate.startCrop(ImageCropperDelegate.java:86)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at vn.hunghd.flutter.plugins.imagecropper.ImageCropperPlugin.onMethodCall(ImageCropperPlugin.java:59)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:258)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at android.os.Handler.handleCallback(Handler.java:907)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at android.os.Handler.dispatchMessage(Handler.java:105)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at android.os.Looper.loop(Looper.java:216)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at android.app.ActivityThread.main(ActivityThread.java:7625)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
E/MethodChannel#plugins.hunghd.vn/image_cropper(17274):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
E/flutter (17274): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(error, Index [selectedByDefault = 0] (0-based) cannot be higher or equal than aspect ratio options count [count = 0]., null, java.lang.IllegalArgumentException: Index [selectedByDefault = 0] (0-based) cannot be higher or equal than aspect ratio options count [count = 0].
E/flutter (17274):  at com.yalantis.ucrop.UCrop$Options.setAspectRatioOptions(UCrop.java:491)
E/flutter (17274):  at vn.hunghd.flutter.plugins.imagecropper.ImageCropperDelegate.startCrop(ImageCropperDelegate.java:86)
E/flutter (17274):  at vn.hunghd.flutter.plugins.imagecropper.ImageCropperPlugin.onMethodCall(ImageCropperPlugin.java:59)
E/flutter (17274):  at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:258)
E/flutter (17274):  at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
E/flutter (17274):  at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322)
E/flutter (17274):  at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12)
E/flutter (17274):  at android.os.Handler.handleCallback(Handler.java:907)
E/flutter (17274):  at android.os.Handler.dispatchMessage(Handler.java:105)
E/flutter (17274):  at android.os.Looper.loop(Looper.java:216)
E/flutter (17274):  at android.app.ActivityThread.main(ActivityThread.java:7625)
E/flutter (17274):  at java.lang.reflect.Method.invoke(Native Method)
E/flutter (17274):  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
E/flutter (17274):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
mmustafaget commented 10 months ago

same any update?