-
Notifications
You must be signed in to change notification settings - Fork 29.8k
Add an assert message when OverlayEntry.remove is called twice #178163
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
Add an assert message when OverlayEntry.remove is called twice #178163
Conversation
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.
Code Review
This pull request improves the developer experience by adding a more descriptive assertion message when OverlayEntry.remove is called more than once. The accompanying documentation update and test case are well-implemented. I have one suggestion to make the new test more idiomatic.
bfcb9e6 to
4577763
Compare
| /// | ||
| /// This should only be called once. | ||
| /// | ||
| /// After calling this method, [dispose] must be called if the [OverlayEntry] was |
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.
Is this true? You should be able to add the OverlayEntry to an Overlay right?
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 added this comment because of the one in dispose documentation:
flutter/packages/flutter/lib/src/widgets/overlay.dart
Lines 264 to 265 in de4be4f
| /// This method must be called after [remove] if the [OverlayEntry] is | |
| /// inserted into an [Overlay]. |
Probably I did not understand it properly and the one in dispose mean that 'dispose can only be call after remove' and not that dispose should always be call after remove?
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.
Yeah iirc you can reuse an OverlayEntry after removing it from an Overlay, so it probably means "remove must be called before you can dispose it". Could you also rephrase that line so it's not ambiguous?
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 pushed a commit which:
- Rephrase ambiguous the comment in OverlayEntry.dispose
- Remove the references to dispose in remove (references I added in my first commit based on my misunderstanding of the interaction between remove and dispose).
4577763 to
921101f
Compare
| /// Discards any resources used by this [OverlayEntry]. | ||
| /// | ||
| /// This method must be called after [remove] if the [OverlayEntry] is | ||
| /// [remove] must be called before this method if the [OverlayEntry] is |
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.
nit:
| /// [remove] must be called before this method if the [OverlayEntry] is | |
| /// The [remove] method must be called before this method if the [OverlayEntry] |
921101f to
54a53b2
Compare
flutter/flutter@3f553f6...7b98d50 2025-11-26 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Fix for win32 embedder failing to send all alt key downs to the flutter app (#179097)" (flutter/flutter#179136) 2025-11-26 matt.kosarek@canonical.com Fix for win32 embedder failing to send all alt key downs to the flutter app (flutter/flutter#179097) 2025-11-26 katelovett@google.com Modernize framework lints (flutter/flutter#179089) 2025-11-25 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Add framework-side hitTestBehavior support to Semantics (#178817)" (flutter/flutter#179100) 2025-11-25 zhongliu88889@gmail.com Add framework-side hitTestBehavior support to Semantics (flutter/flutter#178817) 2025-11-25 engine-flutter-autoroll@skia.org Roll Packages from e019cf9 to cc3dca6 (1 revision) (flutter/flutter#179081) 2025-11-25 matt.kosarek@canonical.com Add tooltip windows to the windowing API alongside the window positioning logic (flutter/flutter#177404) 2025-11-25 matt.kosarek@canonical.com FlutterWindowsView::SendWindowMetrics now reliably sends the display_id (flutter/flutter#179053) 2025-11-25 31859944+LongCatIsLooong@users.noreply.github.com Remove semantics geometry shortcircuit (flutter/flutter#178680) 2025-11-25 bruno.leroux@gmail.com Add an assert message when OverlayEntry.remove is called twice (flutter/flutter#178163) 2025-11-25 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from pOO9Jl9HTLsEmks6y... to nzuAxCJGeJbkZCTkr... (flutter/flutter#179066) 2025-11-25 okorohelijah@google.com Dynamically set MinimumOSVersion in App.framework (flutter/flutter#178253) 2025-11-25 engine-flutter-autoroll@skia.org Roll Skia from d83c30b090f4 to 925c311f4b37 (2 revisions) (flutter/flutter#179060) 2025-11-25 fluttergithubbot@gmail.com Marks Linux build_android_host_app_with_module_aar to be unflaky (flutter/flutter#174864) 2025-11-25 fluttergithubbot@gmail.com Marks Linux_mokey complex_layout__start_up to be unflaky (flutter/flutter#174865) 2025-11-25 vegorov@google.com Manual Dart SDK roll to 3.11.0-169.0.dev (flutter/flutter#179054) 2025-11-25 katelovett@google.com Bump Dart to 3.9 (flutter/flutter#179041) 2025-11-25 engine-flutter-autoroll@skia.org Roll Skia from e298c2f93ebf to d83c30b090f4 (2 revisions) (flutter/flutter#179058) 2025-11-24 30870216+gaaclarke@users.noreply.github.com updated licenses_cpp readme (flutter/flutter#178874) 2025-11-24 engine-flutter-autoroll@skia.org Roll Skia from 43d2020be565 to e298c2f93ebf (5 revisions) (flutter/flutter#179046) 2025-11-24 116356835+AbdeMohlbi@users.noreply.github.com Refactor `_isLabel` method in `stepper.dart` to use `any` for better readablity (flutter/flutter#178909) 2025-11-24 49699333+dependabot[bot]@users.noreply.github.com Bump actions/checkout from 5 to 6 in the all-github-actions group (flutter/flutter#179049) 2025-11-24 38378650+hgraceb@users.noreply.github.com Disposes test restoration manager when accessed by bindings (flutter/flutter#176519) 2025-11-24 bkonyi@google.com [ Widget Preview ] Always generate scaffold under `$TMP` (flutter/flutter#179039) 2025-11-24 engine-flutter-autoroll@skia.org Roll Packages from e67b6be to e019cf9 (9 revisions) (flutter/flutter#179035) 2025-11-24 1063596+reidbaker@users.noreply.github.com Update CHANGELOG.md for Flutter 3.38.3 (flutter/flutter#178935) 2025-11-24 116356835+AbdeMohlbi@users.noreply.github.com Remove unnecessary `String.valueOf` in `SettingsChannel.java` (flutter/flutter#178590) 2025-11-24 katelovett@google.com Roll pub manually, pick up flutter_lints in examples/api (flutter/flutter#179030) 2025-11-24 engine-flutter-autoroll@skia.org Roll Dart SDK from 24cc9a740bd3 to afca43095efa (1 revision) (flutter/flutter#179019) 2025-11-24 zezohassam@gmail.com Pass EXCLUDED_ARCHS from Xcode project to xcodebuild for macOS builds (flutter/flutter#176948) 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 bmparr@google.com,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://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
…er#178163) ## Description This PR adds an assert message to help users understand the error occuring when `OverlayEntry.remove` is called twice. It also adds a comment about calling dispose after removal as this is mandatory since github.com/flutter/issues/102794. ## Related Issue Fixes ["Failed assertion: line 207 pos 12: '_overlay != null': is not true" when trying to remove a non null overlayEntry](flutter#145466) Related external issue: LanarsInc/top-snackbar-flutter#80 ## Tests - Adds 1 test.
…er#178163) ## Description This PR adds an assert message to help users understand the error occuring when `OverlayEntry.remove` is called twice. It also adds a comment about calling dispose after removal as this is mandatory since github.com/flutter/issues/102794. ## Related Issue Fixes ["Failed assertion: line 207 pos 12: '_overlay != null': is not true" when trying to remove a non null overlayEntry](flutter#145466) Related external issue: LanarsInc/top-snackbar-flutter#80 ## Tests - Adds 1 test.
Description
This PR adds an assert message to help users understand the error occuring when
OverlayEntry.removeis called twice. It also adds a comment about calling dispose after removal as this is mandatory since github.com//issues/102794.Related Issue
Fixes "Failed assertion: line 207 pos 12: '_overlay != null': is not true" when trying to remove a non null overlayEntry
Related external issue: LanarsInc/top-snackbar-flutter#80
Tests