Repository navigation
Fix Actions.handler to forward the intent type to maybeFind - #191052
auto-submit[bot] merged 2 commits into
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
There was a problem hiding this comment.
Code Review
This pull request updates Actions.handler to forward the generic intent type T and the intent argument to Actions.maybeFind. It also adds widget tests to verify that Actions.handler correctly forwards the intent type to find the bound action, and returns null when the action is disabled or when no matching action is found. There are no review comments, so there is no feedback to provide.
Actions.handler was calling Actions.maybeFind(context) without an explicit type argument or the intent, so downward inference resolved T to Intent and the action lookup used the literal Intent type instead of the intent's concrete runtime type. Since apps register actions keyed by their concrete Intent subtype, the lookup always missed and handler returned null for every intent. Forward the type and intent explicitly: Actions.maybeFind<T>(context, intent: intent). Fixes flutter#191045.
aaa0d5f to
8876d37
Compare
…191052) `Actions.handler` was calling `Actions.maybeFind(context)` without an explicit type argument or the intent, so downward inference resolved `T` to `Intent` and the action lookup used the literal `Intent` type instead of the intent's concrete runtime type. Since apps register actions keyed by their concrete `Intent` subtype, the lookup always missed and `handler` returned `null` for every intent. This regressed in flutter#180883 and first shipped in 3.47.0. The fix forwards the type and intent explicitly: `Actions.maybeFind<T>(context, intent: intent)`. ## Tests Adds regression tests for `Actions.handler`: it now finds and invokes the bound action for the intent's runtime type, and still returns null when the action is disabled or when no matching action is found. The first test fails without the fix. Fixes flutter#191045. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [ ] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [ ] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md Co-authored-by: Victor Sanni <[email protected]>
Actions.handlerwas callingActions.maybeFind(context)without an explicit type argument or the intent, so downward inference resolvedTtoIntentand the action lookup used the literalIntenttype instead of the intent's concrete runtime type. Since apps register actions keyed by their concreteIntentsubtype, the lookup always missed andhandlerreturnednullfor every intent. This regressed in #180883 and first shipped in 3.47.0.The fix forwards the type and intent explicitly:
Actions.maybeFind<T>(context, intent: intent).Tests
Adds regression tests for
Actions.handler: it now finds and invokes the bound action for the intent's runtime type, and still returns null when the action is disabled or when no matching action is found. The first test fails without the fix.Fixes #191045.
Pre-launch Checklist
///).