flutter-plugin
flutter-plugin copied to clipboard
Fixes lateinit property has not been initialized crash
This MR prevents the crash where, in some cases, the lateinit variable is null when onActivityResult is called. To prevent it, it was changed from lateinit to a nullable variable, where the var is checked before using it.
Caused by s9.o: lateinit property loadPaymentDataResult has not been initialized at io.flutter.plugins.pay_android.GooglePayHandler.onActivityResult(GooglePayHandler.java:4) at io.flutter.embedding.engine.FlutterEngineConnectionRegistry$FlutterEngineActivityPluginBinding.onActivityResult(FlutterEngineConnectionRegistry.java:25) at io.flutter.embedding.engine.FlutterEngineConnectionRegistry.onActivityResult(FlutterEngineConnectionRegistry.java:13) at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.m(FlutterActivityAndFragmentDelegate.java:16) at io.flutter.embedding.android.FlutterFragment.onActivityResult(FlutterFragment.java:10) at io.flutter.embedding.android.FlutterFragmentActivity.onActivityResult(FlutterFragmentActivity.java:5) at android.app.Activity.dispatchActivityResult(Activity.java:9362) at android.app.ActivityThread.deliverResults(ActivityThread.java:6055) at android.app.ActivityThread.handleSendResult(ActivityThread.java:6101) at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:67) at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:45) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2685) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:230) at android.os.Looper.loop(Looper.java:319) at android.app.ActivityThread.main(ActivityThread.java:8918) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:608) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
To prevent the crash when lateinit is null, I changed the variable to nullable and checked it every time that is used, if for some reason the onActivityResult method is called, the app will not break.