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

使用flutter_native_splash时背景图适配需求:高度匹配屏幕宽度溢出隐藏

Flutter启动页背景图高度适配、宽度裁剪方案(flutter_native_splash)

针对你用1024×1024图片做启动页,想要高度匹配屏幕、宽度超出隐藏不拉伸的需求,直接用flutter_native_splash默认的gravity属性确实达不到效果,需要针对Android和iOS分别调整配置:

Android 端处理

  1. 创建自定义启动页布局
    在android/app/src/main/res/layout目录下新建launch_screen.xml(无该目录则手动创建),内容如下:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitStart"
        android:src="@drawable/launch_image"
        android:clipToPadding="true" />
</FrameLayout>

scaleType="fitStart"会让图片按比例缩放至高度铺满屏幕,宽度随之等比放大,超出屏幕的部分被自动裁剪;clipToPadding="true"确保超出区域被隐藏。

  1. 配置flutter_native_splash
    在pubspec.yaml中指定使用自定义布局:
flutter_native_splash:
  color: "#ffffff" # 背景色建议和图片边缘保持一致
  image: assets/images/your_splash_image.png # 替换为你的图片路径
  android:
    custom_layout: true
    layout_name: "@layout/launch_screen"

iOS 端处理

iOS端无需自定义布局,直接在pubspec.yaml中配置content mode即可:

flutter_native_splash:
  # 保留上述color、image配置
  ios:
    content_mode: "scaleAspectFill"

scaleAspectFill会让图片按比例缩放,优先填满屏幕高度,宽度超出部分被自动裁剪,iOS默认开启裁剪功能,无需额外设置。

最终生成启动页

配置完成后,执行命令生成启动页文件:

flutter pub run flutter_native_splash:create

重新运行项目即可看到效果:图片高度完全匹配屏幕,宽度超出部分隐藏,不会出现拉伸变形问题。

内容的提问来源于stack exchange,提问作者Atanas Nankinski

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 11:01:07