Skip to content

[pigeon] Add usage docs to generated Dart event channel methods#11894

Merged
auto-submit[bot] merged 1 commit into
flutter:mainfrom
theprantadutta:fix/pigeon-event-channel-docs
Jul 9, 2026
Merged

[pigeon] Add usage docs to generated Dart event channel methods#11894
auto-submit[bot] merged 1 commit into
flutter:mainfrom
theprantadutta:fix/pigeon-event-channel-docs

Conversation

@theprantadutta

Copy link
Copy Markdown
Contributor

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. This implements the "definitely" part of the linked issue:

Definitely add docs to the generated code, indicated both that it shouldn't be called multiple times for the same instance, and that the returned stream is a broadcast stream.

Each generated event-channel method now gets a usage doc comment:

/// Returns a broadcast [Stream] of events from the `streamEvents` event channel.
///
/// Each call to this method creates a new [EventChannel], so it should
/// not be called multiple times for the same `instanceName`. To deliver
/// events to multiple listeners, call this method once and listen to the
/// returned broadcast stream multiple times instead.

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 generatorComments mechanism in addDocumentationComments, 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/app and shared_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

Note: the multi-language auto-formatter step of tool/generate.dart could not run fully on this machine (missing clang-format and related binaries); only Dart outputs changed, and those were formatted with dart format. If CI's format check flags anything, I'll address it.

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

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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.

@stuartmorgan-g stuartmorgan-g left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

LGTM

@stuartmorgan-g stuartmorgan-g added the CICD Run CI/CD label Jul 7, 2026
@stuartmorgan-g stuartmorgan-g added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 9, 2026
@auto-submit
auto-submit Bot merged commit 3de63c8 into flutter:main Jul 9, 2026
87 checks passed
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App CICD Run CI/CD p: pigeon

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[pigeon] Clarify event channel usage on the Dart side

3 participants