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

Flutter Native Splash Screen导航栏设置透明后出现渐变异常求助

解决Flutter启动页导航栏渐变问题,保持透明状态

1. 完善Android styles.xml配置

在android/app/src/main/res/values/styles.xml(及对应高版本values目录如values-v29)的启动页Style中,补充以下属性,确保导航栏完全透明且无渐变:

<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
    <!-- 原有配置 -->
    <item name="android:windowBackground">@drawable/launch_background</item>
    <item name="android:windowFullscreen">true</item>
    <!-- 添加以下属性 -->
    <item name="android:navigationBarColor">@android:color/transparent</item>
    <item name="android:windowTranslucentNavigation">false</item>
    <item name="android:navigationBarDividerColor">@android:color/transparent</item>
    <!-- Android 10+ 禁用导航栏对比度强制 -->
    <item name="android:enforceNavigationBarContrast">false</item>
</style>

2. 配置Flutter Native Splash包参数

在pubspec.yaml的flutter_native_splash配置中,明确指定导航栏颜色为透明:

flutter_native_splash:
  # 你的启动页基础配置
  color: "#ffffff"
  image: assets/splash.png
  android:
    fullscreen: true
    # 直接指定导航栏透明
    navigation_bar_color: "@android:color/transparent"
  ios:
    fullscreen: true

配置完成后执行flutter pub run flutter_native_splash:create重新生成启动页资源。

3. 在MainActivity中强制锁定导航栏状态

为避免后续运行时系统重置导航栏属性,在Android的MainActivity中添加代码,确保启动后导航栏保持透明:

Kotlin版本(MainActivity.kt):

import android.os.Bundle
import io.flutter.embedding.android.FlutterActivity

class MainActivity : FlutterActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        window.navigationBarColor = android.graphics.Color.TRANSPARENT
        window.isNavigationBarContrastEnforced = false
    }
}

Java版本(MainActivity.java):

import android.os.Bundle;
import io.flutter.embedding.android.FlutterActivity;

public class MainActivity extends FlutterActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setNavigationBarColor(android.graphics.Color.TRANSPARENT);
        getWindow().setNavigationBarContrastEnforced(false);
    }
}

4. 清理缓存并重新运行

执行以下命令清理项目缓存,避免旧配置残留:

flutter clean
flutter pub get
flutter run

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:13:18