Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Conversation

@loic-sharma
Copy link
Member

Allow Flutter Windows plugins to get views by their ID.

Design doc: https://flutter.dev/go/desktop-multi-view-runner-apis

Part of flutter/flutter#143767
Part of flutter/flutter#142845

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or the PR is test-exempt. See testing the engine for instructions on writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

// not destroy the underlying view.
std::shared_ptr<FlutterView> GetViewById(FlutterViewId view_id) const {
return std::make_shared<FlutterView>(
FlutterDesktopPluginRegistrarGetViewById(registrar(), view_id));
Copy link
Member Author

@loic-sharma loic-sharma Feb 29, 2024

Choose a reason for hiding this comment

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

⚠️ This API returns a std::shared_ptr<FlutterView> instead of a FlutterView*. This is a change from the original design.

The original PluginRegistrarWindows::GetViewById proposal returned a FlutterView* to align with PluginRegistrarWindows::GetView. However, this would require the PluginRegistrarWindows to own/manage FlutterViews, similar to how it stores the implicit view today. We would need to introduce some other API to allow cleaning up these FlutterViews. By returning a std::shared_ptr<FlutterView>, the user can clean up the FlutterView themselves when they no longer need the view reference.

@loic-sharma loic-sharma force-pushed the windows_plugin_registar_get_view branch from 870b27b to c3a423f Compare February 29, 2024 18:55
@loic-sharma
Copy link
Member Author

Gentle reminder @yaakovschectman @cbracken, this is ready for review :)

Copy link
Contributor

@yaakovschectman yaakovschectman left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Member

@cbracken cbracken left a comment

Choose a reason for hiding this comment

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

LGTM stamp from a Japanese personal seal

No comments other than thumbs-up to the const-ification.

@loic-sharma
Copy link
Member Author

loic-sharma commented Mar 6, 2024

@yaakovschectman @cbracken FYI I pushed a new commit: f89609f. Before this fix, nullptr wasn't returned if the view does not exist. I also added tests.

Copy link
Member

@cbracken cbracken left a comment

Choose a reason for hiding this comment

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

re-lgtm!

@loic-sharma loic-sharma added the autosubmit Merge PR when tree becomes green via auto submit App label Mar 6, 2024
@auto-submit auto-submit bot merged commit b2adf74 into flutter:main Mar 6, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Mar 6, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

affects: desktop autosubmit Merge PR when tree becomes green via auto submit App platform-windows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants