Skip to content

Conversation

justinmc
Copy link
Contributor

@justinmc justinmc commented Jul 11, 2025

This PR makes platform views ignore pointer events when they're not laid out.

Platform views register themselves for global pointer events when their RenderBox attaches:

@override
void attach(PipelineOwner owner) {
super.attach(owner);
GestureBinding.instance.pointerRouter.addGlobalRoute(_handleGlobalPointerEvent);
}
@override
void detach() {
GestureBinding.instance.pointerRouter.removeGlobalRoute(_handleGlobalPointerEvent);
super.detach();
}

But a RenderBox that is attached is not necessarily laid out. The problem in the issue seemed to be that a page was created offscreen (attached and not laid out), but it still received pointer events, and this caused errors with using size before layout.

This PR simply ignores pointer events when not laid out.

Fixes #83481

@justinmc justinmc self-assigned this Jul 11, 2025
@flutter-dashboard
Copy link

It looks like this pull request may not have tests. Please make sure to add tests or get an explicit test exemption before merging.

If you are not sure if you need tests, consider this rule of thumb: the purpose of a test is to make sure someone doesn't accidentally revert the fix. Ask yourself, is there anything in your PR that you feel it is important we not accidentally revert back to how it was before your fix?

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.If you believe this PR qualifies for a test exemption, contact "@test-exemption-reviewer" in the #hackers channel in Discord (don't just cc them here, they won't see it!). The test exemption team is a small volunteer group, so all reviewers should feel empowered to ask for tests, without delegating that responsibility entirely to the test exemption group.

@github-actions github-actions bot added the framework flutter/packages/flutter repository. See also f: labels. label Jul 11, 2025
@justinmc justinmc marked this pull request as draft July 12, 2025 00:04
@flutter-dashboard
Copy link

This pull request has been changed to a draft. The currently pending flutter-gold status will not be able to resolve until a new commit is pushed or the change is marked ready for review again.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@justinmc justinmc force-pushed the platform-view-not-laid-out branch from 0bb6ca1 to e4e2bbd Compare July 17, 2025 18:26
@justinmc justinmc marked this pull request as ready for review July 17, 2025 18:28
@justinmc justinmc force-pushed the platform-view-not-laid-out branch from e4e2bbd to 969d92b Compare July 17, 2025 18:35
Copy link
Contributor

@dkwingsmt dkwingsmt left a comment

Choose a reason for hiding this comment

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

LGTM

@justinmc justinmc added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 17, 2025
@auto-submit auto-submit bot added this pull request to the merge queue Jul 17, 2025
Merged via the queue into flutter:master with commit e244168 Jul 17, 2025
72 of 73 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jul 17, 2025
@justinmc justinmc deleted the platform-view-not-laid-out branch July 17, 2025 22:27
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 18, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Jul 18, 2025
flutter/flutter@9c626d9...440713c

2025-07-18 stuartmorgan@google.com Add OS version support section to plugin docs (flutter/flutter#172316)
2025-07-18 engine-flutter-autoroll@skia.org Roll Dart SDK from 7fcc5f48c335 to fe2232bd5b9f (2 revisions) (flutter/flutter#172339)
2025-07-18 robert.ancell@canonical.com Refactor handling of frame waiting. (flutter/flutter#172277)
2025-07-18 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#172332)
2025-07-17 matanlurey@users.noreply.github.com Refactor and forbid `base/exit.dart` outside of `lib/runner.dart` (flutter/flutter#171923)
2025-07-17 matanlurey@users.noreply.github.com Use UTC timezone for `stamp_command_test` to avoid local TZ flakes (flutter/flutter#172319)
2025-07-17 1961493+harryterkelsen@users.noreply.github.com [web] Add tests for unified platform view embedding behavior (flutter/flutter#172313)
2025-07-17 jmccandless@google.com Platform views shouldn't receive pointer events when not laid out (flutter/flutter#172043)
2025-07-17 ahmedsameha1@gmail.com Fix Size.isEmpty description (flutter/flutter#172021)
2025-07-17 iamtoricool@gmail.com feat: Add `maxCount` parameter to `Badge.count` constructor. (flutter/flutter#171054)
2025-07-17 31859944+LongCatIsLooong@users.noreply.github.com add `debugPaintTextLayoutBoxes` for debugging text layout (flutter/flutter#168876)
2025-07-17 engine-flutter-autoroll@skia.org Roll Packages from 4a231ae to cb8fef6 (31 revisions) (flutter/flutter#172303)
2025-07-17 jmccandless@google.com Fix mutating Paint bug (flutter/flutter#171180)
2025-07-17 jmccandless@google.com No SystemContextMenu when readOnly is true (flutter/flutter#171242)
2025-07-17 muhammad.mohiuddin@live.com Add a getter to get the recorder used by painting context (flutter/flutter#170223)
2025-07-17 jason-simmons@users.noreply.github.com [Impeller] Add missing SetPipeline call for the vertices uber pipeline in AtlasContents (flutter/flutter#172273)
2025-07-17 engine-flutter-autoroll@skia.org Roll Dart SDK from 486f9c0663bc to 7fcc5f48c335 (1 revision) (flutter/flutter#172279)
2025-07-17 engine-flutter-autoroll@skia.org Roll Skia from 3673a1f26a63 to 9587301e33bc (3 revisions) (flutter/flutter#172281)
2025-07-17 jason-simmons@users.noreply.github.com Fix a race in FlutterEngineTest.CanLogToStdout (flutter/flutter#172025)

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
azatech pushed a commit to azatech/flutter that referenced this pull request Jul 28, 2025
…utter#172043)

This PR makes platform views ignore pointer events when they're not laid
out.

Platform views register themselves for global pointer events when their
RenderBox attaches:


https://github.com/flutter/flutter/blob/9c626d9f9afa6da96433e3bfc4895492f87e0009/packages/flutter/lib/src/rendering/platform_view.dart#L370-L380

But a RenderBox that is attached is not necessarily laid out. The
problem in the issue seemed to be that a page was created offscreen
(attached and not laid out), but it still received pointer events, and
this caused errors with using `size` before layout.

This PR simply ignores pointer events when not laid out.

Fixes flutter#83481
vashworth pushed a commit to vashworth/packages that referenced this pull request Jul 30, 2025
…r#9646)

flutter/flutter@9c626d9...440713c

2025-07-18 stuartmorgan@google.com Add OS version support section to plugin docs (flutter/flutter#172316)
2025-07-18 engine-flutter-autoroll@skia.org Roll Dart SDK from 7fcc5f48c335 to fe2232bd5b9f (2 revisions) (flutter/flutter#172339)
2025-07-18 robert.ancell@canonical.com Refactor handling of frame waiting. (flutter/flutter#172277)
2025-07-18 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#172332)
2025-07-17 matanlurey@users.noreply.github.com Refactor and forbid `base/exit.dart` outside of `lib/runner.dart` (flutter/flutter#171923)
2025-07-17 matanlurey@users.noreply.github.com Use UTC timezone for `stamp_command_test` to avoid local TZ flakes (flutter/flutter#172319)
2025-07-17 1961493+harryterkelsen@users.noreply.github.com [web] Add tests for unified platform view embedding behavior (flutter/flutter#172313)
2025-07-17 jmccandless@google.com Platform views shouldn't receive pointer events when not laid out (flutter/flutter#172043)
2025-07-17 ahmedsameha1@gmail.com Fix Size.isEmpty description (flutter/flutter#172021)
2025-07-17 iamtoricool@gmail.com feat: Add `maxCount` parameter to `Badge.count` constructor. (flutter/flutter#171054)
2025-07-17 31859944+LongCatIsLooong@users.noreply.github.com add `debugPaintTextLayoutBoxes` for debugging text layout (flutter/flutter#168876)
2025-07-17 engine-flutter-autoroll@skia.org Roll Packages from 4a231ae to cb8fef6 (31 revisions) (flutter/flutter#172303)
2025-07-17 jmccandless@google.com Fix mutating Paint bug (flutter/flutter#171180)
2025-07-17 jmccandless@google.com No SystemContextMenu when readOnly is true (flutter/flutter#171242)
2025-07-17 muhammad.mohiuddin@live.com Add a getter to get the recorder used by painting context (flutter/flutter#170223)
2025-07-17 jason-simmons@users.noreply.github.com [Impeller] Add missing SetPipeline call for the vertices uber pipeline in AtlasContents (flutter/flutter#172273)
2025-07-17 engine-flutter-autoroll@skia.org Roll Dart SDK from 486f9c0663bc to 7fcc5f48c335 (1 revision) (flutter/flutter#172279)
2025-07-17 engine-flutter-autoroll@skia.org Roll Skia from 3673a1f26a63 to 9587301e33bc (3 revisions) (flutter/flutter#172281)
2025-07-17 jason-simmons@users.noreply.github.com Fix a race in FlutterEngineTest.CanLogToStdout (flutter/flutter#172025)

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
ksokolovskyi pushed a commit to ksokolovskyi/flutter that referenced this pull request Aug 19, 2025
…utter#172043)

This PR makes platform views ignore pointer events when they're not laid
out.

Platform views register themselves for global pointer events when their
RenderBox attaches:


https://github.com/flutter/flutter/blob/9c626d9f9afa6da96433e3bfc4895492f87e0009/packages/flutter/lib/src/rendering/platform_view.dart#L370-L380

But a RenderBox that is attached is not necessarily laid out. The
problem in the issue seemed to be that a page was created offscreen
(attached and not laid out), but it still received pointer events, and
this caused errors with using `size` before layout.

This PR simply ignores pointer events when not laid out.

Fixes flutter#83481
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
Development

Successfully merging this pull request may close these issues.

RenderUiKitView _handleGlobalPointerEvent is not checking for null size
2 participants