将 `SystemUiMode` 的默认值设为全屏显示
概述
#如果您的 Flutter 应用以 Android SDK 版本 15 为目标,则您的应用会自动以全屏模式显示,正如 SystemUiMode
API 页面上所记录的那样。要维护非全屏应用行为(包括未设置的 SystemUiMode
),请按照 迁移指南中的步骤操作。
背景
#默认情况下,Android 会对所有以 Android 15 或更高版本为目标的应用强制执行 全屏模式。要了解有关此更改的更多信息,请查看 Android 15 版本说明。这会影响运行 Android SDK 15+ 或 API 35+ 的设备。
在 Flutter 3.27 之前,Flutter 应用默认以 Android 14 为目标,并且不会自动选择全屏模式,但当您选择以 Android 15 为目标时,您的应用**会**受到影响。如果您的应用以 flutter.targetSdkVersion
(默认情况下是这样)为目标,那么从 Flutter 版本 3.27 开始,它将以 Android 15 为目标,从而自动为您的应用选择全屏模式。
如果您的应用通过调用 SystemChrome.setEnabledSystemUIMode
显式设置 SystemUiMode.edgeToEdge
来全屏运行,那么您的应用已经迁移。需要更多时间迁移到全屏模式的应用必须使用以下步骤在运行 Android SDK 15 的设备上选择退出。
请注意以下事项
- Android 计划使此处详述的变通方法暂时有效。
- Flutter 计划在一年内与 Android(和 iOS)保持一致,默认支持全屏显示,因此请**在操作系统移除选择退出的功能之前迁移到全屏模式**。
迁移指南
#要在 SDK 15 上退出全屏显示,请在每个需要它的 Activity 中指定新的样式属性。如果您有一个父样式,子样式需要从中退出,则可以仅修改父样式。在以下示例中,更新从 flutter create
生成的样式配置。
默认情况下,Flutter 应用中使用的样式在 Android manifest 文件(your_app/android/app/src/main/AndroidManifest.xml
)中设置。通常,样式由 @style
表示,并有助于为您的应用设置主题。在 manifest 文件中修改这些默认样式。
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application ...>
<activity ...>
<!-- Style to modify: -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
</activity>
</application>
</manifest>
在以下位置找到样式定义:your_app/android/app/src/main/res/values/styles.xml
。
将以下属性添加到适当的样式中
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
...
<!-- Add the following line: -->
<item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
</style>
...
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
...
<!-- Add the following line: -->
<item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
</style>
</resources>
确保在夜间模式样式文件中也进行相同的更改:your_app/android/app/src/main/res/values-night/styles.xml
。
确保在两个文件中一致地更新这两个样式。
此修改后的样式将使以 Android SDK 15 为目标的应用退出全屏显示。现在您已完成!
时间线
#从 Flutter 3.27 开始,Flutter 应用默认以 Android 15 为目标,因此如果您希望使用此版本而不手动为 Flutter 应用设置较低的目标 SDK 版本,请按照前面的 迁移步骤 来维持未设置或非全屏的 SystemUiMode
。
已包含在版本:3.26.0-0.0.pre
稳定版本:3.27