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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:40:27