Flutter Android 13启动屏显示异常:大图切换为小图问题
解决Flutter启动屏Android 12+/13显示不连贯问题
问题分析
Android 12及以上采用全新的Splash Screen API,和Android 11及以下的启动屏实现逻辑差异较大。你遇到的「先显示大图再切换为小图」问题,核心原因大概率是Android 12+专用图片尺寸不符合系统规范,或是旧生成资源残留、缓存未清理导致的显示异常。
具体解决方案
1. 规范Android 12+启动图尺寸
针对launcher_android_12.png,需满足以下要求:
- 仅保留透明背景的图标主体,不要附加背景色(背景由配置的
color参数控制) - 图标占图片整体比例不超过60%(系统会自动居中缩放,超出比例会导致图标显示过大)
- 推荐最小尺寸为1080x1080px,适配不同分辨率设备
2. 清理旧资源并重新生成
旧的启动屏资源残留会干扰显示,按以下步骤操作:
- 删除
android/app/src/main/res目录下所有以splash开头的资源文件夹(如drawable/splash_*、mipmap/splash_*)及相关配置文件 - 执行命令重新生成启动屏:
flutter pub run flutter_native_splash:create
- 清理项目缓存:
flutter clean flutter pub get
3. 校验配置一致性
确保pubspec.yaml配置无冲突:
flutter_native_splash: color: "#eeeeee" image: assets/launcher/launcher.png # 适配Android 11及以下、iOS等平台 android_12: image: assets/launcher/launcher_android_12.png # 仅适配Android 12+ color: "#eeeeee" # 必须与通用配置的color完全一致,避免背景色跳变 web: false
重点:Android 12+的背景色必须和通用配置保持一致,否则会因背景色变化加剧"不连贯"的视觉感受。
4. 清除设备缓存后测试
在出现问题的设备上:
- 彻底卸载应用
- 清除设备对应应用的缓存(模拟器可直接重置或清除应用数据)
- 重新编译安装并运行应用
验证逻辑
Android 12+系统会先加载系统级启动屏(基于android_12配置),随后无缝过渡到Flutter初始化完成后的界面。只要图片尺寸合规、资源生成正确,就能避免大图切换小图的问题。
内容的提问来源于stack exchange,提问作者Gandalf
相关产品推荐
相关产品推荐

