[pigeon] Add usage docs to generated Dart event channel methods#11894
Merged
auto-submit[bot] merged 1 commit intoJul 9, 2026
Merged
Conversation
The generated event-channel method creates a new EventChannel each time it is called, but nothing in the generated code documented that, making it easy to call repeatedly for the same instance or to assume the returned stream is single-subscription. Document on each generated method that it should not be called multiple times for the same instanceName and that the returned stream is a broadcast stream. Also emit the user's own documentation comments on event channel methods, which were previously dropped (only the API-level comments were emitted). Fixes flutter/flutter#177776
Contributor
There was a problem hiding this comment.
Code Review
This pull request updates the Dart generator in Pigeon to emit usage documentation and user-defined documentation comments on generated event channel methods. It also includes corresponding updates to generated files, tests verifying the new documentation generation, and a version bump to 27.1.1. There are no review comments, so I have no feedback to provide.
tarrinneal
approved these changes
Jul 8, 2026
11 tasks
This was referenced Jul 10, 2026
loic-sharma
pushed a commit
to ishaquehassan/flutter
that referenced
this pull request
Jul 13, 2026
…er#189387) flutter/packages@20928d5...ad2eab1 2026-07-13 35750184+motucraft@users.noreply.github.com [camera] Guard CameraController value updates after dispose (flutter/packages#11861) 2026-07-13 dkwingsmt@users.noreply.github.com [material_ui] Remove unused example files (flutter/packages#12179) 2026-07-13 puneetkukreja98@gmail.com [google_maps_flutter_platform_interface] Adds support for mapTypeControlEnabled, fullscreenControlEnabled, and streetViewControlEnabled for web (flutter/packages#12191) 2026-07-13 44747303+theprantadutta@users.noreply.github.com [pigeon] Report a clear error for enhanced enums (flutter/packages#11880) 2026-07-13 49699333+dependabot[bot]@users.noreply.github.com Bump actions/labeler from 6.1.0 to 6.2.0 in the all-github-actions group (flutter/packages#12190) 2026-07-13 stuartmorgan@google.com [shared_preferences] Convert legacy codepath to Kotlin (flutter/packages#12139) 2026-07-12 engine-flutter-autoroll@skia.org Roll Flutter from f7b66f3 to cf9e8af (11 revisions) (flutter/packages#12188) 2026-07-11 44525804+sailendrabathi@users.noreply.github.com [video_player] Improve seek performance on Android (flutter/packages#11810) 2026-07-11 stuartmorgan@google.com [pigeon] Disable iOS test parallelization (flutter/packages#12177) 2026-07-11 dkwingsmt@users.noreply.github.com [material_ui, cupertino_ui] Migrate snippet TODOs to `<callout-box>` (flutter/packages#12146) 2026-07-11 dkwingsmt@users.noreply.github.com [cupertino_ui] Fix example path (flutter/packages#12151) 2026-07-10 engine-flutter-autoroll@skia.org Roll Flutter from dc2a870 to f7b66f3 (12 revisions) (flutter/packages#12175) 2026-07-10 engine-flutter-autoroll@skia.org Roll Flutter (stable) from f94f4fc to ee80f08 (3 revisions) (flutter/packages#12171) 2026-07-10 engine-flutter-autoroll@skia.org Manual roll Flutter from 91939cc to dc2a870 (50 revisions) (flutter/packages#12169) 2026-07-09 jessiewong401@gmail.com Update `legacy` test to be in Warn Range (flutter/packages#12168) 2026-07-09 dkwingsmt@users.noreply.github.com [material_ui, cupertino_ui] Migrate dartpad TODOs to `<callout-box>` (flutter/packages#12120) 2026-07-09 73310711+shrabanti722@users.noreply.github.com [video_player_avfoundation] Implement preventsDisplaySleepDuringVideoPlayback (flutter/packages#11547) 2026-07-09 44747303+theprantadutta@users.noreply.github.com [pigeon] Add usage docs to generated Dart event channel methods (flutter/packages#11894) 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-flutter-autoroll Please CC flutter-ecosystem@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: 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
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.
The generated event-channel method creates a new
EventChanneleach time it is called, but nothing in the generated code documented that — making it easy to call repeatedly for the same instance, or to assume the returned stream is single-subscription. This implements the "definitely" part of the linked issue:Each generated event-channel method now gets a usage doc comment:
While there, this also emits the user's own documentation comments on event channel methods — previously only the API-level comments were emitted and per-method comments were silently dropped. The two are combined via the existing
generatorCommentsmechanism inaddDocumentationComments, which already handles user-comment/generator-comment separation.The wrapper-object and renaming ideas from the issue are intentionally not addressed here, per the discussion — those are design decisions; this PR is scoped to the documentation gap.
Checked-in generated files containing event channels (
example/appandshared_test_plugin_code) are regenerated. The new generator test verifies both the user comments and the usage docs are emitted directly above the generated method, and fails without the generator change.Fixes flutter/flutter#177776
Pre-Review Checklist
[shared_preferences]///).Note: the multi-language auto-formatter step of
tool/generate.dartcould not run fully on this machine (missing clang-format and related binaries); only Dart outputs changed, and those were formatted withdart format. If CI's format check flags anything, I'll address it.