概述

#

如果您的 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 的裝置上選擇退出。

請注意以下事項

  1. Android 計劃使此處詳述的變通方法暫時有效。
  2. Flutter 計劃在一年內與 Android(和 iOS)保持一致,預設支援全屏顯示,因此請**在作業系統移除選擇退出的功能之前遷移到全屏模式**。

遷移指南

#

要在 SDK 15 上退出全屏顯示,請在每個需要它的 Activity 中指定新的樣式屬性。如果您有一個父樣式,子樣式需要從中退出,則可以僅修改父樣式。在以下示例中,更新從 flutter create 生成的樣式配置。

預設情況下,Flutter 應用中使用的樣式在 Android manifest 檔案(your_app/android/app/src/main/AndroidManifest.xml)中設定。通常,樣式由 @style 表示,並有助於為您的應用設定主題。在 manifest 檔案中修改這些預設樣式。

AndroidManifest.xml
xml
<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

將以下屬性新增到適當的樣式中

styles.xml
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

參考資料

#