Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implemented threadsafe platform channel replies on windows #36909

Conversation

gaaclarke
Copy link
Member

@gaaclarke gaaclarke commented Oct 20, 2022

This makes it so platform message handlers on Windows can invoke their replies from any thread. The reason this is possible is:

  • There is little actual work that is happening on the thread invoking the reply. It has mostly to do with manipulating resources uniquely assigned to the message and thread hopping to the ui thread.
  • We've introduced a lock that makes sure the dispatcher used to handle messages isn't deleted while the background thread is invoking the reply.
  • We decoupled the FlutterDesktopMessenger from the Engine so that the FlutterDesktopMessenger can outlive the Engine but be in an invalid state. (This surfaced a bug that already existed in the implementation since a reply could always have outlasted an engine).

issue: flutter/flutter#93945

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 Hixie said 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.

@gaaclarke gaaclarke force-pushed the windows-thread-safe-platform-channel-response branch 3 times, most recently from 3df6a62 to 8fd770b Compare October 24, 2022 16:49
@flutter-dashboard flutter-dashboard bot added the embedder Related to the embedder API label Oct 24, 2022
FlutterDesktopMessengerRef FlutterDesktopMessengerAddRef(
FlutterDesktopMessengerRef messenger) {
assert(false); // not implemented
return nullptr;
Copy link
Member Author

Choose a reason for hiding this comment

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

No existing tests for the client_wrapper actually hit this code. In terms of code coverage it isn't strictly needed since I have coverage in the windows unit tests.

did_call_reply = true;
});
// Rely on timeout mechanism in CI.
while (!did_call_callback && !did_call_reply && !did_call_dart_reply) {
while (!did_call_callback || !did_call_reply || !did_call_dart_reply) {
Copy link
Member Author

Choose a reason for hiding this comment

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

This is an existing error in a test that landed in a different PR. I'm fixing it here.

@gaaclarke gaaclarke marked this pull request as ready for review October 24, 2022 22:46
Copy link
Member

@loic-sharma loic-sharma left a comment

Choose a reason for hiding this comment

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

LGTM but consider getting at least one other approval as my knowledge here is shaky :)

@gaaclarke
Copy link
Member Author

friendly ping @stuartmorgan or @cbracken

shell/platform/common/public/flutter_messenger.h Outdated Show resolved Hide resolved
shell/platform/glfw/flutter_glfw.cc Outdated Show resolved Hide resolved
shell/platform/glfw/flutter_glfw.cc Show resolved Hide resolved
shell/platform/glfw/flutter_glfw.cc Outdated Show resolved Hide resolved
shell/platform/windows/flutter_windows_engine.h Outdated Show resolved Hide resolved
shell/platform/windows/window_state.h Outdated Show resolved Hide resolved
shell/platform/windows/window_state.h Outdated Show resolved Hide resolved
@gaaclarke gaaclarke force-pushed the windows-thread-safe-platform-channel-response branch from 71b65ee to a248e62 Compare November 1, 2022 21:11
shell/platform/windows/public/flutter_windows.h Outdated Show resolved Hide resolved
shell/platform/windows/window_state.h Outdated Show resolved Hide resolved
shell/platform/glfw/flutter_glfw.cc Show resolved Hide resolved
shell/platform/glfw/flutter_glfw.cc Show resolved Hide resolved
shell/platform/windows/window_state.h Outdated Show resolved Hide resolved
shell/platform/windows/window_state.h Outdated Show resolved Hide resolved
shell/platform/windows/window_state.h Outdated Show resolved Hide resolved
@gaaclarke gaaclarke force-pushed the windows-thread-safe-platform-channel-response branch 2 times, most recently from 174e349 to cfa8d24 Compare November 2, 2022 20:42
if (!FlutterDesktopMessengerIsAvailable(messenger_ptr.get())) {
// Drop reply if it comes in after the engine is destroyed.
return;
}
if (!response_handle) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Optional nit: this block is entirely local, so could be done before acquiring the lock instead.

Copy link
Member Author

Choose a reason for hiding this comment

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

IsAvailable has to happen inside the safety of the lock.

Copy link
Contributor

Choose a reason for hiding this comment

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

My comment was on this code:

    if (!response_handle) {
      std::cerr << "Error: Response can be set only once. Ignoring "
                   "duplicate response."
                << std::endl;
      return;
    }

which doesn't have any calls to IsAvailable.

shell/platform/windows/window_state.h Outdated Show resolved Hide resolved
@gaaclarke gaaclarke force-pushed the windows-thread-safe-platform-channel-response branch from 045b563 to 9db9d76 Compare November 4, 2022 21:38
@gaaclarke
Copy link
Member Author

friendly ping @stuartmorgan

/// Convert to FlutterDesktopMessengerRef.
FlutterDesktopMessengerRef ToRef() {
return reinterpret_cast<FlutterDesktopMessengerRef>(this);
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Why are these part of the class rather than in flutter_window.cc with the others?

The intended model here is that there's a coherent C++ interface that all internal logic is developed against, and then flutter_windows.* is a minimal layer over that for the sole purpose of creating a DLL interface (which has to be C). These opaque handles are purely a function of the C API layer, which is why the other functions are in flutter_window.cc; the C++ classes shouldn't know about the C layer when we can avoid it since that's a layering inversion. (In pattern terms I would view the C layer as basically a Facade, if that helps.)

Copy link
Member Author

Choose a reason for hiding this comment

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

They were put there as the most convenient location. They can't live in flutter_window.cc because they are also used in flutter_windows_engine.cc because of BinaryMessengerImpl and IncomingMessageDispatcher using FlutterDesktopMessengerRef. I considered changing those interfaces but decided to do the least amount of change possible.

Copy link
Contributor

Choose a reason for hiding this comment

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

Ah, right. Could you put a TODO on these then to move them to flutter_windows.cc functions and remove the internal usage of FlutterDesktopMessengerRef?

Copy link
Member Author

Choose a reason for hiding this comment

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

done, added issue: flutter/flutter#115021

// The engine that owns this state object.
flutter::FlutterWindowsEngine* engine = nullptr;
};
struct FlutterDesktopMessenger {};
Copy link
Contributor

Choose a reason for hiding this comment

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

You should be able to completely remove this. The pointers that have already been fully converted to classes use the opaque struct design, where the struct is forward declared but never defined, because it's only used to create a typed pointer.

Copy link
Member Author

Choose a reason for hiding this comment

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

done

@gaaclarke gaaclarke added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 9, 2022
@auto-submit auto-submit bot merged commit 722414a into flutter:main Nov 9, 2022
sourcegraph-bot pushed a commit to sgtest/megarepo that referenced this pull request Nov 10, 2022
… windows (flutter/engine#36909) (#115033)

Commit: befd8b66cd7b94b3018125f66659b50fdec0a078
engine-flutter-autoroll added a commit to engine-flutter-autoroll/plugins that referenced this pull request Nov 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 10, 2022
auto-submit bot pushed a commit to flutter/plugins that referenced this pull request Nov 10, 2022
* 3a656b1 Add more supported simulator debugging options and improve tests (flutter/flutter#114628)

* 51c517c [flutter_tools/dap] Add support for forwarding `flutter run --machine` exposeUrl requests to the DAP client (flutter/flutter#114539)

* 8e5439c Roll Flutter Engine from e7d7edab98ad to c76035429c36 (14 revisions) (flutter/flutter#115008)

* a479718 Update cirrus key (flutter/flutter#115006)

* dccc761 Roll Flutter Engine from c76035429c36 to aa4b3ea2f733 (27 revisions) (flutter/flutter#115025)

* d0491dc Add the `channel` parameter to the Dartpad samples (flutter/flutter#115018)

* befd8b6 722414a26 Implemented threadsafe platform channel replies on windows (flutter/engine#36909) (flutter/flutter#115033)

* 154ae0f `updateSemantics` in TestWindow should always be implemented. (flutter/flutter#114857)

* 008ac17 remove unnecessary brace in string interpolation (flutter/flutter#115032)

* 8926d9e a9fbf6af5 Roll Fuchsia Linux SDK from mDzQK4ZUk_Y4wfZa_... to RNSA2Wp1MObtc7OHy... (flutter/engine#37485) (flutter/flutter#115045)

* e6fb124 Roll Flutter Engine from a9fbf6af52c9 to b42ed6933cef (2 revisions) (flutter/flutter#115048)

* ff75451 a42b2d9b9 Fix a race in the EmbedderA11yTest.A11yTreeIsConsistent tests (flutter/engine#37488) (flutter/flutter#115060)

* c7d1154 a71c0c6c3 [Impeller] Support access the descriptor of PipelineFuture directly (flutter/engine#37415) (flutter/flutter#115063)
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 10, 2022
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Nov 10, 2022
IVLIVS-III pushed a commit to IVLIVS-III/flutter_plugins_fork that referenced this pull request Nov 11, 2022
* 3a656b1 Add more supported simulator debugging options and improve tests (flutter/flutter#114628)

* 51c517c [flutter_tools/dap] Add support for forwarding `flutter run --machine` exposeUrl requests to the DAP client (flutter/flutter#114539)

* 8e5439c Roll Flutter Engine from e7d7edab98ad to c76035429c36 (14 revisions) (flutter/flutter#115008)

* a479718 Update cirrus key (flutter/flutter#115006)

* dccc761 Roll Flutter Engine from c76035429c36 to aa4b3ea2f733 (27 revisions) (flutter/flutter#115025)

* d0491dc Add the `channel` parameter to the Dartpad samples (flutter/flutter#115018)

* befd8b6 722414a26 Implemented threadsafe platform channel replies on windows (flutter/engine#36909) (flutter/flutter#115033)

* 154ae0f `updateSemantics` in TestWindow should always be implemented. (flutter/flutter#114857)

* 008ac17 remove unnecessary brace in string interpolation (flutter/flutter#115032)

* 8926d9e a9fbf6af5 Roll Fuchsia Linux SDK from mDzQK4ZUk_Y4wfZa_... to RNSA2Wp1MObtc7OHy... (flutter/engine#37485) (flutter/flutter#115045)

* e6fb124 Roll Flutter Engine from a9fbf6af52c9 to b42ed6933cef (2 revisions) (flutter/flutter#115048)

* ff75451 a42b2d9b9 Fix a race in the EmbedderA11yTest.A11yTreeIsConsistent tests (flutter/engine#37488) (flutter/flutter#115060)

* c7d1154 a71c0c6c3 [Impeller] Support access the descriptor of PipelineFuture directly (flutter/engine#37415) (flutter/flutter#115063)
schwa423 pushed a commit to schwa423/engine that referenced this pull request Nov 16, 2022
…6909)

* Implemented threadsafe platform channel replies on windows

* added unit test

* added docstrings

* implemented glfw

* added comments

* made glfw messenger unable to be copied

* stuart feedback 1

* stuart feedback 2: replaced the shared_ptr

* stuart feedback 3

* stuart feedback: remove error log

* Moved FlutterDesktopMessenger to its own file.

* updated licenses

* stuart feedback
adam-harwood pushed a commit to adam-harwood/flutter_plugins that referenced this pull request Nov 21, 2022
* 3a656b1 Add more supported simulator debugging options and improve tests (flutter/flutter#114628)

* 51c517c [flutter_tools/dap] Add support for forwarding `flutter run --machine` exposeUrl requests to the DAP client (flutter/flutter#114539)

* 8e5439c Roll Flutter Engine from e7d7edab98ad to c76035429c36 (14 revisions) (flutter/flutter#115008)

* a479718 Update cirrus key (flutter/flutter#115006)

* dccc761 Roll Flutter Engine from c76035429c36 to aa4b3ea2f733 (27 revisions) (flutter/flutter#115025)

* d0491dc Add the `channel` parameter to the Dartpad samples (flutter/flutter#115018)

* befd8b6 722414a26 Implemented threadsafe platform channel replies on windows (flutter/engine#36909) (flutter/flutter#115033)

* 154ae0f `updateSemantics` in TestWindow should always be implemented. (flutter/flutter#114857)

* 008ac17 remove unnecessary brace in string interpolation (flutter/flutter#115032)

* 8926d9e a9fbf6af5 Roll Fuchsia Linux SDK from mDzQK4ZUk_Y4wfZa_... to RNSA2Wp1MObtc7OHy... (flutter/engine#37485) (flutter/flutter#115045)

* e6fb124 Roll Flutter Engine from a9fbf6af52c9 to b42ed6933cef (2 revisions) (flutter/flutter#115048)

* ff75451 a42b2d9b9 Fix a race in the EmbedderA11yTest.A11yTreeIsConsistent tests (flutter/engine#37488) (flutter/flutter#115060)

* c7d1154 a71c0c6c3 [Impeller] Support access the descriptor of PipelineFuture directly (flutter/engine#37415) (flutter/flutter#115063)
mauricioluz pushed a commit to mauricioluz/plugins that referenced this pull request Jan 26, 2023
* 3a656b1 Add more supported simulator debugging options and improve tests (flutter/flutter#114628)

* 51c517c [flutter_tools/dap] Add support for forwarding `flutter run --machine` exposeUrl requests to the DAP client (flutter/flutter#114539)

* 8e5439c Roll Flutter Engine from e7d7edab98ad to c76035429c36 (14 revisions) (flutter/flutter#115008)

* a479718 Update cirrus key (flutter/flutter#115006)

* dccc761 Roll Flutter Engine from c76035429c36 to aa4b3ea2f733 (27 revisions) (flutter/flutter#115025)

* d0491dc Add the `channel` parameter to the Dartpad samples (flutter/flutter#115018)

* befd8b6 722414a26 Implemented threadsafe platform channel replies on windows (flutter/engine#36909) (flutter/flutter#115033)

* 154ae0f `updateSemantics` in TestWindow should always be implemented. (flutter/flutter#114857)

* 008ac17 remove unnecessary brace in string interpolation (flutter/flutter#115032)

* 8926d9e a9fbf6af5 Roll Fuchsia Linux SDK from mDzQK4ZUk_Y4wfZa_... to RNSA2Wp1MObtc7OHy... (flutter/engine#37485) (flutter/flutter#115045)

* e6fb124 Roll Flutter Engine from a9fbf6af52c9 to b42ed6933cef (2 revisions) (flutter/flutter#115048)

* ff75451 a42b2d9b9 Fix a race in the EmbedderA11yTest.A11yTreeIsConsistent tests (flutter/engine#37488) (flutter/flutter#115060)

* c7d1154 a71c0c6c3 [Impeller] Support access the descriptor of PipelineFuture directly (flutter/engine#37415) (flutter/flutter#115063)
atsansone pushed a commit to flutter/website that referenced this pull request Apr 26, 2023
This updates the guidelines about threading and the responses to
platform channels. Once the following PRs are on `main` all official
platforms (minus web where it doesn't make sense) support thread-safe
responses.

issue: flutter/flutter#93945

Do no land until the following are on stable:
1) flutter/engine#37689
1) flutter/engine#37607
1) flutter/engine#36909

## Presubmit checklist
- [x] This PR doesn’t contain automatically generated corrections
(Grammarly or similar).
- [x] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style) — for example, it
doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person).
- [x] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/main/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
of 80 characters or fewer.

Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com>
Co-authored-by: Parker Lougheed <parlough@gmail.com>
atsansone pushed a commit to flutter/website that referenced this pull request Apr 26, 2023
This updates the guidelines about threading and the responses to
platform channels. Once the following PRs are on `main` all official
platforms (minus web where it doesn't make sense) support thread-safe
responses.

issue: flutter/flutter#93945

Do no land until the following are on stable:
1) flutter/engine#37689
1) flutter/engine#37607
1) flutter/engine#36909

## Presubmit checklist
- [x] This PR doesn’t contain automatically generated corrections
(Grammarly or similar).
- [x] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style) — for example, it
doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person).
- [x] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/main/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
of 80 characters or fewer.

Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com>
Co-authored-by: Parker Lougheed <parlough@gmail.com>
khanhnwin added a commit to flutter/website that referenced this pull request May 10, 2023
* Adding state restoration pages (#8424)

Fixes #2004
Fixes another issue that I can't find atm.

[Staged
link](https://sz-flutter-2.web.app/development/platform-integration/android/restore-state-android)

@goderbauer, there are questions for you in this PR.

cc @goderbauer

---------

Co-authored-by: Parker Lougheed <parlough@gmail.com>

* Fix typo "priori" -> "prior" (#8573)

_Description of what this PR is changing or adding, and why:_

_Issues fixed by this PR (if any): Fix typo in
`src/resources/inside-flutter.md:589`

- [x] This PR doesn’t contain automatically generated corrections
(Grammarly or similar).
- [x] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style) — for example, it
doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person).
- [x] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
of 80 characters or fewer.

---------

Co-authored-by: Brett Morgan <brettmorgan@google.com>
Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com>

* Replace Webby mention with I/O in banner (#8627)

The Webby voting has ended. This PR removes the Webby mention and
reintroduces the I/O call to action.

<img width="559" alt="Screenshot of banner"
src="https://user-images.githubusercontent.com/18372958/234385170-785d7be7-9b39-4752-b398-95a7e7f987a7.png">

Co-authored-by: Brett Morgan <brettmorgan@google.com>

* [Proposal] Breakup development directory (#8624)

This pull request extracts all subcategories from `/development` to
top-level entries, to match similar entries like "Deployment" and
"Testing and debugging". The subcategories under Development are perhaps
the most important categories for learning Flutter, but they were hidden
under Development. This made them harder to navigate, with smaller text,
and with deeper links and breadcrumbs.

Work done:
- Pulled subdirectories out of `/development`
- Updated all old redirects and links to new destination
- Introduce new redirects so old links keep working
- Add some of the new top-level dividers to visually distinguish content
- Enable breadcrumbs in moved content
- Enable breadcrumbs within "Deployment"
- Moved "Add to app" below "Deployment"
- Add a short title for Add to app

This is part of incremental work, and will be followed up with breaking
up and reorganization "User interface", adjusting titles of content, and
adding some cookbooks to the sidenav.

Staged:
https://flutter-docs-prod--pr8624-feature-breakup-deve-00ees3e9.web.app/

* Deprecate `describeEnum`. (#8571)

Tied to flutter/flutter#125016

---------

Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com>

* Moving migration guides to the release directory (#8629)

Part of the IA cleanup, moving migration guides to the /release
directory and removing them from the sidenav.

cc @parlough

---------

Co-authored-by: Parker Lougheed <parlough@gmail.com>

* flavors.md - Updated path of "New Scheme" in the XCode menu. (#8599)

Updated path of "New Scheme" in the XCode menu.

![image](https://user-images.githubusercontent.com/4278331/233380485-da5efb42-5ea7-47e1-883e-6a949299332a.png)

**IMPORTANT:** Due to work on the docs.flutter.dev infrastructure, **all
open pull requests will be closed April 26.**

If your PR needs to be merged by April 26, please say that in your PR.

Otherwise, please [file an
issue](https://github.com/flutter/website/issues/new/choose) about the
needed change, and (if you submit a PR) be prepared to recreate the PR
May 10 or later.

---

_Description of what this PR is changing or adding, and why:_

_Issues fixed by this PR (if any):_

- [ ] This PR doesn’t contain automatically generated corrections
(Grammarly or similar).
- [ ] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style) — for example, it
doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person).
- [ ] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/main/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
of 80 characters or fewer.

* Bump site-shared from `04a5353` to `74292e2` (#8630)

* Fix apostrophe in contextual-survey-metadata.json (#8631)

Changing apostrophe character in description

---

Makes it so that we can parse the json in dart code in the response

* Document the new `canvasKitVariant` runtime configuration (#8475)

Add documentation for the new
[`canvasKitVariant`](https://github.com/flutter/engine/blob/0776f38b87137ad2535d77e91a79b8b6c80f16fb/lib/web_ui/lib/src/engine/configuration.dart#L221-L224)
runtime configuration.

Closes flutter/flutter#123048

- [x] This PR doesn’t contain automatically generated corrections
(Grammarly or similar).
- [x] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style) — for example, it
doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person).
- [x] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
of 80 characters or fewer.

---------

Co-authored-by: Anthony Sansone <atsansone@users.noreply.github.com>

* Adding wireless debugging information to the docs (#8456)

We've added support for wireless debugging of iOS devices. This PR adds
documentation for setting it up.

To do:
- [x] Add in information about IPv4 and IPv6  to `flutter attach` page
- [ ] Specify the Flutter release where this feature is available
- [x] See if there's any information needed for Android wireless
debugging

_Issues fixed by this PR (if any):_
#8425

- [x] This PR doesn’t contain automatically generated corrections
(Grammarly or similar).
- [x] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style) — for example, it
doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person).
- [x] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
of 80 characters or fewer.

---------

Co-authored-by: Victoria Ashworth <vashworth@google.com>
Co-authored-by: Brett Morgan <brettmorgan@google.com>
Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com>

* Adaptation information for inputs and app bars (#8509)

This PR adds some information on how to adapt styling for input widgets
with .adaptive() constructors, as well as top app bars.

Note that I am not sure of the best way to style the tables or size the
images. Also, I have added some commented out sections that should be
added when stable release goes live.

Fixes: #8428

- [X] This PR doesn’t contain automatically generated corrections
(Grammarly or similar).
- [X] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style) — for example, it
doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person).
- [X] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
of 80 characters or fewer.

@MitchellGoodwin could you take a quick peak at the code and make sure
it looks okay?

@InMatrix feel free to propose any edits!

---------

Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com>

* Adapting bottom navigation bar (#8541)

This adds to our platform adaptation documentation to add a section on
tab bars.

This fixes this issue: https://github.com/flutter/website/issues/8540.

Builds on top of this PR: #8509

- [X] This PR doesn’t contain automatically generated corrections
(Grammarly or similar).
- [X] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style) — for example, it
doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person).
- [X] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
of 80 characters or fewer.

---------

Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com>
Co-authored-by: Anthony Sansone <atsansone@users.noreply.github.com>

* Updated Impeller details (#8607)

Fixes #8608

---------

Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com>

* Enable build checks and tests in next branch (#8609)

* Update widget catalog to show Material 3 widgets (#8574)

Fixes #8432.

Site changes are viewable at the staging site:
https://flutter-site-73ed1.web.app/development/ui/widgets/.

Primary changes:
- Addition of Material 3 Components card
[(view)](https://flutter-site-73ed1.web.app/development/ui/widgets/).
- New Material 3 page showing M3 widgets as displayed in matching
categories to material.io/components. This also includes a note about
Material 3 becoming the default - this text is not final and can be
iterated on in review.
- Widget cards in the M3 page have a hover effect applied.
- In the widgets overview page, Material now links to M3, and contains a
link to the previous M2 widgets page.

General notes:
- Material 2 page ~~remains unchanged~~ has a notice about Material 3.
- No light/dark modes - this was explored but decided against, with the
possibility of returning to it if the site undergoes a site-wide dark
mode addition.

- [x] This PR doesn’t contain automatically generated corrections
(Grammarly or similar).
- [x] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style) — for example, it
doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person).
- [x] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/master/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
of 80 characters or fewer.

* Updated the threading notice for platform channel responses. (#7901)

This updates the guidelines about threading and the responses to
platform channels. Once the following PRs are on `main` all official
platforms (minus web where it doesn't make sense) support thread-safe
responses.

issue: flutter/flutter#93945

Do no land until the following are on stable:
1) flutter/engine#37689
1) flutter/engine#37607
1) flutter/engine#36909

- [x] This PR doesn’t contain automatically generated corrections
(Grammarly or similar).
- [x] This PR follows the [Google Developer Documentation Style
Guidelines](https://developers.google.com/style) — for example, it
doesn’t use _i.e._ or _e.g._, and it avoids _I_ and _we_ (first person).
- [x] This PR uses [semantic line
breaks](https://github.com/dart-lang/site-shared/blob/main/doc/writing-for-dart-and-flutter-websites.md#semantic-line-breaks)
of 80 characters or fewer.

Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com>
Co-authored-by: Parker Lougheed <parlough@gmail.com>

* Update PR Template for Website Freeze (#8632)

---------

Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com>
Co-authored-by: Parker Lougheed <parlough@gmail.com>
Co-authored-by: 失魂魚 <satwanjyu@outlook.com>
Co-authored-by: Brett Morgan <brettmorgan@google.com>
Co-authored-by: Bernardo Ferrari <bernaferrari2@gmail.com>
Co-authored-by: Dimitris Paxinos <dpaxinos@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Elias Yishak <42216813+eliasyishak@users.noreply.github.com>
Co-authored-by: Mouad Debbar <mouad.debbar@gmail.com>
Co-authored-by: Anthony Sansone <atsansone@users.noreply.github.com>
Co-authored-by: Leigha Jarett <leighaj@google.com>
Co-authored-by: Victoria Ashworth <vashworth@google.com>
Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com>
Co-authored-by: Eilidh Southren <esouthren@google.com>
Co-authored-by: gaaclarke <30870216+gaaclarke@users.noreply.github.com>
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 embedder Related to the embedder API platform-windows
Projects
None yet
3 participants