mintware-de / flutter_barcode_reader

A flutter plugin for reading 2D barcodes and QR codes.
MIT License
628 stars 463 forks source link

App crash on orientation change #208

Closed subinsv closed 4 years ago

subinsv commented 4 years ago

Plugin Version: 3.0.0-dev.2 Platform: Android Device: Redmi k20 pro Android 10

App crashes during orientation change on scanner view.

E/AndroidRuntime(21498): kotlin.UninitializedPropertyAccessException: lateinit property scannerView has not been initialized
E/AndroidRuntime(21498):    at de.mintware.barcode_scan.BarcodeScannerActivity.onCreateOptionsMenu(BarcodeScannerActivity.kt:78)
E/AndroidRuntime(21498):    at android.app.Activity.onCreatePanelMenu(Activity.java:4142)
E/AndroidRuntime(21498):    at com.android.internal.policy.PhoneWindow.preparePanel(PhoneWindow.java:652)
E/AndroidRuntime(21498):    at com.android.internal.policy.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:1045)
E/AndroidRuntime(21498):    at com.android.internal.policy.PhoneWindow$1.run(PhoneWindow.java:284)
E/AndroidRuntime(21498):    at com.android.internal.policy.PhoneWindow.doPendingInvalidatePanelMenu(PhoneWindow.java:1016)
E/AndroidRuntime(21498):    at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2186)
E/AndroidRuntime(21498):    at android.app.Activity.onRestoreInstanceState(Activity.java:1602)
E/AndroidRuntime(21498):    at android.app.Activity.performRestoreInstanceState(Activity.java:1557)
E/AndroidRuntime(21498):    at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1354)
E/AndroidRuntime(21498):    at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3344)
E/AndroidRuntime(21498):    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
E/AndroidRuntime(21498):    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
E/AndroidRuntime(21498):    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
E/AndroidRuntime(21498):    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
E/AndroidRuntime(21498):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2040)
E/AndroidRuntime(21498):    at android.os.Handler.dispatchMessage(Handler.java:107)
E/AndroidRuntime(21498):    at android.os.Looper.loop(Looper.java:224)
E/AndroidRuntime(21498):    at android.app.ActivityThread.main(ActivityThread.java:7520)
E/AndroidRuntime(21498):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(21498):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
E/AndroidRuntime(21498):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
E/MQSEventManagerDelegate(21498): failed to get MQSService.
devtronic commented 4 years ago

I'll take a look on that today.

Maybe the problem is this:

if (scannerViewInitialized) {
    return
}

should be

if (scannerView != null) {
    return
}

https://github.com/mintware-de/flutter_barcode_reader/blob/afef17d73858776f4db246eaaecd998c8cb59ffd/android/src/main/kotlin/de/mintware/barcode_scan/BarcodeScannerActivity.kt#L56-L58

subinsv commented 4 years ago

Let me try this. If it works, I will create a PR.

devtronic commented 4 years ago

Fix was delivered in https://pub.dev/packages/barcode_scan/versions/3.0.0-dev.3