При запуске на 13 устройствах одно из них (Moto Z с Android 7.0) дает мне исключение NullPointerException при предварительном запуске тестов из Play Console при открытии экрана с плагином. Как ни странно, он работает безупречно на каждом физическом устройстве, которое я тестировал.
Плагин Webview - flutter_inappwebview 2.1.0 + 1
Есть ли способ, которым я мог бы отловить эту ошибку, чтобы я мог предоставить другое представление для пользователя? Видящий сбой виджет находится внутри скаффолда в операторе возврата из метода сборки
I/DisplayManagerService(1357): Display device changed state: "flutter-vd", OFF
I/DisplayManagerService(1357): Display device removed: DisplayDeviceInfo{"flutter-vd": uniqueId="virtual:com.danproductions.medical.guiadebulasf,10148,flutter-vd,0", 1440 x 1744, modeId 2, defaultModeId 2, supportedModes [{id=2, width=1440, height=1744, fps=60.0}], colorTransformId 0, defaultColorTransformId 0, supportedColorTransforms [], HdrCapabilities null, density 640, 640.0 x 640.0 dpi, appVsyncOff 0, presDeadline 16666666, touch NONE, rotation 0, type VIRTUAL, state OFF, owner com.danproductions.medical.guiadebulasf (uid 10148), FLAG_PRIVATE, FLAG_NEVER_BLANK, FLAG_OWN_CONTENT_ONLY}
I/DisplayManagerService(1357): Display device added: DisplayDeviceInfo{"flutter-vd": uniqueId="virtual:com.danproductions.medical.guiadebulasf,10148,flutter-vd,0", 1440 x 1848, modeId 3, defaultModeId 3, supportedModes [{id=3, width=1440, height=1848, fps=60.0}], colorTransformId 0, defaultColorTransformId 0, supportedColorTransforms [], HdrCapabilities null, density 640, 640.0 x 640.0 dpi, appVsyncOff 0, presDeadline 16666666, touch NONE, rotation 0, type VIRTUAL, state ON, owner com.danproductions.medical.guiadebulasf (uid 10148), FLAG_PRIVATE, FLAG_NEVER_BLANK, FLAG_OWN_CONTENT_ONLY}
E/NetworkScheduler.ATC(8575): Called cancelTask for already completed task com.google.android.gms/.measurement.PackageMeasurementTaskService{u=0 tag="Measurement.PackageMeasurementTaskService.UPLOAD_TASK_TAG" trigger=window{start=0s,end=1s,earliest=0s,latest=0s} requirements=[NET_CONNECTED] attributes=[PERSISTED] scheduled=0s last_run=0s jid=N/A status=ACTIVE retries=0 client_lib=GMS_TASK_SCHEDULER-19629000} :1
V/ConnectivityManager(8575): isActiveNetworkMetered() returns:false
D/AndroidRuntime(10476): Shutting down VM
E/AndroidJUnitRunner(10476): An unhandled exception was thrown by the app.
I/AndroidJUnitRunner(10476): Bringing down the entire Instrumentation process.
E/MonitoringInstr(10476): Exception encountered by: Thread[main,5,main]. Dumping thread state to outputs and pining for the fjords.
E/MonitoringInstr(10476): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.Display.getSize(android.graphics.Point)' on a null object reference
at org.chromium.ui.display.DisplayAndroid.updateFromDisplay(DisplayAndroid.java:133)
at org.chromium.ui.display.DisplayAndroidManager$DisplayListenerBackendImpl.onDisplayChanged(DisplayAndroidManager.java:169)
at android.hardware.display.DisplayManagerGlobal$DisplayListenerDelegate.handleMessage(DisplayManagerGlobal.java:462)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
Я проследил, включив некоторую отладочную информацию, и обнаружил, что " веб-представление создано " и прогресс достигает 100, НО веб-просмотр запущен НЕ отображается. При использовании другого устройства появляется сообщение « webview началось ».
InAppWebView(
initialHeaders: {},
initialOptions: InAppWebViewWidgetOptions(
inAppWebViewOptions: InAppWebViewOptions(
debuggingEnabled: true,
)),
onWebViewCreated: (InAppWebViewController controller) {
webView = controller;
print("webview created");
},
onLoadStart: (InAppWebViewController controller, String url) {
print("webview started");
setState(() {
this.url = url;
});
},
onLoadStop:
(InAppWebViewController controller, String url) async {
setState(() {
this.url = url;
});
},
onProgressChanged:
(InAppWebViewController controller, int progress) {
setState(() {
print(progress);
this.progress = progress / 100;
});
},
),