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
相关产品推荐
相关产品推荐

