Skip to content

Commit 146ea07

Browse files
authored
[Android] Update SystemUiMode and setSystemChromeEnabledSystemUIMode docs to note targeting Android 15+ change (flutter#153466)
Updates `SystemUiMode` and `setSystemChromeEnabledSystemUIMode` documentation to reflect that edge-to-edge mode is used by default if the Flutter app targets Android 15. Part of flutter#150367 and framework counterpart to flutter/engine#54560.
1 parent eb42a01 commit 146ea07

File tree

1 file changed

+39
-7
lines changed

1 file changed

+39
-7
lines changed

packages/flutter/lib/src/services/system_chrome.dart

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,21 @@ enum SystemUiOverlay {
9292
/// These modes mimic Android-specific display setups.
9393
///
9494
/// Used by [SystemChrome.setEnabledSystemUIMode].
95+
///
96+
/// Flutter apps use [SystemUiMode.edgeToEdge] by default and setting any
97+
/// of the other [SystemUiMode]s will NOT work unless you perform the migration
98+
/// detailed in
99+
/// https://docs.flutter.dev/release/breaking-changes/default-systemuimode-edge-to-edge.
95100
enum SystemUiMode {
96101
/// Fullscreen display with status and navigation bars presentable by tapping
97102
/// anywhere on the display.
98103
///
99-
/// Available starting at SDK 16 or Android J. Earlier versions of Android
100-
/// will not be affected by this setting.
104+
/// Available starting at Android SDK 4.1 (API 16). Earlier versions of Android
105+
/// will not be affected by this setting. However, if your app targets Android
106+
/// SDK 15 (API 35) or later (Flutter does this by default), then you must
107+
/// migrate using the instructions in
108+
/// https://docs.flutter.dev/release/breaking-changes/default-systemuimode-edge-to-edge
109+
/// to use this mode.
101110
///
102111
/// For applications running on iOS, the status bar and home indicator will be
103112
/// hidden for a similar fullscreen experience.
@@ -114,8 +123,12 @@ enum SystemUiMode {
114123
/// Fullscreen display with status and navigation bars presentable through a
115124
/// swipe gesture at the edges of the display.
116125
///
117-
/// Available starting at SDK 19 or Android K. Earlier versions of Android
118-
/// will not be affected by this setting.
126+
/// Available starting at Android SDK 4.4 (API 19). Earlier versions of
127+
/// Android will not be affected by this setting. However, if your app targets
128+
/// Android SDK 15 (API 35) or later (Flutter does this by default), then you
129+
/// must migrate using the instructions in
130+
/// https://docs.flutter.dev/release/breaking-changes/default-systemuimode-edge-to-edge
131+
/// to use this mode.
119132
///
120133
/// For applications running on iOS, the status bar and home indicator will be
121134
/// hidden for a similar fullscreen experience.
@@ -133,8 +146,12 @@ enum SystemUiMode {
133146
/// Fullscreen display with status and navigation bars presentable through a
134147
/// swipe gesture at the edges of the display.
135148
///
136-
/// Available starting at SDK 19 or Android K. Earlier versions of Android
137-
/// will not be affected by this setting.
149+
/// Available starting at Android SDK 4.4 (API 19). Earlier versions of
150+
/// Android will not be affected by this setting. However, if your app targets
151+
/// Android SDK 15 (API 35) or later (Flutter does this by default), then you
152+
/// must migrate using the instructions in
153+
/// https://docs.flutter.dev/release/breaking-changes/default-systemuimode-edge-to-edge
154+
/// to use this mode.
138155
///
139156
/// For applications running on iOS, the status bar and home indicator will be
140157
/// hidden for a similar fullscreen experience.
@@ -151,9 +168,13 @@ enum SystemUiMode {
151168
/// Fullscreen display with status and navigation elements rendered over the
152169
/// application.
153170
///
154-
/// Available starting at SDK 29 or Android 10. Earlier versions of Android
171+
/// Available starting at Android SDK 10 (API 29). Earlier versions of Android
155172
/// will not be affected by this setting.
156173
///
174+
/// If your app targets Android SDK 15 (API 35) or later (Flutter does this by
175+
/// default), then this mode is used by default on Android. This mode is also
176+
/// used by default on iOS.
177+
///
157178
/// For applications running on iOS, the status bar and home indicator will be
158179
/// visible.
159180
///
@@ -181,6 +202,11 @@ enum SystemUiMode {
181202
///
182203
/// Omitting both overlays will result in the same configuration as
183204
/// [SystemUiMode.leanBack].
205+
///
206+
/// If your app targets Android SDK 15 (API 35) or later, then you must
207+
/// migrate using the instructions in
208+
/// https://docs.flutter.dev/release/breaking-changes/default-systemuimode-edge-to-edge
209+
/// to use this mode.
184210
manual,
185211
}
186212

@@ -502,6 +528,12 @@ abstract final class SystemChrome {
502528
/// is true, the application is not fullscreen. See
503529
/// [SystemChrome.setSystemUIChangeCallback] to respond to these changes in a
504530
/// fullscreen application.
531+
///
532+
/// If your app targets Android SDK 15 (API 35) or later (Flutter does this by
533+
/// default), then your Flutter app uses [SystemUiMode.edgeToEdge] by default
534+
/// on Android and setting any of the other [SystemUiMode]s will NOT work
535+
/// unless you perform the migration detailed in
536+
/// https://docs.flutter.dev/release/breaking-changes/default-systemuimode-edge-to-edge.
505537
static Future<void> setEnabledSystemUIMode(SystemUiMode mode, { List<SystemUiOverlay>? overlays }) async {
506538
if (mode != SystemUiMode.manual) {
507539
await SystemChannels.platform.invokeMethod<void>(

0 commit comments

Comments
 (0)