Skip to content

Call onPopInvoked when pages API is used#141221

Merged
justinmc merged 4 commits intoflutter:masterfrom
justinmc:on-pop-invoked-pages
Jan 10, 2024
Merged

Call onPopInvoked when pages API is used#141221
justinmc merged 4 commits intoflutter:masterfrom
justinmc:on-pop-invoked-pages

Conversation

@justinmc
Copy link
Contributor

@justinmc justinmc commented Jan 10, 2024

When using PopScope with the Navigator.pages API, PopScope.onPopInvoked is only called when the pop is blocked and not when it's allowed. This PR fixes it by adding a call along that codepath.

Fixes #141189
Fixes Google b/309771402

@justinmc justinmc self-assigned this Jan 10, 2024
@github-actions github-actions bot added framework flutter/packages/flutter repository. See also f: labels. f: routes Navigator, Router, and related APIs. labels Jan 10, 2024
@justinmc justinmc force-pushed the on-pop-invoked-pages branch from 17ce7f2 to 65424b5 Compare January 10, 2024 18:13
@justinmc justinmc requested a review from goderbauer January 10, 2024 19:24
@justinmc justinmc marked this pull request as ready for review January 10, 2024 19:24
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

testWidgets('popping a page with canPop true still calls onPopInvoked', (WidgetTester tester) async {
final List<_PageWithYesPop> pages = <_PageWithYesPop>[_PageWithYesPop.home];
bool canPop() => pages.length <= 1;
bool onPopInvokedWasCalled = false;
Copy link
Member

Choose a reason for hiding this comment

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

Maybe turn this into a count, so we can be sure it is only invoked once and not multiple times via different code paths?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That's a much better idea, thanks.

@justinmc justinmc merged commit 865825c into flutter:master Jan 10, 2024
@justinmc justinmc deleted the on-pop-invoked-pages branch January 10, 2024 22:29
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 11, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 11, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jan 11, 2024
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Jan 11, 2024
flutter/flutter@b840a60...9f2e681

2024-01-11 [email protected] [Tool][Impeller] Make impellerc produce Vulkan and GLES shaders for Android. (flutter/flutter#140976)
2024-01-11 [email protected] Roll Packages from 378e700 to 0744fe6 (6 revisions) (flutter/flutter#141378)
2024-01-11 [email protected] Roll Flutter Engine from efd0eb62f4aa to ecdaed76f284 (1 revision) (flutter/flutter#141359)
2024-01-11 [email protected] Roll Flutter Engine from ade9f18fa008 to efd0eb62f4aa (2 revisions) (flutter/flutter#141356)
2024-01-11 [email protected] Roll Flutter Engine from 42e3e0236112 to ade9f18fa008 (2 revisions) (flutter/flutter#141337)
2024-01-11 [email protected] Roll Flutter Engine from f39f5ca18328 to 42e3e0236112 (2 revisions) (flutter/flutter#141327)
2024-01-11 [email protected] Roll Flutter Engine from 431d64dbb4b8 to f39f5ca18328 (1 revision) (flutter/flutter#141322)
2024-01-11 [email protected] Add dart fix support to flutter_driver (flutter/flutter#141300)
2024-01-11 [email protected] Fix a leak. (flutter/flutter#141312)
2024-01-10 [email protected] Add covariants to reduce subclass casts in 2D APIs (flutter/flutter#141318)
2024-01-10 [email protected] Roll Flutter Engine from a045134c910d to 431d64dbb4b8 (2 revisions) (flutter/flutter#141316)
2024-01-10 [email protected] Roll Flutter Engine from 6810c9a57460 to a045134c910d (2 revisions) (flutter/flutter#141313)
2024-01-10 [email protected] Call onPopInvoked when pages API is used (flutter/flutter#141221)
2024-01-10 [email protected] Fix mechanism to pass flag for leak tracking. (flutter/flutter#141226)
2024-01-10 [email protected] Roll Flutter Engine from 5d252831e62c to 6810c9a57460 (2 revisions) (flutter/flutter#141308)
2024-01-10 [email protected] Roll Flutter Engine from 6cb256fc4985 to 5d252831e62c (1 revision) (flutter/flutter#141302)
2024-01-10 [email protected] Roll Flutter Engine from 52aedc6c9153 to 6cb256fc4985 (1 revision) (flutter/flutter#141297)
2024-01-10 [email protected] Improve testing for leak tracking. (flutter/flutter#140553)
2024-01-10 [email protected] Roll Flutter Engine from d1a2007a28b4 to 52aedc6c9153 (2 revisions) (flutter/flutter#141291)
2024-01-10 [email protected] [flutter_tools] fix flutter create -t skeleton (flutter/flutter#141233)
2024-01-10 [email protected] Roll Flutter Engine from b361a60ae224 to d1a2007a28b4 (1 revision) (flutter/flutter#141285)
2024-01-10 [email protected] Unpin package:vm_service (flutter/flutter#141279)
2024-01-10 [email protected] Collapse pubspec.lock by default (flutter/flutter#141282)
2024-01-10 [email protected] Roll Packages from 09205ca to 378e700 (2 revisions) (flutter/flutter#141275)

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

f: routes Navigator, Router, and related APIs. framework flutter/packages/flutter repository. See also f: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

onPopInvoked not called when using Navigator.pages

2 participants