You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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();
    }
    
  • 检查安卓原生日志与权限

    1. 通过Android Studio的Logcat过滤FATAL EXCEPTION,获取具体崩溃栈信息(比如WebView版本兼容、内核错误等)。
    2. 确认安卓Manifest已添加网络权限:
      <uses-permission android:name="android.permission.INTERNET" />
      
  • 调整插件版本兼容性
    尝试升级flutter_inappwebview至最新稳定版(如^6.8.0),同时确保Flutter SDK与插件版本的适配性,修改pubspec.yaml后执行flutter pub get更新依赖。

内容的提问来源于stack exchange,提问作者Mehedi Hasan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:04:59