Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix the scrolling layout deviation of
CupertinoActionSheet
(#149439)
This PR changes `CupertinoActionSheet`'s layout algorithm, so that the actions section always has the lower priority to take up vertical space with a fixed minimum height of 84.3 px. Currently `CupertinoActionSheet` uses a very complicated rule the determine the sizes of various sections: 1. If there are <= 3 buttons and a cancel button, or 1 button without a cancel button, then the actions section should never scroll. 2. Otherwise, then the content section takes priority to take over spaces but must leave at least `actionsMinHeight` for the actions section. This has been the case since `CupertinoActionSheet` was first introduced ([first PR](flutter/flutter#19232)). Maybe it was the case before, but it's no longer reproducible on the latest SwiftUI. The following images for comparison (left to right: Current Flutter, Flutter after this PR, SwiftUI). Pay attention to whether the actions section scrolls. (There are also some height/padding issues, which will be fixed in a future PR.) Two buttons: <img width="1006" alt="image" src="https://github.com/flutter/flutter/assets/1596656/27ca5df7-1140-4bfd-9a5f-3b5972632c92"> Three buttons: <img width="1025" alt="image" src="https://github.com/flutter/flutter/assets/1596656/f2be6a5c-1713-4ffe-9705-27a668e5133d"> Four buttons: <img width="1024" alt="image" src="https://github.com/flutter/flutter/assets/1596656/5b90d9f4-11ed-4c04-bdea-0b81b1d2bd3d"> In SwiftUI, the action section seems to always have a minimum height of ~84 pixels regardless of the number of buttons. Therefore this PR also fixed this behavior, and adjusted the related tests.
- Loading branch information