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

Flutter如何将SVG格式文件设置为应用启动页(Splash Screen)?

问题原因
  1. 原生启动阶段的系统限制:Android冷启动初期尚未加载应用的完整运行环境,对矢量资源的支持存在版本兼容问题:Android 5.0以下默认不支持VectorDrawable,部分厂商的定制ROM在启动阶段也存在矢量图加载异常的问题。
  2. 第三方库的兼容策略:splash_screen_view、flutter_native_splash这类库为了保证全平台全版本的兼容性,底层默认仅适配了PNG、JPG这类通用位图格式,未做矢量资源的兼容处理。
  3. 配置语法错误:你当前launch_background.xml中引用资源的写法@drawable:splashscreen存在语法错误,正确写法应为@drawable/splashscreen,这个错误会直接导致资源加载失败。
可行实现方案

方案1:原生层VectorDrawable兼容方案(仅Android端)

适合需要纯原生启动、不需要额外Flutter侧逻辑的场景:

  • 先通过Android Studio自带的Vector Asset工具,将SVG文件导入生成标准的VectorDrawable格式XML文件,放入android/app/src/main/res/drawable目录,命名为splash_logo.xml。
  • 修正launch_background.xml的配置:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/black" />
    <item
        android:drawable="@drawable/splash_logo"
        android:gravity="center"
        android:width="200dp"
        android:height="200dp" />
</layer-list>
  • 在android/app/src/main/res/values/styles.xml的splashScreenTheme样式中添加矢量图兼容配置:
<style name="splashScreenTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowBackground">@drawable/launch_background</item>
    <item name="vectorDrawables.useSupportLibrary">true</item>
</style>
  • 若需要兼容Android 4.4及更低版本,可以通过Android Studio的Vector Asset工具自动生成对应分辨率的PNG位图,放入对应dpi的资源目录做兜底即可。

方案2:双阶段启动页方案(全平台通用,支持iOS)

适合追求SVG效果一致性、不需要严格纯原生启动的场景,也是目前Flutter应用使用SVG启动页的主流方案:

  • 原生层仅设置纯色背景作为启动过渡,删除AndroidManifest中io.flutter.embedding.android.SplashScreenDrawable的meta-data配置,避免原生层加载异常。
  • Flutter引擎初始化完成后,立刻在Flutter侧使用flutter_svg库加载SVG格式的启动页,等业务侧初始化逻辑(如权限申请、配置拉取等)完成后,再关闭启动页跳转至首页。
  • 该方案完全规避了原生平台的矢量图兼容问题,还可以轻松实现启动页动画效果,适配所有系统版本。

内容的提问来源于stack exchange,提问作者Marius Atasiei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:18:03