Skip to content

Commit

Permalink
migrate to the new Android APIs based on FlutterPlugin (lykhonis#53)
Browse files Browse the repository at this point in the history
  • Loading branch information
sh4wn authored Sep 24, 2020
1 parent 78d59ef commit 3ce4a86
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 19 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@ pubspec.lock
*.iml

build/

example/.flutter-plugins-dependencies
example/ios/Flutter/flutter_export_environment.sh
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.3.3

* migrate to the new Android APIs based on FlutterPlugin

## 0.3.2

* Fixes #33. Image rotation bug after cropping on iOS
Expand Down
62 changes: 58 additions & 4 deletions android/src/main/java/com/lykhonis/imagecrop/ImageCropPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,34 +26,88 @@

import androidx.annotation.NonNull;
import androidx.exifinterface.media.ExifInterface;

import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.Registrar;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.embedding.engine.plugins.activity.ActivityAware;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;

import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;

public final class ImageCropPlugin implements MethodCallHandler, PluginRegistry.RequestPermissionsResultListener {
public final class ImageCropPlugin implements FlutterPlugin , ActivityAware, MethodCallHandler, PluginRegistry.RequestPermissionsResultListener {
private static final int PERMISSION_REQUEST_CODE = 13094;

private final Activity activity;
private MethodChannel channel;

private ActivityPluginBinding binding;
private Activity activity;
private Result permissionRequestResult;
private ExecutorService executor;

private ImageCropPlugin(Activity activity) {
this.activity = activity;
}

public ImageCropPlugin(){ }

/**
* legacy APIs
*/
public static void registerWith(Registrar registrar) {
MethodChannel channel = new MethodChannel(registrar.messenger(), "plugins.lykhonis.com/image_crop");
ImageCropPlugin instance = new ImageCropPlugin(registrar.activity());
channel.setMethodCallHandler(instance);
instance.setup(registrar.messenger());
registrar.addRequestPermissionsResultListener(instance);
}

@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
this.setup(binding.getBinaryMessenger());
}

@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
channel.setMethodCallHandler(null);
channel = null;
}

@Override
public void onAttachedToActivity(ActivityPluginBinding activityPluginBinding) {
binding = activityPluginBinding;
activity = activityPluginBinding.getActivity();
activityPluginBinding.addRequestPermissionsResultListener(this);
}

@Override
public void onDetachedFromActivity() {
activity = null;
if(binding != null){
binding.removeRequestPermissionsResultListener(this);
}
}

@Override
public void onReattachedToActivityForConfigChanges(ActivityPluginBinding activityPluginBinding) {
this.onAttachedToActivity(activityPluginBinding);
}

@Override
public void onDetachedFromActivityForConfigChanges() {
this.onDetachedFromActivity();
}

private void setup(BinaryMessenger messenger) {
channel = new MethodChannel(messenger, "plugins.lykhonis.com/image_crop");
channel.setMethodCallHandler(this);
}


@SuppressWarnings("ConstantConditions")
@Override
public void onMethodCall(MethodCall call, Result result) {
Expand Down
1 change: 0 additions & 1 deletion example/.flutter-plugins-dependencies

This file was deleted.

11 changes: 0 additions & 11 deletions example/ios/Flutter/flutter_export_environment.sh

This file was deleted.

6 changes: 3 additions & 3 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
name: image_crop
description: A flutter plugin to crop image on iOS and Android. It processes image files off main thread natively. The plugin provides a Crop widget to display image cropping to a user.
version: 0.3.2
version: 0.3.3
homepage: https://github.com/VolodymyrLykhonis/image_crop

environment:
sdk: ">=2.0.0-dev.68.0 <3.0.0"
flutter: ">=1.10.0 <2.0.0"
sdk: ">=2.1.0 <3.0.0"
flutter: ">=1.12.13+hotfix.6 <2.0.0"

dependencies:
flutter:
Expand Down

0 comments on commit 3ce4a86

Please sign in to comment.