diff --git a/CHANGELOG.md b/CHANGELOG.md index bf5320c1..d0929bfc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## Changelog Version | Changes | -- | -- | +2.5.9 | Migrated to latest Flutter release 3.29.0
Enhance Memory Usage | 2.5.8 | Updated iOS SDK to 3.6.21 and Android SDK to 3.6.37 | 2.5.7 | Updated iOS SDK to 3.6.20 and Android SDK to 3.6.36 | 2.5.6 | Updated iOS SDK to 3.6.19 and Android SDK to 3.6.34 | diff --git a/android/src/main/java/com/uxcam/flutteruxcam/FlutterUxcamPlugin.java b/android/src/main/java/com/uxcam/flutteruxcam/FlutterUxcamPlugin.java index 7d6cb6b8..911177b8 100644 --- a/android/src/main/java/com/uxcam/flutteruxcam/FlutterUxcamPlugin.java +++ b/android/src/main/java/com/uxcam/flutteruxcam/FlutterUxcamPlugin.java @@ -8,7 +8,6 @@ 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.Registrar; import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.embedding.engine.plugins.activity.ActivityAware; @@ -34,7 +33,7 @@ * FlutterUxcamPlugin */ public class FlutterUxcamPlugin implements MethodCallHandler, FlutterPlugin, ActivityAware { - private static final String TYPE_VERSION = "2.5.8"; + private static final String TYPE_VERSION = "2.5.9"; public static final String TAG = "FlutterUXCam"; public static final String USER_APP_KEY = "userAppKey"; public static final String ENABLE_INTEGRATION_LOGGING = "enableIntegrationLogging"; @@ -58,51 +57,55 @@ public class FlutterUxcamPlugin implements MethodCallHandler, FlutterPlugin, Act /** * Plugin registration. */ - private static Activity activity; - - public static void registerWith(Registrar registrar) { - activity = registrar.activity(); - register(registrar.messenger()); - } + private MethodChannel channel; + private Activity activity; + private ActivityPluginBinding activityBinding; @Override public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) { - register(binding.getBinaryMessenger()); + channel = new MethodChannel(binding.getBinaryMessenger(), "flutter_uxcam"); + channel.setMethodCallHandler(this); } @Override public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { + if (channel != null) { + channel.setMethodCallHandler(null); + channel = null; + } } - public static void register(BinaryMessenger messenger) { - final MethodChannel channel = new MethodChannel(messenger, "flutter_uxcam"); - channel.setMethodCallHandler(new FlutterUxcamPlugin()); - } - - @Override - public void onAttachedToActivity(ActivityPluginBinding activityPluginBinding) { + public void onAttachedToActivity(@NonNull ActivityPluginBinding activityPluginBinding) { activity = activityPluginBinding.getActivity(); + activityBinding = activityPluginBinding; } @Override public void onDetachedFromActivityForConfigChanges() { + onDetachedFromActivity(); } @Override - public void onReattachedToActivityForConfigChanges(ActivityPluginBinding activityPluginBinding) { - activity = activityPluginBinding.getActivity(); + public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding activityPluginBinding) { + onAttachedToActivity(activityPluginBinding); } @Override public void onDetachedFromActivity() { + activity = null; + activityBinding = null; } @Override - public void onMethodCall(MethodCall call, Result result) { + public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { if (call.method.equals("getPlatformVersion")) { result.success("Android " + Build.VERSION.RELEASE); } else if (call.method.equals("startWithKey")) { + if (activity == null) { + result.error("Activity not attached", "Cannot start UXCam without an activity", null); + return; + } String key = call.argument("key"); UXCam.startApplicationWithKeyForCordova(activity, key); addListener(result); diff --git a/pubspec.yaml b/pubspec.yaml index 6023c381..889094ac 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,7 +10,7 @@ environment: dependencies: flutter: sdk: flutter - stack_trace: ^1.11.1 + stack_trace: ^1.12.1 visibility_detector: ^0.4.0+2 # For information on the generic Dart part of this file, see the