Skip to content

[image_picker] Switch to Kotlin Pigeon#11504

Merged
auto-submit[bot] merged 11 commits intoflutter:mainfrom
stuartmorgan-g:kotlin-pigeon-image-picker
Apr 29, 2026
Merged

[image_picker] Switch to Kotlin Pigeon#11504
auto-submit[bot] merged 11 commits intoflutter:mainfrom
stuartmorgan-g:kotlin-pigeon-image-picker

Conversation

@stuartmorgan-g
Copy link
Copy Markdown
Collaborator

Replaces the Java Pigeon generator with the Kotlin Pigeon generator, and adjusts the project accordingly:

  • Adds Kotlin build setings to Gradle.
  • Updates API signatures for Kotlin/Java differences.
  • Adds generic Java/Kotlin compat shim to create Result objects from Java, since those haven't been added to the Pigeon generator yet.
  • Updates tests to use constructors instead of builders, since the Kotlin generator doesn't create builders.
  • Updates tests to use a Java/Kotlin compat shim to read Kotlin Result values, instead of mocking the Java Pigeon response object.

Part of flutter/flutter#158287

Pre-Review Checklist

Footnotes

  1. Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. 2

Copy link
Copy Markdown

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

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 migrates the internal Pigeon implementation from Java to Kotlin, updating the build configuration and regenerating the messaging layer. The ImagePickerDelegate and ImagePickerPlugin have been refactored to use Kotlin-style callbacks and result handling. Feedback was provided regarding the high verbosity of the new callback type signatures in Java, suggesting the use of wrappers to improve code readability.

Comment on lines +100 to +102
public final @NonNull Function1<
? super @NotNull Result<? extends @NotNull List<@NotNull String>>, @NotNull Unit>
callback;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The type signature for the callback is extremely verbose in Java. While this is dictated by the Kotlin Pigeon generator's use of Kotlin's Result type, it significantly impacts readability. Consider if a simpler wrapper or functional interface could be used to encapsulate this complexity in the future.

@stuartmorgan-g stuartmorgan-g added the triage-android Should be looked at in Android triage label Apr 14, 2026
@reidbaker reidbaker self-requested a review April 28, 2026 19:47
@stuartmorgan-g stuartmorgan-g added autosubmit Merge PR when tree becomes green via auto submit App CICD Run CI/CD and removed CICD Run CI/CD labels Apr 29, 2026
@auto-submit auto-submit Bot merged commit 5f14a80 into flutter:main Apr 29, 2026
83 checks passed
Mairramer pushed a commit to Mairramer/flutter that referenced this pull request Apr 29, 2026
…er#185748)

flutter/packages@ba80f8f...cde5b36

2026-04-29 stuartmorgan@google.com [file_selector] Switch to Kotlin
Pigeon (flutter/packages#11479)
2026-04-29 stuartmorgan@google.com [image_picker] Switch to Kotlin
Pigeon (flutter/packages#11504)
2026-04-29 stuartmorgan@google.com [quick_actions] Switch to Kotlin
Pigeon (flutter/packages#11507)
2026-04-29 git@reb0.org [pigeon] fix: Apply correct ThrowError success
callback (flutter/packages#11585)
2026-04-29 nateshmbhat1@gmail.com [video_player_platform_interface] Add
video track selection support (flutter/packages#11474)
2026-04-29 katelovett@google.com Update git ignore for
personal/iterating on agent skills and rules (flutter/packages#11600)
2026-04-29 stuartmorgan@google.com [file_selector] Update Windows
example for deprecations (flutter/packages#11570)
2026-04-29 git@reb0.org [various] Upgrade googletest to v1.15.2
(flutter/packages#11586)
2026-04-28 engine-flutter-autoroll@skia.org Roll Flutter (stable) from
cc0734a to 02085fe (2 revisions) (flutter/packages#11598)
2026-04-28 116356835+AbdeMohlbi@users.noreply.github.com [image_picker]
Update documentation of maxDuration to reflect that it only applies to
recording (flutter/packages#11417)
2026-04-28 suojae3@gmail.com [vector_graphics] add imageBuilder property
to VectorGraphic (flutter/packages#11094)
2026-04-28 engine-flutter-autoroll@skia.org Roll Flutter from
61fca76 to 81bc3d6 (1 revision) (flutter/packages#11597)

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: image_picker platform-android triage-android Should be looked at in Android triage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants