Flutter自定义启动页在Android 10不显示图标问题求助
解决Android 10上flutter_native_splash仅显示背景不显示图标的问题
从你的配置和代码里梳理出关键问题,按以下步骤排查修复:
1. 修正pubspec.yaml的配置错误
你的配置存在两处致命问题:
- 颜色值多写了一个
#:所有"##1e1b3a"格式的颜色值需要改为"#1e1b3a"(包括根节点的color和android_12下的颜色配置) android_12下的属性拼写错误:icon_backgroound_color应为icon_background_color
修正后的flutter_native_splash配置:
flutter_native_splash: color: "#1e1b3a" android: true ios: false fullscreen: true icon: "images/adecop-logo.png" android_12: icon_background_color: "#1e1b3a"
2. 清理缓存并重新生成启动页资源
旧缓存资源可能导致异常,执行以下操作:
- 运行
flutter clean清理项目缓存 - 运行
flutter pub run flutter_native_splash:create重新生成原生启动页资源 - 卸载测试设备上的旧应用,重新安装
3. 检查Android 10(API 29)的原生配置
Android 10不属于Android 12+范畴,不会读取android_12下的配置,需确保低版本启动页布局正确:
- 打开
android/app/src/main/res/drawable/launch_background.xml,确认包含图标引用,正确结构示例:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@color/flutter_native_splash_background" /> <item> <bitmap android:gravity="center" android:src="@drawable/flutter_native_splash_icon" /> </item> </layer-list>
- 确认
android/app/src/main/AndroidManifest.xml中,启动Activity的android:theme指向@style/LaunchTheme,未被其他自定义主题覆盖
4. 修正main.dart的重复初始化问题
你重复调用了WidgetsFlutterBinding.ensureInitialized(),可能导致启动页逻辑异常,修正后的代码:
Future main() async { final widgetsBinding = WidgetsFlutterBinding.ensureInitialized(); FlutterNativeSplash.preserve(widgetsBinding: widgetsBinding); await Future.delayed(const Duration(seconds: 1)); FlutterNativeSplash.remove(); runApp(const HomePage()); }
5. 排查图标本身的问题
- 确认
images/adecop-logo.png路径正确、文件存在,且为透明背景的PNG格式 - 图标尺寸建议至少108x108dp,避免过大或过小导致显示异常
- 可临时替换为简单测试图标(如Flutter默认图标),排除图标本身的兼容性问题
内容的提问来源于stack exchange,提问作者Luciano Zimermann
相关产品推荐
相关产品推荐

