使用flutter_inappwebview:^6.0.0调用openUrlRequest时安卓App崩溃
安卓端调用
openUrlRequest崩溃的排查与解决方法 针对你使用flutter_inappwebview: ^6.0.0调用openUrlRequest导致安卓App崩溃的问题,可按以下步骤排查解决:
校验URL合法性
确保传入的selectedUrl是完整带协议的有效地址(如https://example.com),WebUri处理无效URL可能触发安卓WebView崩溃。可添加前置校验:if (selectedUrl == null || selectedUrl.isEmpty) { // 处理空URL场景,比如提示用户输入有效地址 return; } if (!selectedUrl.startsWith('http://') && !selectedUrl.startsWith('https://')) { selectedUrl = 'https://$selectedUrl'; }逐步简化配置项排查
先禁用部分WebView设置,定位是否是配置冲突导致崩溃:await browser.openUrlRequest( urlRequest: URLRequest(url: WebUri(selectedUrl)), settings: InAppBrowserClassSettings( webViewSettings: InAppWebViewSettings(isInspectable: kDebugMode), browserSettings: InAppBrowserSettings(hideUrlBar: true, hideToolbarTop: false), ), );若不再崩溃,再逐个恢复
useShouldOverrideUrlLoading、useOnLoadResource、hideToolbarTop等配置,定位具体触发崩溃的项。确认Browser实例状态
保证browser实例已完成初始化,避免在未初始化或已释放的状态下调用openUrlRequest:late InAppBrowser browser; @override void initState() { super.initState(); browser = InAppBrowser(); }检查安卓原生日志与权限
- 通过Android Studio的Logcat过滤
FATAL EXCEPTION,获取具体崩溃栈信息(比如WebView版本兼容、内核错误等)。 - 确认安卓Manifest已添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
- 通过Android Studio的Logcat过滤
调整插件版本兼容性
尝试升级flutter_inappwebview至最新稳定版(如^6.8.0),同时确保Flutter SDK与插件版本的适配性,修改pubspec.yaml后执行flutter pub get更新依赖。
内容的提问来源于stack exchange,提问作者Mehedi Hasan
相关产品推荐
相关产品推荐

