將 `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