From e0519a8b44770fa174205377d35565f0371ccf73 Mon Sep 17 00:00:00 2001 From: Julian Steenbakker Date: Thu, 10 Dec 2020 23:28:15 +0100 Subject: [PATCH 1/4] Upgraded to Flutter Embedding V2. --- .../qr/flutterqr/FlutterQrPlugin.kt | 31 ++++++++++++++----- .../android/app/src/main/AndroidManifest.xml | 19 +++++++----- .../qr/flutterqrexample/MainActivity.kt | 9 +----- .../app/src/main/res/values/styles.xml | 4 +++ 4 files changed, 41 insertions(+), 22 deletions(-) diff --git a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/FlutterQrPlugin.kt b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/FlutterQrPlugin.kt index 9336335..4fce11d 100644 --- a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/FlutterQrPlugin.kt +++ b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/FlutterQrPlugin.kt @@ -1,24 +1,41 @@ package net.touchcapture.qr.flutterqr +import androidx.annotation.NonNull +import io.flutter.embedding.engine.plugins.FlutterPlugin import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodChannel.MethodCallHandler import io.flutter.plugin.common.MethodChannel.Result import io.flutter.plugin.common.PluginRegistry.Registrar -class FlutterQrPlugin : MethodCallHandler { + +class FlutterQrPlugin : FlutterPlugin, MethodCallHandler { + + /** Plugin registration embedding v1 */ companion object { @JvmStatic fun registerWith(registrar: Registrar) { - registrar - .platformViewRegistry() - .registerViewFactory( - "net.touchcapture.qr.flutterqr/qrview", QRViewFactory(registrar)) + FlutterQrPlugin().onAttachedToEngine(registrar) } } + /** Plugin registration embedding v2 */ + override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { + onAttachedToEngine(flutterPluginBinding) + } + + override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) { + } + + private fun onAttachedToEngine(registrar: Registrar) { + registrar + .platformViewRegistry() + .registerViewFactory( + "net.touchcapture.qr.flutterqr/qrview", QRViewFactory(registrar)) + } + override fun onMethodCall(call: MethodCall, result: Result) { - when { - call.method == "getPlatformVersion" -> result.success("Android ${android.os.Build.VERSION.RELEASE}") + when (call.method) { + "getPlatformVersion" -> result.success("Android ${android.os.Build.VERSION.RELEASE}") else -> result.notImplemented() } } diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 8a40bfb..3407805 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -13,7 +13,6 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> - + + + android:name="io.flutter.embedding.android.SplashScreenDrawable" + android:resource="@drawable/launch_background" /> + + + diff --git a/example/android/app/src/main/kotlin/net/touchcapture/qr/flutterqrexample/MainActivity.kt b/example/android/app/src/main/kotlin/net/touchcapture/qr/flutterqrexample/MainActivity.kt index fcdee63..3a276af 100644 --- a/example/android/app/src/main/kotlin/net/touchcapture/qr/flutterqrexample/MainActivity.kt +++ b/example/android/app/src/main/kotlin/net/touchcapture/qr/flutterqrexample/MainActivity.kt @@ -1,13 +1,6 @@ package net.touchcapture.qr.flutterqrexample -import android.os.Bundle - -import io.flutter.app.FlutterActivity -import io.flutter.plugins.GeneratedPluginRegistrant +import io.flutter.embedding.android.FlutterActivity class MainActivity: FlutterActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - GeneratedPluginRegistrant.registerWith(this) - } } diff --git a/example/android/app/src/main/res/values/styles.xml b/example/android/app/src/main/res/values/styles.xml index 00fa441..cd32859 100644 --- a/example/android/app/src/main/res/values/styles.xml +++ b/example/android/app/src/main/res/values/styles.xml @@ -5,4 +5,8 @@ Flutter draws its first frame --> @drawable/launch_background + + From 076fdc184176af07232165efd3411e9defd3bb32 Mon Sep 17 00:00:00 2001 From: Julian Steenbakker Date: Sun, 13 Dec 2020 20:54:09 +0100 Subject: [PATCH 2/4] Updated to minSdkVersion 20 because of Native View. --- android/build.gradle | 3 ++- example/android/app/build.gradle | 3 ++- example/android/app/src/main/res/values/styles.xml | 7 +++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 80bbfaa..437c6b4 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -34,7 +34,8 @@ android { main.java.srcDirs += 'src/main/kotlin' } defaultConfig { - minSdkVersion 19 + // minSdkVersion is determined by Native View. + minSdkVersion 20 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } lintOptions { diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 18b4d50..a2c7d06 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -38,7 +38,8 @@ android { defaultConfig { applicationId "net.touchcapture.qr.flutterqrexample" - minSdkVersion 19 + // minSdkVersion is determined by Native View. + minSdkVersion 20 targetSdkVersion 30 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/example/android/app/src/main/res/values/styles.xml b/example/android/app/src/main/res/values/styles.xml index cd32859..3257023 100644 --- a/example/android/app/src/main/res/values/styles.xml +++ b/example/android/app/src/main/res/values/styles.xml @@ -1,10 +1,17 @@ + + From 507857a2efa27906c2592d9eb9d90c4a225e4ab6 Mon Sep 17 00:00:00 2001 From: Julian Steenbakker Date: Sun, 13 Dec 2020 22:47:53 +0100 Subject: [PATCH 3/4] Implemented activityAware interface. --- .../qr/flutterqr/FlutterQrPlugin.kt | 118 +++++++++++++++--- .../net/touchcapture/qr/flutterqr/QRView.kt | 76 ++--------- .../qr/flutterqr/QRViewFactory.kt | 6 +- .../net/touchcapture/qr/flutterqr/Shared.kt | 10 ++ 4 files changed, 126 insertions(+), 84 deletions(-) create mode 100644 android/src/main/kotlin/net/touchcapture/qr/flutterqr/Shared.kt diff --git a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/FlutterQrPlugin.kt b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/FlutterQrPlugin.kt index 4fce11d..035431e 100644 --- a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/FlutterQrPlugin.kt +++ b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/FlutterQrPlugin.kt @@ -1,42 +1,128 @@ package net.touchcapture.qr.flutterqr +import android.Manifest +import android.app.Activity +import android.content.Context +import android.content.pm.PackageManager +import android.os.Build import androidx.annotation.NonNull import io.flutter.embedding.engine.plugins.FlutterPlugin +import io.flutter.embedding.engine.plugins.activity.ActivityAware +import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding 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.Registrar +import io.flutter.plugin.common.PluginRegistry -class FlutterQrPlugin : FlutterPlugin, MethodCallHandler { +class FlutterQrPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { - /** Plugin registration embedding v1 */ - companion object { - @JvmStatic - fun registerWith(registrar: Registrar) { - FlutterQrPlugin().onAttachedToEngine(registrar) - } - } + var cameraPermissionContinuation: Runnable? = null + var requestingPermission = false +// private var activity: Activity? = null + +// /** Plugin registration embedding v1 */ +// companion object { +// @JvmStatic +// fun registerWith(registrar: Registrar) { +// FlutterQrPlugin().onAttachedToEngine(registrar) +// } +// } /** Plugin registration embedding v2 */ override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { - onAttachedToEngine(flutterPluginBinding) + onAttachedToEngines(flutterPluginBinding) } override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) { } - private fun onAttachedToEngine(registrar: Registrar) { - registrar - .platformViewRegistry() + // TODO: Fix v1 embedding for Flutter < 1.12 support + /** Plugin start for both embedding v1 & v2 */ + private fun onAttachedToEngines(binding: FlutterPlugin.FlutterPluginBinding) { + binding.platformViewRegistry .registerViewFactory( - "net.touchcapture.qr.flutterqr/qrview", QRViewFactory(registrar)) + "net.touchcapture.qr.flutterqr/qrview", QRViewFactory(binding.binaryMessenger)) } +// private fun onAttachedToEngine(registrar: Registrar) { +// activity = registrar.activity() +// registrar.addRequestPermissionsResultListener(CameraRequestPermissionsListener()) +// checkAndRequestPermission(null) +// registrar +// .platformViewRegistry() +// .registerViewFactory( +// "net.touchcapture.qr.flutterqr/qrview", QRViewFactory(registrar)) +// } + override fun onMethodCall(call: MethodCall, result: Result) { when (call.method) { - "getPlatformVersion" -> result.success("Android ${android.os.Build.VERSION.RELEASE}") - else -> result.notImplemented() + "checkAndRequestPermission" -> checkAndRequestPermission(result) + } + } + + override fun onAttachedToActivity(activityPluginBinding: ActivityPluginBinding) { + Shared.activityPluginBinding = activityPluginBinding + Shared.activity = activityPluginBinding.activity + activityPluginBinding.addRequestPermissionsResultListener(CameraRequestPermissionsListener()) + checkAndRequestPermission(null) + } + + override fun onDetachedFromActivityForConfigChanges() { + Shared.activityPluginBinding = null + Shared.activity = null + } + + override fun onReattachedToActivityForConfigChanges(activityPluginBinding: ActivityPluginBinding) { + Shared.activityPluginBinding = activityPluginBinding + Shared.activity = activityPluginBinding.activity + } + + override fun onDetachedFromActivity() { + Shared.activityPluginBinding = null + Shared.activity = null + } + + private inner class CameraRequestPermissionsListener : PluginRegistry.RequestPermissionsResultListener { + override fun onRequestPermissionsResult(id: Int, permissions: Array, grantResults: IntArray): Boolean { + if (id == QRView.CAMERA_REQUEST_ID && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + cameraPermissionContinuation?.run() + return true + } + return false + } + } + + private fun hasCameraPermission(): Boolean { + return Build.VERSION.SDK_INT < Build.VERSION_CODES.M || + Shared.activity?.checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED + } + + private fun checkAndRequestPermission(result: Result?) { + if (cameraPermissionContinuation != null) { + result?.error("cameraPermission", "Camera permission request ongoing", null); + } + + cameraPermissionContinuation = Runnable { + cameraPermissionContinuation = null + if (!hasCameraPermission()) { + result?.error( + "cameraPermission", "MediaRecorderCamera permission not granted", null) + return@Runnable + } + } + + requestingPermission = false + if (hasCameraPermission()) { + cameraPermissionContinuation?.run() + } else { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + requestingPermission = true + Shared.activity?.requestPermissions( + arrayOf(Manifest.permission.CAMERA), + QRView.CAMERA_REQUEST_ID) + } } } } diff --git a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt index ae6260c..ede6fc2 100644 --- a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt +++ b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRView.kt @@ -1,12 +1,9 @@ package net.touchcapture.qr.flutterqr -import android.Manifest import android.app.Activity import android.app.Application import android.content.Context import android.content.pm.PackageManager -import android.content.pm.PackageManager.PERMISSION_GRANTED -import android.os.Build import android.os.Bundle import android.view.View import com.google.zxing.ResultPoint @@ -14,39 +11,34 @@ import android.hardware.Camera.CameraInfo import com.journeyapps.barcodescanner.BarcodeCallback import com.journeyapps.barcodescanner.BarcodeResult import com.journeyapps.barcodescanner.BarcodeView +import io.flutter.plugin.common.BinaryMessenger import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodChannel -import io.flutter.plugin.common.PluginRegistry import io.flutter.plugin.platform.PlatformView - -class QRView(private val registrar: PluginRegistry.Registrar, id: Int) : - PlatformView,MethodChannel.MethodCallHandler { +class QRView(messenger: BinaryMessenger, id: Int, private val context: Context) : + PlatformView, MethodChannel.MethodCallHandler { companion object { const val CAMERA_REQUEST_ID = 513469796 } var barcodeView: BarcodeView? = null - private val activity = registrar.activity() - var cameraPermissionContinuation: Runnable? = null - var requestingPermission = false + private var isTorchOn: Boolean = false val channel: MethodChannel init { - registrar.addRequestPermissionsResultListener(CameraRequestPermissionsListener()) - channel = MethodChannel(registrar.messenger(), "net.touchcapture.qr.flutterqr/qrview_$id") + channel = MethodChannel(messenger, "net.touchcapture.qr.flutterqr/qrview_$id") channel.setMethodCallHandler(this) - checkAndRequestPermission(null) - registrar.activity().application.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks { + Shared.activity?.application?.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks { override fun onActivityPaused(p0: Activity) { - if (p0 == registrar.activity()) { + if (p0 == Shared.activity) { barcodeView?.pause() } } override fun onActivityResumed(p0: Activity) { - if (p0 == registrar.activity()) { + if (p0 == Shared.activity) { barcodeView?.resume() } } @@ -102,7 +94,7 @@ class QRView(private val registrar: PluginRegistry.Registrar, id: Int) : } private fun hasFlash(): Boolean { - return registrar.activeContext().packageManager + return context.packageManager .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH) } @@ -120,7 +112,7 @@ class QRView(private val registrar: PluginRegistry.Registrar, id: Int) : } private fun createBarCodeView(): BarcodeView? { - val barcode = BarcodeView(registrar.activity()) + val barcode = BarcodeView(Shared.activity) barcode.decodeContinuous( object : BarcodeCallback { override fun barcodeResult(result: BarcodeResult) { @@ -138,27 +130,8 @@ class QRView(private val registrar: PluginRegistry.Registrar, id: Int) : barcodeView = null } - private inner class CameraRequestPermissionsListener : PluginRegistry.RequestPermissionsResultListener { - override fun onRequestPermissionsResult(id: Int, permissions: Array, grantResults: IntArray): Boolean { - if (id == CAMERA_REQUEST_ID && grantResults[0] == PERMISSION_GRANTED) { - cameraPermissionContinuation?.run() - return true - } - return false - } - } - - private fun hasCameraPermission(): Boolean { - return Build.VERSION.SDK_INT < Build.VERSION_CODES.M || - activity.checkSelfPermission(Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED - } - - override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) { - when(call?.method){ - "checkAndRequestPermission" -> { - checkAndRequestPermission(result) - } + when(call.method){ "flipCamera" -> { flipCamera() } @@ -174,33 +147,6 @@ class QRView(private val registrar: PluginRegistry.Registrar, id: Int) : } } - private fun checkAndRequestPermission(result: MethodChannel.Result?) { - if (cameraPermissionContinuation != null) { - result?.error("cameraPermission", "Camera permission request ongoing", null); - } - - cameraPermissionContinuation = Runnable { - cameraPermissionContinuation = null - if (!hasCameraPermission()) { - result?.error( - "cameraPermission", "MediaRecorderCamera permission not granted", null) - return@Runnable - } - } - requestingPermission = false - if (hasCameraPermission()) { - cameraPermissionContinuation?.run() - } else { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - requestingPermission = true - registrar - .activity() - .requestPermissions( - arrayOf(Manifest.permission.CAMERA), - CAMERA_REQUEST_ID) - } - } - } } diff --git a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRViewFactory.kt b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRViewFactory.kt index f9be661..a797084 100644 --- a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRViewFactory.kt +++ b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/QRViewFactory.kt @@ -1,17 +1,17 @@ package net.touchcapture.qr.flutterqr import android.content.Context -import io.flutter.plugin.common.PluginRegistry +import io.flutter.plugin.common.BinaryMessenger import io.flutter.plugin.common.StandardMessageCodec import io.flutter.plugin.platform.PlatformView import io.flutter.plugin.platform.PlatformViewFactory -class QRViewFactory(private val registrar: PluginRegistry.Registrar) : +class QRViewFactory(private val messenger: BinaryMessenger) : PlatformViewFactory(StandardMessageCodec.INSTANCE) { override fun create(context: Context, id: Int, obj: Any?): PlatformView { - return QRView(registrar,id) + return QRView(messenger, id, context) } } \ No newline at end of file diff --git a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/Shared.kt b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/Shared.kt new file mode 100644 index 0000000..5957725 --- /dev/null +++ b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/Shared.kt @@ -0,0 +1,10 @@ +package net.touchcapture.qr.flutterqr + +import android.app.Activity +import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding + + +object Shared { + var activityPluginBinding: ActivityPluginBinding? = null + var activity: Activity? = null +} \ No newline at end of file From 5d69344dccefe2b2476de2af502e5d4b136a2250 Mon Sep 17 00:00:00 2001 From: Julian Steenbakker Date: Mon, 14 Dec 2020 15:56:13 +0100 Subject: [PATCH 4/4] Added support for embedding V1. --- .../qr/flutterqr/FlutterQrPlugin.kt | 52 ++++++++----------- .../net/touchcapture/qr/flutterqr/Shared.kt | 1 - 2 files changed, 21 insertions(+), 32 deletions(-) diff --git a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/FlutterQrPlugin.kt b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/FlutterQrPlugin.kt index 035431e..ca59f08 100644 --- a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/FlutterQrPlugin.kt +++ b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/FlutterQrPlugin.kt @@ -1,61 +1,55 @@ package net.touchcapture.qr.flutterqr import android.Manifest -import android.app.Activity -import android.content.Context import android.content.pm.PackageManager import android.os.Build import androidx.annotation.NonNull import io.flutter.embedding.engine.plugins.FlutterPlugin import io.flutter.embedding.engine.plugins.activity.ActivityAware import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding +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.platform.PlatformViewRegistry class FlutterQrPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { var cameraPermissionContinuation: Runnable? = null var requestingPermission = false -// private var activity: Activity? = null -// /** Plugin registration embedding v1 */ -// companion object { -// @JvmStatic -// fun registerWith(registrar: Registrar) { -// FlutterQrPlugin().onAttachedToEngine(registrar) -// } -// } + /** Plugin registration embedding v1 */ + companion object { + @JvmStatic + fun registerWith(registrar: PluginRegistry.Registrar) { + FlutterQrPlugin().onAttachedToV1(registrar) + } + } + + private fun onAttachedToV1(registrar: PluginRegistry.Registrar) { + Shared.activity = registrar.activity() + registrar.addRequestPermissionsResultListener(CameraRequestPermissionsListener()) + checkAndRequestPermission(null) + onAttachedToEngines(registrar.platformViewRegistry(), registrar.messenger()) + } /** Plugin registration embedding v2 */ override fun onAttachedToEngine(@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding) { - onAttachedToEngines(flutterPluginBinding) + onAttachedToEngines(flutterPluginBinding.platformViewRegistry, flutterPluginBinding.binaryMessenger) } override fun onDetachedFromEngine(binding: FlutterPlugin.FlutterPluginBinding) { } - // TODO: Fix v1 embedding for Flutter < 1.12 support /** Plugin start for both embedding v1 & v2 */ - private fun onAttachedToEngines(binding: FlutterPlugin.FlutterPluginBinding) { - binding.platformViewRegistry + private fun onAttachedToEngines(platformViewRegistry: PlatformViewRegistry, messenger: BinaryMessenger) { + platformViewRegistry .registerViewFactory( - "net.touchcapture.qr.flutterqr/qrview", QRViewFactory(binding.binaryMessenger)) + "net.touchcapture.qr.flutterqr/qrview", QRViewFactory(messenger)) } -// private fun onAttachedToEngine(registrar: Registrar) { -// activity = registrar.activity() -// registrar.addRequestPermissionsResultListener(CameraRequestPermissionsListener()) -// checkAndRequestPermission(null) -// registrar -// .platformViewRegistry() -// .registerViewFactory( -// "net.touchcapture.qr.flutterqr/qrview", QRViewFactory(registrar)) -// } - override fun onMethodCall(call: MethodCall, result: Result) { when (call.method) { "checkAndRequestPermission" -> checkAndRequestPermission(result) @@ -63,24 +57,20 @@ class FlutterQrPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { } override fun onAttachedToActivity(activityPluginBinding: ActivityPluginBinding) { - Shared.activityPluginBinding = activityPluginBinding Shared.activity = activityPluginBinding.activity activityPluginBinding.addRequestPermissionsResultListener(CameraRequestPermissionsListener()) checkAndRequestPermission(null) } override fun onDetachedFromActivityForConfigChanges() { - Shared.activityPluginBinding = null Shared.activity = null } override fun onReattachedToActivityForConfigChanges(activityPluginBinding: ActivityPluginBinding) { - Shared.activityPluginBinding = activityPluginBinding Shared.activity = activityPluginBinding.activity } override fun onDetachedFromActivity() { - Shared.activityPluginBinding = null Shared.activity = null } @@ -101,7 +91,7 @@ class FlutterQrPlugin : FlutterPlugin, MethodCallHandler, ActivityAware { private fun checkAndRequestPermission(result: Result?) { if (cameraPermissionContinuation != null) { - result?.error("cameraPermission", "Camera permission request ongoing", null); + result?.error("cameraPermission", "Camera permission request ongoing", null) } cameraPermissionContinuation = Runnable { diff --git a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/Shared.kt b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/Shared.kt index 5957725..7823e01 100644 --- a/android/src/main/kotlin/net/touchcapture/qr/flutterqr/Shared.kt +++ b/android/src/main/kotlin/net/touchcapture/qr/flutterqr/Shared.kt @@ -5,6 +5,5 @@ import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding object Shared { - var activityPluginBinding: ActivityPluginBinding? = null var activity: Activity? = null } \ No newline at end of file