8000 migrate to the new Android APIs based on FlutterPlugin by sh4wn · Pull Request #53 · lykhonis/image_crop · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

migrate to the new Android APIs based on FlutterPlugin #53

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Sep 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
C3B8

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