Fix: CupertinoActionSheet should take up max height when actions section is short#150708
Fix: CupertinoActionSheet should take up max height when actions section is short#150708auto-submit[bot] merged 22 commits intoflutter:masterfrom
CupertinoActionSheet should take up max height when actions section is short#150708Conversation
bleroux
left a comment
There was a problem hiding this comment.
While reading this PR for learning purposes, I spotted two small nits.
Co-authored-by: Bruno Leroux <[email protected]>
…o as-priority-column
|
|
||
| void main() { | ||
| testWidgets('Overall looks correctly under light theme', (WidgetTester tester) async { | ||
| testWidgets('Overall appearance is correct for the light theme', (WidgetTester tester) async { |
There was a problem hiding this comment.
I sneaked in some test name fixes as suggested by Hans in #150725 (comment)
chunhtai
left a comment
There was a problem hiding this comment.
refactor looks good, just some question and nits
| // Both child widgets stretch horizontally to the parent's maximum width | ||
| // constraint, with vertical space allocated in this priority: | ||
| // | ||
| // 1. The `bottom` widget receives its requested height, up to a |
There was a problem hiding this comment.
I can't parse this sentence. according to the code height <= bottomMinHeight.
should it be call bottomMaxHeight
There was a problem hiding this comment.
It might be easier to understand it from the other way.
- If both widgets fit in the container, great, render both in their intrinsic height.
- If not, then prioritize reducing the bottom widget's height.
- However, the bottom widget can not be reduced too much. It has a
minHeight. If the bottom widget has been reduced tominHeight, then further reduction has to come from the top widget.
- However, the bottom widget can not be reduced too much. It has a
| @override | ||
| double computeMinIntrinsicHeight(double width) { | ||
| assert(childCount == 2); | ||
| return firstChild!.getMinIntrinsicHeight(width) + lastChild!.getMinIntrinsicHeight(width); |
There was a problem hiding this comment.
This should also roughly follow the layout algorithm, are we assume this widget will not be wrap in a intrinsicHeight widget?
There was a problem hiding this comment.
should this just call _childHeight with infinite height constrant?
There was a problem hiding this comment.
Sorry, I may not be understanding computeMinIntrinsicHeight correctly. Can you explain more how you think it should change and why?
There was a problem hiding this comment.
I originally thought the bottom will have min height, but looks like it can be as small as it can. sorry for the confusion, this looks fine.
…ction is short (flutter#150708) This PR addresses a bug from the previous rewrite of the `CupertinoActionSheet` height allocation algorithm. The previous approach assigns the content section with a minimal height. As a result, if the actions section is shorter than `_kActionSheetActionsSectionMinHeight`, the remaining space will not be taken by the content section. As far as I know, this algorithm can not be implemented by simply compositing simple layout widgets, and therefore I created a new widget `_PriorityColumn` that uses a custom layout algorithm. (The resulting code is still shorter (and cleaner) than before the rewrite!) Some other trivial refactor is also done to clean up the code around parameters of `_ActionSheetMainSheet`.
…tions section is short (flutter/flutter#150708)
…tions section is short (flutter/flutter#150708)
…tions section is short (flutter/flutter#150708)
…tions section is short (flutter/flutter#150708)
…tions section is short (flutter/flutter#150708)
…tions section is short (flutter/flutter#150708)
flutter/flutter@99bb2ff...af913a7 2024-07-02 [email protected] Use `ErrorHandlingFileSystem.deleteIfExists` when deleting .plugin_symlinks (flutter/flutter#151073) 2024-07-02 [email protected] ScrollEndNotification example: auto-scroll based on RenderSliver constraints and geometry (flutter/flutter#143538) 2024-07-02 [email protected] Roll Packages from 412ec46 to d2705fb (13 revisions) (flutter/flutter#151169) 2024-07-02 [email protected] docimports for painting (flutter/flutter#151143) 2024-07-02 [email protected] docimports for scheduler (flutter/flutter#151126) 2024-07-02 [email protected] `dismissible.dart` code cleanup (flutter/flutter#150276) 2024-07-02 [email protected] docimports for physics (flutter/flutter#151125) 2024-07-02 [email protected] docimports for services (flutter/flutter#151134) 2024-07-02 [email protected] docimports for cupertino (flutter/flutter#151149) 2024-07-02 [email protected] docimports for gestures (flutter/flutter#151123) 2024-07-02 [email protected] Docimports for foundation (flutter/flutter#151119) 2024-07-02 [email protected] docimports for semantics (flutter/flutter#151132) 2024-07-02 [email protected] [flutter_driver] add allocator mtl to memory event allowlist. (flutter/flutter#151153) 2024-07-02 [email protected] Roll Flutter Engine from 40c087b31515 to 433d360eee11 (7 revisions) (flutter/flutter#151165) 2024-07-02 [email protected] Refactor BuildInfo to always require packageConfigPath (flutter/flutter#150559) 2024-07-02 [email protected] Roll Flutter Engine from d3c5bd66a78f to 40c087b31515 (1 revision) (flutter/flutter#151156) 2024-07-02 [email protected] Roll Flutter Engine from fc5bc14e6091 to d3c5bd66a78f (1 revision) (flutter/flutter#151155) 2024-07-02 [email protected] Fix: `CupertinoActionSheet` should take up max height when actions section is short (flutter/flutter#150708) 2024-07-02 [email protected] Roll Flutter Engine from 3456fee1a6b9 to fc5bc14e6091 (8 revisions) (flutter/flutter#151150) 2024-07-02 [email protected] [tool] remove some temporary printTrace calls (flutter/flutter#151074) 2024-07-01 [email protected] Implementing a few switch statements (flutter/flutter#150946) 2024-07-01 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Upgrade template Gradle, App AGP, Module AGP, and Kotlin versions, and tests (#150969)" (flutter/flutter#151147) 2024-07-01 [email protected] Upgrade template Gradle, App AGP, Module AGP, and Kotlin versions, and tests (flutter/flutter#150969) 2024-07-01 [email protected] Roll Flutter Engine from b57a044ed10f to 3456fee1a6b9 (5 revisions) (flutter/flutter#151127) 2024-07-01 [email protected] Read AndroidManifest.xml and emit manifest-aar-impeller-(enabled|disabled) analytics (flutter/flutter#150970) 2024-07-01 [email protected] More docimports for animation library (flutter/flutter#151011) 2024-07-01 [email protected] Bump dartdoc to 8.0.10 (flutter/flutter#151107) 2024-07-01 [email protected] Fix missing `[` in docs (flutter/flutter#151091) 2024-07-01 [email protected] Roll pub packages (flutter/flutter#151028) 2024-07-01 [email protected] Fix teardown of a FocusScopeNode in material/app_test (flutter/flutter#151115) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…ction is short (flutter#150708) This PR addresses a bug from the previous rewrite of the `CupertinoActionSheet` height allocation algorithm. The previous approach assigns the content section with a minimal height. As a result, if the actions section is shorter than `_kActionSheetActionsSectionMinHeight`, the remaining space will not be taken by the content section. As far as I know, this algorithm can not be implemented by simply compositing simple layout widgets, and therefore I created a new widget `_PriorityColumn` that uses a custom layout algorithm. (The resulting code is still shorter (and cleaner) than before the rewrite!) Some other trivial refactor is also done to clean up the code around parameters of `_ActionSheetMainSheet`.
…tions section is short (flutter/flutter#150708)
This PR addresses a bug from the previous rewrite of the
CupertinoActionSheetheight allocation algorithm.The previous approach assigns the content section with a minimal height. As a result, if the actions section is shorter than
_kActionSheetActionsSectionMinHeight, the remaining space will not be taken by the content section.As far as I know, this algorithm can not be implemented by simply compositing simple layout widgets, and therefore I created a new widget
_PriorityColumnthat uses a custom layout algorithm. (The resulting code is still shorter (and cleaner) than before the rewrite!)Some other trivial refactor is also done to clean up the code around parameters of
_ActionSheetMainSheet.Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.