Flutter应用Release版本资源图片不显示、调试正常灰屏问题求助
Flutter发布版APK Asset图片不显示灰屏解决方案
- 修复布局逻辑错误
你当前代码中GridView.count的子组件外层包裹了Expanded组件,Expanded仅支持在Row、Column、Flex三类父组件中使用,GridView子元素自身会根据网格配置自动计算尺寸,不需要额外套Expanded。Debug模式下Flutter布局容错性更高,不会触发异常,Release模式会进行布局优化,非法的Expanded会导致容器尺寸计算错误,图片无法正常渲染。
直接删除alpha方法返回的外层Expanded即可,修改后的代码参考:
Widget alpha(var name) { var letters = 'assets/images/$name.jpg'; return Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(20), image: DecorationImage(image: AssetImage(letters), fit: BoxFit.cover), gradient: LinearGradient( begin: Alignment.bottomRight, colors: [ Colors.black.withOpacity(.4), Colors.black.withOpacity(.2), ], ), ), child: InkWell(onTap: () { final player = AudioCache(); player.play('$name.m4a'); }), ); }
- 校验资源文件名大小写
开发环境的Windows/macOS文件系统默认不区分大小写,但是Android、iOS的安装包文件系统严格区分大小写,请确保assets/images/目录下的图片文件名和代码中引用的$name.jpg大小写完全一致,比如代码中引用1.jpg,实际文件不能命名为1.JPG、1.Jpg。 - 确认
pubspec.yaml资源配置正确
确保资源路径配置没有格式错误,建议直接配置文件夹路径匹配所有对应资源,参考配置:
flutter: assets: - assets/images/ - assets/audio/ # 音频资源如果存放于asset目录也需要对应配置
- 关闭构建时资源压缩(可选)
如果以上步骤都验证无问题,可在android/app/build.gradle中配置关闭Release构建的资源压缩,避免构建过程中误删未识别到的资源:
android { buildTypes { release { shrinkResources false minifyEnabled false // 保留其他原有release配置 } } }
故障效果图:
内容的提问来源于stack exchange,提问作者maliha arash
相关产品推荐
相关产品推荐

