Skip to content
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

Fix empty Stack with infinite constraints throws #102642

Conversation

bleroux
Copy link
Contributor

@bleroux bleroux commented Apr 27, 2022

Description

Before this PR, when a Stack is empty and is given infinite constraints, an assertion error was thrown.
The previous assertion was added by the following PR : #16250

This PR update RenderStack to return the smallest valid Size instead of an assertion error.

Related Issue

Fixes #102640
Fixes #88575

Tests

Add one test in rendering/slack_test.dart

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [Tree Hygiene] wiki page, which explains my responsibilities.
  • I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
  • I signed the [CLA].
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • All existing and new tests are passing.

@flutter-dashboard flutter-dashboard bot added the framework flutter/packages/flutter repository. See also f: labels. label Apr 27, 2022
@goderbauer goderbauer self-requested a review April 27, 2022 21:44
@bleroux bleroux force-pushed the empty_stack_with_infinite_constraints branch from 59568fa to 09e4f8c Compare April 28, 2022 05:34
@bleroux bleroux changed the title Add an error message for empty Stack with infinite constraints Fix empty Stack with infinite constraints throws Apr 28, 2022
@@ -520,8 +520,7 @@ class RenderStack extends RenderBox
assert(_resolvedAlignment != null);
bool hasNonPositionedChildren = false;
if (childCount == 0) {
assert(constraints.biggest.isFinite);
return constraints.biggest;
return constraints.smallest;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is breaking existing behavior. If the biggest possible size the constraint allow is finite, the stack should continue to size itself to be as big as possible.

If that size is infinite, we could change this to the smallest possible size instead of asserting.

@bleroux bleroux force-pushed the empty_stack_with_infinite_constraints branch from 09e4f8c to c023b70 Compare May 4, 2022 07:37
@bleroux bleroux requested a review from goderbauer May 4, 2022 09:19
Copy link
Member

@goderbauer goderbauer left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@bleroux bleroux force-pushed the empty_stack_with_infinite_constraints branch from 9783f39 to 1ce7faf Compare May 7, 2022 06:28
@fluttergithubbot fluttergithubbot merged commit c180971 into flutter:master May 7, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request May 7, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 7, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
ditman added a commit to ditman/flutter-packages that referenced this pull request May 9, 2022
Roll Flutter from b305eb633780 to 4c573207acc3 (33 revisions)

flutter/flutter@b305eb6...4c57320

2022-05-09 engine-flutter-autoroll@skia.org Roll Flutter Engine from 71b9adccfb63 to 6248a5a9ae28 (1 revision) (flutter/flutter#103350)
2022-05-09 engine-flutter-autoroll@skia.org Roll Flutter Engine from 3af7fb24d4dd to 71b9adccfb63 (1 revision) (flutter/flutter#103347)
2022-05-09 jesus_sguerrero@hotmail.com [flutter_tools] stringArg refactor (flutter/flutter#103231)
2022-05-09 maistho@gmail.com Replace ListView with ListView.builder for LicensesPage (flutter/flutter#102692)
2022-05-09 gspencergoog@users.noreply.github.com Adds `menuBarMenuLabel`, and removes unneeded key localizations (flutter/flutter#102100)
2022-05-09 engine-flutter-autoroll@skia.org Roll Plugins from 49b06b3 to c5c319a (15 revisions) (flutter/flutter#103345)
2022-05-09 engine-flutter-autoroll@skia.org Roll Engine from e7c44a582c58 to 3af7fb24d4dd (1 revision) (flutter/flutter#103334)
2022-05-09 engine-flutter-autoroll@skia.org Roll Engine from c02712fe1160 to e7c44a582c58 (1 revision) (flutter/flutter#103333)
2022-05-09 engine-flutter-autoroll@skia.org Roll Engine from 6efd8f00dcc6 to c02712fe1160 (1 revision) (flutter/flutter#103327)
2022-05-09 tessertaha@gmail.com `CupertinoTabScaffold`/`CupertinoTabController`: Add interactive examples (flutter/flutter#103196)
2022-05-09 engine-flutter-autoroll@skia.org Roll Engine from c930e64a13bc to 6efd8f00dcc6 (1 revision) (flutter/flutter#103323)
2022-05-08 engine-flutter-autoroll@skia.org Roll Engine from d0e6e14d27cc to c930e64a13bc (2 revisions) (flutter/flutter#103308)
2022-05-08 engine-flutter-autoroll@skia.org Roll Engine from fffb3eb58e7d to d0e6e14d27cc (1 revision) (flutter/flutter#103307)
2022-05-08 danny@tuppeny.com Use consistent date instead of DateTime.now() in evaluation tests (flutter/flutter#103269)
2022-05-08 engine-flutter-autoroll@skia.org Roll Engine from 259ccadd8203 to fffb3eb58e7d (1 revision) (flutter/flutter#103298)
2022-05-08 engine-flutter-autoroll@skia.org Roll Engine from 0b84783081a7 to 259ccadd8203 (1 revision) (flutter/flutter#103293)
2022-05-08 engine-flutter-autoroll@skia.org Roll Engine from 19d5f037f221 to 0b84783081a7 (1 revision) (flutter/flutter#103291)
2022-05-08 engine-flutter-autoroll@skia.org Roll Engine from 2d1f34cbdde2 to 19d5f037f221 (1 revision) (flutter/flutter#103289)
2022-05-08 engine-flutter-autoroll@skia.org Roll Engine from b89e093d887f to 2d1f34cbdde2 (1 revision) (flutter/flutter#103287)
2022-05-08 engine-flutter-autoroll@skia.org Roll Engine from aa80520b7fc9 to b89e093d887f (1 revision) (flutter/flutter#103286)
2022-05-08 engine-flutter-autoroll@skia.org Roll Engine from 4c05cb763866 to aa80520b7fc9 (1 revision) (flutter/flutter#103283)
2022-05-07 engine-flutter-autoroll@skia.org Roll Engine from 235d951ccfbd to 4c05cb763866 (1 revision) (flutter/flutter#103279)
2022-05-07 engine-flutter-autoroll@skia.org Roll Engine from 24466845e7a9 to 235d951ccfbd (4 revisions) (flutter/flutter#103276)
2022-05-07 engine-flutter-autoroll@skia.org Roll Engine from 2d2f8629cdb2 to 24466845e7a9 (1 revision) (flutter/flutter#103274)
2022-05-07 engine-flutter-autoroll@skia.org Roll Engine from 4a358030cb07 to 2d2f8629cdb2 (1 revision) (flutter/flutter#103273)
2022-05-07 fujino@google.com [flutter_tools] add --uninstall-first flag and pipe it through to ios-deploy (flutter/flutter#102948)
2022-05-07 xubaolin@oppo.com Fix a `_WrappedScrollBehavior.shouldNotify` bug (flutter/flutter#103267)
2022-05-07 magder@google.com Remove custom `unawaited`, prefer `dart:async` version (flutter/flutter#103212)
2022-05-07 36861262+QuncCccccc@users.noreply.github.com Added clipBehavior on TabBarView (flutter/flutter#103166)
2022-05-07 leroux_bruno@yahoo.fr Fix empty Stack with infinite constraints throws (flutter/flutter#102642)
2022-05-07 42252197+egramond@users.noreply.github.com Updating the Slider Widget to allow up and down arrow keys to navigate out of the slider when in directional NavigationMode. (flutter/flutter#103149)
2022-05-07 tessertaha@gmail.com Fix `DropdownButton` menu clip (flutter/flutter#102970)
2022-05-07 engine-flutter-autoroll@skia.org Roll Engine from 094cb30943a5 to 4a358030cb07 (1 revision) (flutter/flutter#103260)

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 stuartmorgan@google.com 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://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug

Documentation for the AutoRoller is here:
...
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 9, 2022
@bleroux bleroux deleted the empty_stack_with_infinite_constraints branch May 12, 2022 11:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
framework flutter/packages/flutter repository. See also f: labels.
Projects
None yet
3 participants