-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Description
Steps to reproduce
Hi,
I've tried various options to get the content to scroll behind the bottom system navigation bar as Google intended, while still getting padding for lists and no content cut off. I also read this: https://docs.flutter.dev/release/breaking-changes/default-systemuimode-edge-to-edge but there is only a guide for opt-out what will not work in the future.
Option 1:
Wrap your app with SafeArea(top: false, bottom: true)
→ The content does not flow behind the system navigation bar, the behavior is the same as before.
I'm not even sure if this is a legitimate approach to preserve the old layout style, but with Edge-to-Edge policy soon being enforced, will apps that retain the previous behavior and styling still pass Play Store review?
Option 2:
Wrap your app with MediaQuery.viewPaddingOf(context).bottom padding
→ The content does not flow behind the system navigation bar, the behavior is the same as before. I don't know why Flutter interprets it this way and doesn't simply add padding when necessary.
Option 3, and apparently the only one that works:
Go through your entire app and check every scrollable area, lists, column, bottom sheet and so on and manually add MediaQuery.viewPaddingOf(context).bottom.
Current Result
Is this truly the only viable solution to support the new feature? Since opting out won’t be possible in the future, I’d prefer to implement it the correct way from the start. Calling SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge) doesn’t seem to make a difference and is likely either already invoked internally or enforced by default. Should we remove this?
Expected results
Clear documentation and guidelines are essential at this point, especially since this behavior is being enforced and apps will no longer be eligible for updates in approximately 55 days if not properly addressed. What´s the recommended solution to support system control overlays the content and what´s the best way to prevent it and is it even a viable solution in the long term?
This is also related to: flutter/flutter#170640
I'm on Flutter version: Flutter 3.27.4