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

Flutter InAppWebView加载assets本地网页debug正常release模式空白页如何解决

解决方案

可按以下步骤逐一排查解决release模式下flutter_inappwebview加载本地assets空白的问题:

  • 检查pubspec.yaml资源声明
    确认pubspec.yaml中已正确声明对应assets资源,漏声明的资源不会被打包进release安装包:
    flutter:
      assets:
        - assets/TicTacToe.html
        # 若该html文件内引用了css、js、图片等其他assets下的资源,也需要对应声明路径,例如:
        - assets/js/
        - assets/css/
    
  • 配置Android混淆规则
    release打包开启混淆后会误裁剪flutter_inappwebview的相关类,在android/app/proguard-rules.pro文件中添加如下规则(没有该文件就手动创建):
    -keep class com.pichillilorenzo.** { *; }
    -dontwarn com.pichillilorenzo.**
    
    同时确认android/app/build.gradle的release构建配置中引用了该混淆文件:
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    
  • 配置Android明文访问权限
    若本地html内存在http协议的资源引用,Android 9及以上系统默认禁止明文http请求,会导致页面加载失败,在android/app/src/main/AndroidManifest.xml的application节点添加属性:
    android:usesCleartextTraffic="true"
    
  • 升级插件版本
    旧版flutter_inappwebview存在release模式加载本地文件的已知bug,建议升级到6.x及以上的最新稳定版本。
  • 更换加载方式兜底
    上述步骤都完成后仍有问题,可以放弃initialFile参数,改为读取assets文件内容后手动加载:
    import 'package:flutter/services.dart' show rootBundle;
    
    // 省略其他代码
    InAppWebView(
      onWebViewCreated: (InAppWebViewController controller) async {
        webView = controller;
        String htmlContent = await rootBundle.loadString("assets/TicTacToe.html");
        await controller.loadData(data: htmlContent);
      },
    )
    

内容的提问来源于stack exchange,提问作者joshua julius

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:12:03