-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Implementing switch expressions in rendering/
#143812
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implementing switch expressions in rendering/
#143812
Conversation
|
@Piinks can you take a look at this one since it is mostly slivers and scrolling? |
For sure! |
| lastFlexChild = child; | ||
| } else { | ||
| final BoxConstraints innerConstraints; | ||
| if (crossAxisAlignment == CrossAxisAlignment.stretch) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, this caught my eye. It is an enum without an exhaustive switch statement!
Do you think crossAxisAlignment and _direction can be used together?
I think there is one other if (crossAxisAlignment == CrossAxisAlignment.stretch) { in this file too if it seems feasible to alter the loci to be exhaustive.
What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that sounds great 🙂👍
I updated _computeSizes() to get rid of every == enum comparison. Really happy with how it looks now!
| final Size childSize; | ||
| final Offset scrollOffset; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could these be combined into a record for one switch statement? I noticed that in packages/flutter/lib/src/rendering/paragraph.dart in this PR. :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes they could! I had them combined originally but the line length was a bit much.
But after looking over it again, I think we could make it work by inverting the if-statement, so it returns early instead of indenting the whole function.
While I'm at it, I'll refactor position into an exhaustive switch statement too :)
Piinks
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
goderbauer
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
flutter/flutter@b77560e...c30f998 2024-02-27 [email protected] [flutter_tools] Fix missing stack trace from daemon (flutter/flutter#144113) 2024-02-27 [email protected] Roll Flutter Engine from 04ff2868ce80 to 0bc21ea7bc92 (21 revisions) (flutter/flutter#144208) 2024-02-26 [email protected] Move debugShowWidgetInspectorOverride (flutter/flutter#144029) 2024-02-26 [email protected] Allow `Listenable.merge()` to use any iterable (flutter/flutter#143675) 2024-02-26 [email protected] Mark firebase_release_smoke_test as `bringup: true` (flutter/flutter#144186) 2024-02-26 [email protected] refactor: Differentiate pubspec and resolution errors for plugins (flutter/flutter#142035) 2024-02-26 [email protected] Roll Flutter Engine from 34a8b9bdaaac to 04ff2868ce80 (1 revision) (flutter/flutter#144159) 2024-02-26 [email protected] Implementing `switch` expressions in `rendering/` (flutter/flutter#143812) 2024-02-26 [email protected] Roll Flutter Engine from 7a573c21a4ad to 34a8b9bdaaac (1 revision) (flutter/flutter#144147) 2024-02-26 [email protected] Roll Flutter Engine from a15326b2c439 to 7a573c21a4ad (1 revision) (flutter/flutter#144145) 2024-02-26 [email protected] Update copyDirectory to allow links to not be followed (flutter/flutter#144040) 2024-02-26 [email protected] Roll Packages from 7df2085 to 353086c (7 revisions) (flutter/flutter#144144) 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
flutter/flutter@b77560e...c30f998 2024-02-27 [email protected] [flutter_tools] Fix missing stack trace from daemon (flutter/flutter#144113) 2024-02-27 [email protected] Roll Flutter Engine from 04ff2868ce80 to 0bc21ea7bc92 (21 revisions) (flutter/flutter#144208) 2024-02-26 [email protected] Move debugShowWidgetInspectorOverride (flutter/flutter#144029) 2024-02-26 [email protected] Allow `Listenable.merge()` to use any iterable (flutter/flutter#143675) 2024-02-26 [email protected] Mark firebase_release_smoke_test as `bringup: true` (flutter/flutter#144186) 2024-02-26 [email protected] refactor: Differentiate pubspec and resolution errors for plugins (flutter/flutter#142035) 2024-02-26 [email protected] Roll Flutter Engine from 34a8b9bdaaac to 04ff2868ce80 (1 revision) (flutter/flutter#144159) 2024-02-26 [email protected] Implementing `switch` expressions in `rendering/` (flutter/flutter#143812) 2024-02-26 [email protected] Roll Flutter Engine from 7a573c21a4ad to 34a8b9bdaaac (1 revision) (flutter/flutter#144147) 2024-02-26 [email protected] Roll Flutter Engine from a15326b2c439 to 7a573c21a4ad (1 revision) (flutter/flutter#144145) 2024-02-26 [email protected] Update copyDirectory to allow links to not be followed (flutter/flutter#144040) 2024-02-26 [email protected] Roll Packages from 7df2085 to 353086c (7 revisions) (flutter/flutter#144144) 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
This pull request is part of the effort to solve issue #136139.
The previous
switchexpressions PR was comprised of many simple changes throughoutflutter/lib/src/, but due to some more in-depth refactoring influtter/lib/src/rendering/, I decided to submit the changes to this directory as a separate pull request.There was really just one function that I changed significantly; I'll add a comment for explanation.
Pre-launch Checklist
///).