chore: Update tutorials and examples to use new event system for pan - #4028
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Migrates pan handling in tutorials and examples from legacy PanDetector APIs to component-based DragCallbacks.
Changes:
- Replaces pan callbacks with drag events and updated coordinate APIs.
- Preserves required superclass calls and removes obsolete imports.
- Updates Space Shooter tutorial documentation and runnable steps.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
packages/flame_bloc/example/lib/src/game/game.dart |
Migrates player controls to drag callbacks. |
examples/lib/stories/rendering/particles_interactive_example.dart |
Migrates particle painting to drag events. |
examples/lib/stories/camera_and_viewport/camera_component_example.dart |
Migrates magnifier controls to drag events. |
doc/tutorials/space_shooter/step_2.md |
Updates initial drag-control instructions. |
doc/tutorials/space_shooter/step_3.md |
Updates movement example. |
doc/tutorials/space_shooter/step_4.md |
Updates movement and shooting callbacks. |
doc/tutorials/space_shooter/step_6.md |
Updates the final game mixins. |
doc/tutorials/space_shooter/app/lib/step2/main.dart |
Migrates step 2 implementation. |
doc/tutorials/space_shooter/app/lib/step3/main.dart |
Migrates step 3 implementation. |
doc/tutorials/space_shooter/app/lib/step4/main.dart |
Migrates step 4 implementation. |
doc/tutorials/space_shooter/app/lib/step5/main.dart |
Migrates step 5 implementation. |
doc/tutorials/space_shooter/app/lib/step6/main.dart |
Migrates step 6 implementation. |
doc/flame/components/components.md |
Updates component-query example coordinates. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
luanpotter
marked this pull request as ready for review
August 30, 2026 17:14
spydon
approved these changes
Aug 30, 2026
spydon
enabled auto-merge (squash)
August 30, 2026 17:33
6 tasks
luanpotter
added a commit
that referenced
this pull request
Aug 30, 2026
Kills `PanDetector` which was the last surviving heir of the game-level detectors. With it dead is all the infra: * the entire `src/gestures/`, including `events.dart` with `BaseInfo`, `PositionInfo`, `EventPosition`, `EventDelta` and all `*Info` classes (`TapDownInfo` and `TapUpInfo` were already dead but not cleansed); * `GestureDetectorBuilder.initializeGestures`, which existed only to wire the detectors onto recognizers, along with the `..initializeGestures(this)` cascade on `Game` (this will allow some further simplifications on gesture builder binding); * The `this is PanDetector` early-return in `FlameGame.containsEventHandlerAt` (it was redundant, as `componentsAtPoint` yields the game itself last, so a `FlameGame` with a positional callbacks mixin is still reported as a hit anywhere within its bounds); - All the old export blocks in the `events.dart` and `input.dart` barrels. Old `PanDetector` users should move to `DragCallbacks` (which as usual can be mixed into `FlameGame` directly). The examples and tutorials were migrated separately in #4028. Also updates and restructure the entire events docs, with this last mercy kill: * `gesture_input.md` is deleted (it had become a second index page duplicating `inputs.md`, plus cross-cutting sections that I re-homed); * the event coordinate system and the Flutter gesture-API links move to `inputs.md`, the mouse cursor section to `pointer_events.md`, and panning-and-zooming folds into `scale_events.md`; * Fixed two broken links. `collision_detection.md` pointed at `inputs/gesture_input.md#gesturehitboxes`, but that section had moved to `inputs.md` in #4011 without its inbound links being updated; * The drag + scale combination was documented three times, with `drag_events.md` and `scale_events.md` carrying byte-identical code blocks. `scale_events.md` is now canonical and `drag_events.md` cross-links to it; * Dropped the stale "the old (legacy) approach is described in gesture_input.md" notes from `tap_events.md` and `pointer_events.md`. There is no longer an old approach; * Dropped the "For other input documents, see also:" blocks from `keyboard_input.md` and `other_inputs.md`. They date from #2063, when `inputs/` held exactly three documents that each linked the other two; the gesture third has since become five pages, none of which ever got the block. No other doc grouping in the tree links back to its index or lists siblings (navigation is the toctree); * Documented that `localPosition` / `localDelta` are only valid inside the callback, with `clone()` as the escape hatch if you need the value later. ### The Breaking `PanDetector`, `DragDownInfo`, `DragStartInfo`, `DragUpdateInfo`, `DragEndInfo`, `TapDownInfo`, `TapUpInfo`, `PositionInfo`, `GestureDetectorBuilder.initializeGestures` killed; migration guide section is included. --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
6 tasks
spydon
added a commit
that referenced
this pull request
Aug 31, 2026
Add support for a `allowsMultiPointerDrag` on `DragCallbacks`, for easy of use for components that would break under multiple concurrent drags. When a drag controls the component itself, or a camera for panning, initiating a multi-fingered interaction might cause an elated state on the component, which might or might not be desirable depending on circumstances. Many existing examples were fixed as part of the new system migration (#4028; as per requested by Copilot), but all with ad-hoc code that Flame could vastly simplify. Note that is is _not_ to discourage two-, three- or even five-fingered manipulations; but rather just to empower users to choose what feels best for their application. --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Lukas Klingsbo <me@lukas.fyi>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Update tutorials and examples to use new event system for pan, preparing for its ex-pan-gement.
The new system already covers all these with drags - so this is a no-op on all cases.
As per copilot's request, this also make all the examples safe from multi-touch causing issues - an edge case for the examples, but fine to fix (I might followup with a better solution).
Checklist
docsand added dartdoc comments with///.examplesordocs.Breaking Change?