From e9c8c28e6016ed06efb46b632945fddefd01e64a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 09:33:42 -0700 Subject: [PATCH 001/109] Bump examples/codelabs from `813f742` to `687e664` (#10451) Bumps [examples/codelabs](https://github.com/flutter/codelabs) from `813f742` to `687e664`.
Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/codelabs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/codelabs b/examples/codelabs index 813f7427c0..687e6641f1 160000 --- a/examples/codelabs +++ b/examples/codelabs @@ -1 +1 @@ -Subproject commit 813f7427c004363ee2fb00b6347ae3bb2fdadfdc +Subproject commit 687e6641f11d7b944e86da75fa92d95910062028 From 89fcd7714e612520c5dd9eb1be177b0c849756ba Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Wed, 24 Apr 2024 10:35:37 -0700 Subject: [PATCH 002/109] Adding Firebase resources to App Solutions (#10449) This was a request from senior management and will be handled in incremental steps. Fixes https://github.com/flutter/website/issues/10447 --------- Co-authored-by: Parker Lougheed --- src/_data/sidenav.yml | 43 ++++++++++++++++++++---- src/content/data-and-backend/firebase.md | 2 -- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/_data/sidenav.yml b/src/_data/sidenav.yml index efdecf9b22..afbe229954 100644 --- a/src/_data/sidenav.yml +++ b/src/_data/sidenav.yml @@ -60,36 +60,60 @@ - title: App solutions children: + - title: Firebase & Firestore + children: + - title: Overview + permalink: /data-and-backend/firebase + - title: Discover Firebase for Flutter + permalink: https://firebase.google.com/docs/flutter + - title: Get to know Firebase for Flutter + permalink: https://www.youtube.com/watch?v=wUSkeTaBonA + - title: Add a user authentication flow to a Flutter app using FirebaseUI + permalink: https://firebase.google.com/codelabs/firebase-auth-in-flutter-apps + - title: Get to know Firebase for web + permalink: https://firebase.google.com/codelabs/firebase-get-to-know-web - title: Games children: - title: Overview permalink: /resources/games-toolkit - title: Add achievements and leaderboards permalink: /cookbook/games/achievements-leaderboard + - title: Build leaderboards with Firestore + permalink: https://codelabs.developers.google.com/codelabs/admob-inline-ads-in-flutter - title: Add advertising permalink: /cookbook/plugins/google-mobile-ads - title: Add multiplayer support permalink: /cookbook/games/firestore-multiplayer - title: Add in-app purchases - permalink: https://codelabs.developers.google.com/codelabs/flutter-in-app-purchases#0 + permalink: https://codelabs.developers.google.com/codelabs/flutter-in-app-purchases - title: Add user authentication - permalink: https://firebase.google.com/codelabs/firebase-auth-in-flutter-apps#0 + permalink: https://firebase.google.com/codelabs/firebase-auth-in-flutter-apps - title: Debug using Crashlytics permalink: https://firebase.google.com/docs/crashlytics/get-started?platform=flutter - - title: News - children: - - title: Build a news app - permalink: /resources/news-toolkit + - title: Intro to Flame with Flutter + permalink: https://codelabs.developers.google.com/codelabs/flutter-flame-brick-breaker - title: Monetization children: - title: Overview permalink: https://flutter.dev/monetization - title: Add in-app purchases - permalink: https://codelabs.developers.google.com/codelabs/flutter-in-app-purchases#0 + permalink: https://codelabs.developers.google.com/codelabs/flutter-in-app-purchases + - title: Add advertising + permalink: /cookbook/plugins/google-mobile-ads + - title: Add AdMob Ads to your Flutter app + permalink: https://codelabs.developers.google.com/codelabs/admob-ads-in-flutter + - title: Add an AdMob banner and native inline ads to a Flutter app + permalink: https://codelabs.developers.google.com/codelabs/admob-inline-ads-in-flutter - title: Maps children: - title: Add maps to your app permalink: https://developers.google.com/maps/flutter-package + - title: Add Google maps to a Flutter app + permalink: https://codelabs.developers.google.com/codelabs/google-maps-in-flutter + - title: News + children: + - title: Build a news app + permalink: /resources/news-toolkit - divider - header: User interface @@ -341,6 +365,11 @@ permalink: /cookbook/persistence/sqlite - title: Firebase permalink: /data-and-backend/firebase + children: + - title: Overview + permalink: /data-and-backend/firebase + - title: Add Firebase to your Flutter app + permalink: https://firebase.google.com/docs/flutter/setup?platform=ios - title: Google APIs permalink: /data-and-backend/google-apis diff --git a/src/content/data-and-backend/firebase.md b/src/content/data-and-backend/firebase.md index 2147561bf8..446b76a69e 100644 --- a/src/content/data-and-backend/firebase.md +++ b/src/content/data-and-backend/firebase.md @@ -3,8 +3,6 @@ title: Firebase description: How to use Firebase and Firestore with Flutter. --- -## Introduction - Firebase is a Backend-as-a-Service (BaaS) app development platform that provides hosted backend services such as a realtime database, cloud storage, authentication, crash reporting, machine learning, From 297cb6be7b87eeb4eb48d3fbade0d6052c00b23d Mon Sep 17 00:00:00 2001 From: Gray Mackall <34871572+gmackall@users.noreply.github.com> Date: Wed, 24 Apr 2024 11:50:17 -0700 Subject: [PATCH 003/109] Clarify Gradle imperative apply migration docs for removal of unneeded kotlin dependency (#10454) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ Adds a note to remove an additional block from `android/app/build.gradle`, if it exists. This block was in templates shortly before the migration landed, and if not removed it will block migration. See https://github.com/flutter/flutter/issues/145654#issuecomment-2075380981 for more context. _Issues fixed by this PR (if any):_ https://github.com/flutter/flutter/issues/145654 ## 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). - [ ] 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: Gray Mackall --- .../breaking-changes/flutter-gradle-plugin-apply.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/content/release/breaking-changes/flutter-gradle-plugin-apply.md b/src/content/release/breaking-changes/flutter-gradle-plugin-apply.md index 7fd090a110..79dfd086e6 100644 --- a/src/content/release/breaking-changes/flutter-gradle-plugin-apply.md +++ b/src/content/release/breaking-changes/flutter-gradle-plugin-apply.md @@ -182,6 +182,16 @@ very top of your file, add: +} ``` +Finally, if your `dependencies` block contains a dependency on `"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"`, +then remove that dependency. +```diff +dependencies { +- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} +``` +If it was the only dependency in the `dependencies` block, then +alternatively you may remove the block entirely. + ### Validation Execute `flutter run` to confirm your app builds and launches on a connected From 932e1a1689793b6a6b7c88c74f291159038aa4fb Mon Sep 17 00:00:00 2001 From: Reid Baker Date: Wed, 24 Apr 2024 14:52:00 -0400 Subject: [PATCH 004/109] Add TLHC mode to docs and link issue tracker (#10453) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Does not update examples but gives a better description of what the tradeoffs are for the different modes of platform views on android. ## 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. --- .../android/platform-views.md | 47 ++++++++++++------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/src/content/platform-integration/android/platform-views.md b/src/content/platform-integration/android/platform-views.md index bd7b24b46d..c5d9578eec 100644 --- a/src/content/platform-integration/android/platform-views.md +++ b/src/content/platform-integration/android/platform-views.md @@ -23,24 +23,32 @@ see [Hosting native iOS views][]. [Hosting native iOS views]: /platform-integration/ios/platform-views -Flutter supports two modes starting at api 23: -Hybrid composition and virtual displays. +Platform Views on Android have two implementations. They come with tradeoffs +both in terms of performance and fidelity. +Platform views require Android API 23+. -Which one to use depends on the use case. -Let's take a look: +## [Hybrid Composition](#hybrid-composition) -* [Hybrid composition](#hybrid-composition) - appends the native `android.view.View` to the view hierarchy. - Therefore, keyboard handling, and accessibility work out of the box. - Prior to Android 10, this mode might significantly - reduce the frame throughput (FPS) of the Flutter UI. - For more context, see [Performance](#performance). +Platform Views are rendered as they are normally. Flutter content is rendered into a texture. +SurfaceFlinger composes the Flutter content and the platform views. -* [Virtual displays](#virtual-display) - render the `android.view.View` instance to a texture, - so it's not embedded within the Android Activity's view hierarchy. - Certain platform interactions such as keyboard handling - and accessibility features might not work. +* `+` best performance and fidelity of Android views. +* `-` Flutter performance suffers. +* `-` FPS of application will be lower. +* `-` Certain transformations that can be applied to Flutter widgets will not work when applied to platform views. + +## [Texture Layer](#texturelayerhybridcompisition) (or Texture Layer Hybrid Composition) + +Platform Views are rendered into a texture. +Flutter draws the platform views (via the texture). +Flutter content is rendered directly into a Surface. + +* `+` good performance for Android Views +* `+` best performance for Flutter rendering. +* `+` all transformations work correctly. +* `-` quick scrolling (e.g. a web view) will be janky +* `-` SurfaceViews are problematic in this mode and will be moved into a virtual display (breaking a11y) +* `-` Text magnifier will break unless Flutter is rendered into a TextureView. To create a platform view on Android, use the following steps: @@ -114,7 +122,7 @@ For more information, see the API docs for: [`PlatformViewLink`]: {{site.api}}/flutter/widgets/PlatformViewLink-class.html [`PlatformViewsService`]: {{site.api}}/flutter/services/PlatformViewsService-class.html -### Virtual display +### TextureLayerHybridCompisition In your Dart file, for example `native_view_example.dart`, @@ -407,6 +415,9 @@ android { } } ``` +### Surface Views + +Handling SurfaceViews is problematic for Flutter and should be avoided when possible. ### Manual view invalidation @@ -420,5 +431,9 @@ or one of its parent views. [`AndroidViewSurface`]: {{site.api}}/flutter/widgets/AndroidViewSurface-class.html +### Issues + +[Existing Platform View issues](https://github.com/flutter/flutter/issues?q=is%3Aopen+is%3Aissue+label%3A%22a%3A+platform-views%22) + {% include docs/platform-view-perf.md %} From 340ac78111da326efdb8754eb0d012f2dcf2e611 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Apr 2024 08:18:02 -0700 Subject: [PATCH 005/109] Bump actions/checkout from 4.1.3 to 4.1.4 (#10456) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.3 to 4.1.4.
Release notes

Sourced from actions/checkout's releases.

v4.1.4

What's Changed

Full Changelog: https://github.com/actions/checkout/compare/v4.1.3...v4.1.4

Changelog

Sourced from actions/checkout's changelog.

Changelog

v4.1.4

v4.1.3

v4.1.2

v4.1.1

v4.1.0

v4.0.0

v3.6.0

v3.5.3

v3.5.2

v3.5.1

v3.5.0

v3.4.0

... (truncated)

Commits

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=4.1.3&new-version=4.1.4)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/scorecards-analysis.yml | 2 +- .github/workflows/test.yml | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index f29e662d21..c47e581b44 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -29,7 +29,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 8830c120b7..287745eaec 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -22,7 +22,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b with: persist-credentials: false diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9e3b14d343..cd72a00682 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -32,7 +32,7 @@ jobs: branch: stable experimental: false steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b with: submodules: recursive - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 @@ -55,7 +55,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'flutter/website' steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b with: submodules: recursive - uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 @@ -71,7 +71,7 @@ jobs: name: Build site and check links runs-on: ubuntu-latest steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b with: submodules: recursive - name: Enable Corepack @@ -101,7 +101,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'flutter/website' steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b with: submodules: recursive - uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 From 4cd327bd3226212e034fb1e01bbc0fc774e7eec6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Apr 2024 08:18:32 -0700 Subject: [PATCH 006/109] Bump examples/codelabs from `687e664` to `386e528` (#10455) Bumps [examples/codelabs](https://github.com/flutter/codelabs) from `687e664` to `386e528`.
Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/codelabs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/codelabs b/examples/codelabs index 687e6641f1..386e528140 160000 --- a/examples/codelabs +++ b/examples/codelabs @@ -1 +1 @@ -Subproject commit 687e6641f11d7b944e86da75fa92d95910062028 +Subproject commit 386e528140eca6042a3cff051553b0b1b3b5444d From a7961843c4c9445f52b4e017b33a1cba4593b322 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Apr 2024 10:31:16 -0700 Subject: [PATCH 007/109] Bump examples/codelabs from `386e528` to `e0ea092` (#10461) Bumps [examples/codelabs](https://github.com/flutter/codelabs) from `386e528` to `e0ea092`.
Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/codelabs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/codelabs b/examples/codelabs index 386e528140..e0ea0921ec 160000 --- a/examples/codelabs +++ b/examples/codelabs @@ -1 +1 @@ -Subproject commit 386e528140eca6042a3cff051553b0b1b3b5444d +Subproject commit e0ea0921ecc5c06d991d116ee9e400b965faa089 From 1ad57eeadcc0f4985e6b1041611c38bc4562a129 Mon Sep 17 00:00:00 2001 From: chunhtai <47866232+chunhtai@users.noreply.github.com> Date: Fri, 26 Apr 2024 10:33:36 -0700 Subject: [PATCH 008/109] Adds popscope migration guide (#9872) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit waiting for https://github.com/flutter/flutter/pull/139164 ## Presubmit checklist - [ ] 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. --------- Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> --- src/content/release/breaking-changes/index.md | 2 + .../breaking-changes/popscope-with-result.md | 145 ++++++++++++++++++ 2 files changed, 147 insertions(+) create mode 100644 src/content/release/breaking-changes/popscope-with-result.md diff --git a/src/content/release/breaking-changes/index.md b/src/content/release/breaking-changes/index.md index 42fa481728..67f93505c3 100644 --- a/src/content/release/breaking-changes/index.md +++ b/src/content/release/breaking-changes/index.md @@ -33,6 +33,7 @@ release, and listed in alphabetical order: ### Not yet released to stable +* [Generic types in `PopScope`][] * [Rename `MaterialState` to `WidgetState`][] * [Introduce new `ColorScheme` roles][] * [Stop generating `AssetManifest.json`][] @@ -43,6 +44,7 @@ release, and listed in alphabetical order: * [Deprecated API removed after v3.19][] * [Dropping support for Android KitKat][] +[Generic types in `PopScope`]: /release/breaking-changes/popscope-with-result [Rename `MaterialState` to `WidgetState`]: /release/breaking-changes/material-state [Introduce new `ColorScheme` roles]: /release/breaking-changes/new-color-scheme-roles [Stop generating `AssetManifest.json`]: /release/breaking-changes/asset-manifest-dot-json diff --git a/src/content/release/breaking-changes/popscope-with-result.md b/src/content/release/breaking-changes/popscope-with-result.md new file mode 100644 index 0000000000..2abd0f27c3 --- /dev/null +++ b/src/content/release/breaking-changes/popscope-with-result.md @@ -0,0 +1,145 @@ +--- +title: Generic types in PopScope +description: > + Added a generic type in PopScope class and updated the onPopInvoked + function signature. +--- + +## Summary + +Added a generic type in [`PopScope`][] class and replaced the [`onPopInvoked`][] +with a new method [`onPopInvokedWithResult`][]. The new method takes a boolean +`didPop` and a `result` as position parameters. + +Also replaced the [`Form.onPopInvoked`] with [`Form.onPopInvokedWithResult`][] +for the same reason. + +## Context + +Previously, `PopScope` didn't have a way to access the pop result when `onPopInvoked` +was called. The generic type is added to the `PopScope` class +so that the new method `onPopInvokedWithResult` can access the type-safe result. + +## Description of change + +Added a generic type in `PopScope` class and a new method `onPopInvokedWithResult`. +The `onPopInvoked` was deprecated in the favor of `onPopInvokedWithResult`. + +Also added a new method `onPopInvokedWithResult` to `Form` to replace `onPopInvoked`. + +## Migration guide + +Code before migration + +```dart +import 'package:flutter/material.dart'; + +void main() { + runApp( + MaterialApp( + navigatorKey: nav, + home: Column( + children: [ + Form( + canPop: false, + onPopInvoked: (bool didPop) { + if (didPop) { + return; + } + launchConfirmationDialog(); + }, + child: MyWidget(), + ), + PopScope( + canPop: false, + onPopInvoked: (bool didPop) { + if (didPop) { + return; + } + launchConfirmationDialog(); + }, + child: MyWidget(), + ), + ], + ), + ), + ); +} +``` + +Code after migration +```dart +import 'package:flutter/material.dart'; + +void main() { + runApp( + MaterialApp( + navigatorKey: nav, + home: Column( + children: [ + Form( + canPop: false, + onPopInvokedWithResult: (bool didPop, Object? result) { + if (didPop) { + return; + } + launchConfirmationDialog(); + }, + child: MyWidget(), + ), + PopScope( + canPop: false, + onPopInvokedWithResult: (bool didPop, Object? result) { + if (didPop) { + return; + } + launchConfirmationDialog(); + }, + child: MyWidget(), + ), + ], + ), + ), + ); +} +``` + +The generic type should match the generic type of the [`Route`] +that the `PopScope` is in. +If the route uses `int` as its generic type, consider using `PopScope`. + +If the `PopScope` widgets are shared across multiple routes with +different types, you can use `PopScope` to catch all possible types. + +## Timeline + +Landed in version: 3.22.0-12.0.pre-56 +In stable release: TBD + +## References + +API documentation: + +* [`PopScope`][] +* [`onPopInvoked`][] +* [`Route`][] +* [`onPopInvokedWithResult`][] +* [`Form.onPopInvoked`][] +* [`Form.onPopInvokedWithResult`][] + +Relevant issue: + +* [Issue 137458][] + +Relevant PR: + +* [Add generic type for result in PopScope][] + +[Add generic type for result in PopScope]: {{site.repo.flutter}}/pull/139164 +[`PopScope`]: {{site.api}}/flutter/widgets/PopScope-class.html +[`Route`]: {{site.api}}/flutter/widgets/Route-class.html +[`onPopInvoked`]: {{site.api}}/flutter/widgets/PopScope/onPopInvoked.html +[`onPopInvokedWithResult`]: {{site.api}}/flutter/widgets/PopScope/onPopInvokedWithResult.html +[`Form.onPopInvoked`]: {{site.api}}/flutter/widgets/Form/onPopInvoked.html +[`Form.onPopInvokedWithResult`]: {{site.api}}/flutter/widgets/Form/onPopInvokedWithResult.html +[Issue 137458]: {{site.repo.flutter}}/issues/137458 From c2653b7baae20d68482d07789d1adf2b527f5c59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Apr 2024 11:04:22 -0700 Subject: [PATCH 009/109] Bump github/codeql-action from 3.25.2 to 3.25.3 (#10460) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.2 to 3.25.3.
Changelog

Sourced from github/codeql-action's changelog.

CodeQL Action Changelog

See the releases page for the relevant changes to the CodeQL CLI and language packs.

Note that the only difference between v2 and v3 of the CodeQL Action is the node version they support, with v3 running on node 20 while we continue to release v2 to support running on node 16. For example 3.22.11 was the first v3 release and is functionally identical to 2.22.11. This approach ensures an easy way to track exactly which features are included in different versions, indicated by the minor and patch version numbers.

[UNRELEASED]

No user facing changes.

3.25.3 - 25 Apr 2024

  • Update default CodeQL bundle version to 2.17.1. #2247
  • Workflows running on macos-latest using CodeQL CLI versions before v2.15.1 will need to either upgrade their CLI version to v2.15.1 or newer, or change the platform to an Intel MacOS runner, such as macos-12. ARM machines with SIP disabled, including the newest macos-latest image, are unsupported for CLI versions before 2.15.1. #2261

3.25.2 - 22 Apr 2024

No user facing changes.

3.25.1 - 17 Apr 2024

  • We are rolling out a feature in April/May 2024 that improves the reliability and performance of analyzing code when analyzing a compiled language with the autobuild build mode. #2235
  • Fix a bug where the init Action would fail if --overwrite was specified in CODEQL_ACTION_EXTRA_OPTIONS. #2245

3.25.0 - 15 Apr 2024

  • The deprecated feature for extracting dependencies for a Python analysis has been removed. #2224

    As a result, the following inputs and environment variables are now ignored:

    • The setup-python-dependencies input to the init Action
    • The CODEQL_ACTION_DISABLE_PYTHON_DEPENDENCY_INSTALLATION environment variable

    We recommend removing any references to these from your workflows. For more information, see the release notes for CodeQL Action v3.23.0 and v2.23.0.

  • Automatically overwrite an existing database if found on the filesystem. #2229

  • Bump the minimum CodeQL bundle version to 2.12.6. #2232

  • A more relevant log message and a diagnostic are now emitted when the file program is not installed on a Linux runner, but is required for Go tracing to succeed. #2234

3.24.10 - 05 Apr 2024

  • Update default CodeQL bundle version to 2.17.0. #2219
  • Add a deprecation warning for customers using CodeQL version 2.12.5 and earlier. These versions of CodeQL were discontinued on 26 March 2024 alongside GitHub Enterprise Server 3.8, and will be unsupported by CodeQL Action versions 3.25.0 and later and versions 2.25.0 and later. #2220
    • If you are using one of these versions, please update to CodeQL CLI version 2.12.6 or later. For instance, if you have specified a custom version of the CLI using the 'tools' input to the 'init' Action, you can remove this input to use the default version.
    • Alternatively, if you want to continue using a version of the CodeQL CLI between 2.11.6 and 2.12.5, you can replace github/codeql-action/*@v3 by github/codeql-action/*@v3.24.10 and github/codeql-action/*@v2 by github/codeql-action/*@v2.24.10 in your code scanning workflow to ensure you continue using this version of the CodeQL Action.

3.24.9 - 22 Mar 2024

  • Update default CodeQL bundle version to 2.16.5. #2203

3.24.8 - 18 Mar 2024

... (truncated)

Commits
  • d39d31e Merge pull request #2262 from github/update-v3.25.3-ac2f82a1f
  • a727825 Move changenote to most recent section
  • 1efa859 Update changelog for v3.25.3
  • ac2f82a Log warning if SIP is disabled and CLI version is < 2.15.1 (#2261)
  • 0ad7791 Merge pull request #2247 from github/update-bundle/codeql-bundle-v2.17.1
  • 79d9ee7 Merge branch 'main' into update-bundle/codeql-bundle-v2.17.1
  • dbf2b17 Merge pull request #2255 from github/mergeback/v3.25.2-to-main-8f596b4a
  • ff6a3c4 Update checked-in dependencies
  • 619dc0c Update changelog and version after v3.25.2
  • 39e1e65 Add changelog note
  • Additional commits viewable in compare view

[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.25.2&new-version=3.25.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards-analysis.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index c47e581b44..b60ee5aca6 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -33,7 +33,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@8f596b4ae3cb3c588a5c46780b86dd53fef16c52 + uses: github/codeql-action/init@d39d31e687223d841ef683f52467bd88e9b21c14 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -44,7 +44,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@8f596b4ae3cb3c588a5c46780b86dd53fef16c52 + uses: github/codeql-action/autobuild@d39d31e687223d841ef683f52467bd88e9b21c14 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -58,4 +58,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@8f596b4ae3cb3c588a5c46780b86dd53fef16c52 + uses: github/codeql-action/analyze@d39d31e687223d841ef683f52467bd88e9b21c14 diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 287745eaec..22b864e73f 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@8f596b4ae3cb3c588a5c46780b86dd53fef16c52 + uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 with: sarif_file: results.sarif From deeeff13b5f57bdb111ec8b942994634414098c4 Mon Sep 17 00:00:00 2001 From: Navaron Bracke Date: Fri, 26 Apr 2024 21:53:16 +0200 Subject: [PATCH 010/109] Update references to compile / min target sdk property (#10459) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ This updates the Android docs to reference to the new property names of the deprecated `minSdkVersion` / `targetSdkVersion` / `compileSdkVersion` _Issues fixed by this PR (if any):_ https://github.com/flutter/website/issues/10458 ## 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. --- src/content/deployment/android.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/content/deployment/android.md b/src/content/deployment/android.md index b67cfb4a73..51a4a38b09 100644 --- a/src/content/deployment/android.md +++ b/src/content/deployment/android.md @@ -323,11 +323,11 @@ to verify that the values are correct. `applicationId` : Specify the final, unique [application ID][]. -`minSdkVersion` +`minSdk` : Specify the [minimum API level][] on which you designed the app to run. Defaults to `flutter.minSdkVersion`. -`targetSdkVersion` +`targetSdk` : Specify the target API level on which you designed the app to run. Defaults to `flutter.targetSdkVersion`. @@ -349,12 +349,17 @@ to verify that the values are correct. #### Under the `android` block -`compileSdkVersion` +`compileSdk` : Specify the API level Gradle should use to compile your app. Defaults to `flutter.compileSdkVersion`. For more information, check out the module-level build section in the [Gradle build file][gradlebuild]. + +:::note +If you use a recent version of the Android SDK, you might get deprecation warnings about `compileSdkVersion`, `minSdkVersion` or `targetSdkVersion`. +You can rename these properties to `compileSdk`, `minSdk` and `targetSdk` respectively. +::: ## Build the app for release From 823f0308cb347baec3320b480d0172b006ee0176 Mon Sep 17 00:00:00 2001 From: Andrea Bizzotto Date: Sun, 28 Apr 2024 06:19:04 +0100 Subject: [PATCH 011/109] Add "How to Parse JSON in Dart/Flutter" guide to the JSON and serialization page (#10462) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ This PR adds a third-party guide that covers JSON serialization in-depth, including data validation, advanced use cases that are rarely covered, and examples using the latest pattern-matching features in Dart 3. _Issues fixed by this PR (if any):_ ## 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. --- src/content/data-and-backend/serialization/json.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/content/data-and-backend/serialization/json.md b/src/content/data-and-backend/serialization/json.md index 9a8ca82234..7a76a3a6d9 100644 --- a/src/content/data-and-backend/serialization/json.md +++ b/src/content/data-and-backend/serialization/json.md @@ -525,7 +525,7 @@ For more information, see the following resources: * The [`json_serializable`][] package on pub.dev * The [`json_serializable` examples][] on GitHub * The [Dive into Dart's patterns and records][] codelab - +* This ultimate guide about [how to parse JSON in Dart/Flutter][] [`built_value`]: {{site.pub}}/packages/built_value [code generation libraries]: #code-generation @@ -544,3 +544,4 @@ For more information, see the following resources: [Serializing JSON using code generation libraries]: #code-generation [tree shaking]: https://en.wikipedia.org/wiki/Tree_shaking [Dive into Dart's patterns and records]: {{site.codelabs}}/codelabs/dart-patterns-records +[how to parse JSON in Dart/Flutter]: https://codewithandrea.com/articles/parse-json-dart/ From f20cd542d58d96d0b09554e4efd1d2c07a852c73 Mon Sep 17 00:00:00 2001 From: Allan Muzeya <68616320+allantinashemuzeya@users.noreply.github.com> Date: Sun, 28 Apr 2024 07:42:25 +0200 Subject: [PATCH 012/109] Wholistically update the test_drive getting started documentation as per https://github.com/flutter/website/issues/10465#issue-2266283359 (#10466) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ This PR changes the test-drive/androidstudio.md and test-drive/vscode.md as well as the test-drive/index.md to update the documentation grammar and clarity as well as to add missing info such as IDE plugin/extension for smooth development in Flutter. _Issues fixed by this PR (if any):_ 10465#issue-2266283359 ## 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: Allan Muzeya --- .../docs/install/test-drive/androidstudio.md | 41 +++++++++---------- .../docs/install/test-drive/vscode.md | 26 +++++++----- src/content/get-started/test-drive/index.md | 1 - 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/_includes/docs/install/test-drive/androidstudio.md b/src/_includes/docs/install/test-drive/androidstudio.md index 5af2fdd4c7..860ece221f 100644 --- a/src/_includes/docs/install/test-drive/androidstudio.md +++ b/src/_includes/docs/install/test-drive/androidstudio.md @@ -1,47 +1,44 @@
-### Create your sample Flutter app {:#create-app-android-studio} +### Create a sample Flutter app {:#create-app-android-studio} 1. Launch the IDE. -1. Click **New Flutter Project** at the top of the +2. To be able to create flutter projects on Android Studio you will need to install the + [Flutter Plugin](https://plugins.jetbrains.com/plugin/9212-flutter) and for smart Dart + coding assistance that includes code completion, formatting, navigation, intentions, + refactorings, and more install the [Dart Plugin](https://plugins.jetbrains.com/plugin/6351-dart/). + +3. Head back to your IDE start page and Click **New Flutter Project** at the top of the **Welcome to Android Studio** dialog. -1. Under **Generators**, click **Flutter**. +4. Under **Generators**, click **Flutter**. -1. Verify the **Flutter SDK path** value against the Flutter SDK location +5. Verify the **Flutter SDK path** value against the Flutter SDK location on your development machine. -1. Click **Next**. +6. Click **Next**. -1. Enter `test_drive` into the **Project name** field. - This follows best practices for naming Flutter projects. +7. Enter `test_drive` into the **Project name** field. + Your project name should be written in [snake case](https://developer.mozilla.org/en-US/docs/Glossary/Snake_case) and in lowercase. This follows the Flutter best practices for naming projects. -1. Set the directory in the **Project location** field to +8. Set the directory in the **Project location** field to `C:\dev\test_drive` on Microsoft Windows or `~/development/test_drive` on other platforms. If you didn't create that directory before, Android Studio displays a warning that the **Directory Does Not Exist**. Click **Create**. -1. From **Project type** dropdown, select **Application**. - -1. Change the **Organization** to `com.example.flutter.testdrive`. - - Android Studio asks for a company domain name. - Android uses the company domain name and project name together as its - package name when you release the app. iOS uses its Bundle ID. - - Use `com.example.flutter.testdrive` to prevent future conflicts. +9. From **Project type** dropdown, select **Application**. -1. Ignore the remaining form fields. You don't need to change them for - this test drive. Click **Create**. +10. Ignore the remaining form fields. You don't need to change them for + this test drive. Click **Create**. -1. Wait for Android Studio to create the project. +11. Wait for Android Studio to create the project. -1. Open the `lib` directory, then the `main.dart`. +12. Open the `lib` directory, then the `main.dart`. - To learn what each code block does, check out the comments in that Dart file. + To learn what each code block does, check out the comments in that Dart file. The previous commands create a Flutter project directory called `test_drive` that contains a simple demo app that diff --git a/src/_includes/docs/install/test-drive/vscode.md b/src/_includes/docs/install/test-drive/vscode.md index b9b8265f4a..9a4b1ba65e 100644 --- a/src/_includes/docs/install/test-drive/vscode.md +++ b/src/_includes/docs/install/test-drive/vscode.md @@ -1,29 +1,33 @@
-### Create your sample Flutter app {:#create-app-vs-code} +### Create a sample Flutter app {:#create-app-vs-code} -1. Open the Command Palette. +1. To use the DevTools from VS Code, you need the [Dart extension](https://marketplace.visualstudio.com/items?itemName=Dart-Code.dart-code). + To easily debug your application you should also install + the [Flutter extension](https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter). + +2. Open the Command Palette. Go to **View** > **Command Palette** or press {{special}} + Shift + P. -1. Type `flutter` +3. Type `flutter` -1. Select the **Flutter: New Project**. +4. Select the **Flutter: New Project**. -1. When prompted for **Which Flutter Project**, select **Application**. +5. When prompted for **Which Flutter Project**, select **Application**. -1. Create or select the parent directory for the new project folder. +6. Create or select the parent directory for the new project folder. -1. When prompted for a **Project Name**, enter `test_drive`. +7. When prompted for a **Project Name**, enter `test_drive`. -1. Press Enter. +8. Press Enter. -1. Wait for project creation to complete. +9. Wait for project creation to complete. -1. Open the `lib` directory, then the `main.dart`. +10. Open the `lib` directory, then the `main.dart`. - To learn what each code block does, check out the comments in that Dart file. + To learn what each code block does, check out the comments in that Dart file. The previous commands create a Flutter project directory called `test_drive` that contains a simple demo app that uses [Material Components][]. diff --git a/src/content/get-started/test-drive/index.md b/src/content/get-started/test-drive/index.md index b4bec29d38..7dbae6224a 100644 --- a/src/content/get-started/test-drive/index.md +++ b/src/content/get-started/test-drive/index.md @@ -37,7 +37,6 @@ toc: false 1. How to run the new Flutter app. 1. How to use "hot reload" after you make changes to the app. -## Guide depends on your IDE These tasks depend on which integrated development environment (IDE) you use. From 023adb4400c69c1dd1d406b112988b9f1d19db76 Mon Sep 17 00:00:00 2001 From: Brett Morgan Date: Mon, 29 Apr 2024 12:52:17 +1000 Subject: [PATCH 013/109] Update a title in unreleased breaking changes list (#10468) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ Adding markdown code markers to a title _Issues fixed by this PR (if any):_ ## 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. --- src/content/release/breaking-changes/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/release/breaking-changes/index.md b/src/content/release/breaking-changes/index.md index 67f93505c3..f334f9518e 100644 --- a/src/content/release/breaking-changes/index.md +++ b/src/content/release/breaking-changes/index.md @@ -39,7 +39,7 @@ release, and listed in alphabetical order: * [Stop generating `AssetManifest.json`][] * [Rename `MemoryAllocations` to `FlutterMemoryAllocations`][] * [Deprecate `TextField.canRequestFocus`][] -* [Nullable PageView.controller][] +* [Nullable `PageView.controller`][] * [Deprecate `ButtonBar` in favor of `OverflowBar`][] * [Deprecated API removed after v3.19][] * [Dropping support for Android KitKat][] @@ -50,7 +50,7 @@ release, and listed in alphabetical order: [Stop generating `AssetManifest.json`]: /release/breaking-changes/asset-manifest-dot-json [Rename `MemoryAllocations` to `FlutterMemoryAllocations`]: /release/breaking-changes/flutter-memory-allocations [Deprecate `TextField.canRequestFocus`]: /release/breaking-changes/can-request-focus -[Nullable PageView.controller]: /release/breaking-changes/pageview-controller +[Nullable `PageView.controller`]: /release/breaking-changes/pageview-controller [Deprecate `ButtonBar` in favor of `OverflowBar`]: /release/breaking-changes/deprecate-buttonbar [Deprecated API removed after v3.19]: /release/breaking-changes/3-19-deprecations [Dropping support for Android KitKat]: /release/breaking-changes/android-kitkat-deprecation From 3c8f77b317720dda9a8858068063ece79a9db1dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 11:46:02 -0500 Subject: [PATCH 014/109] Bump examples/codelabs from `e0ea092` to `cad3558` (#10470) Bumps [examples/codelabs](https://github.com/flutter/codelabs) from `e0ea092` to `cad3558`.
Commits

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/codelabs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/codelabs b/examples/codelabs index e0ea0921ec..cad35585dc 160000 --- a/examples/codelabs +++ b/examples/codelabs @@ -1 +1 @@ -Subproject commit e0ea0921ecc5c06d991d116ee9e400b965faa089 +Subproject commit cad35585dcc159a89d6157cd3a56d82969d33a6c From dbe5a2018a4080d892da82c38033ef41dae4f03d Mon Sep 17 00:00:00 2001 From: Amos Date: Wed, 1 May 2024 02:43:26 +0800 Subject: [PATCH 015/109] Fix: Formatting in 'Configure your target iOS device' guide (#10473) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ ![1](https://github.com/flutter/website/assets/32262985/c2d1db4c-d5eb-4d20-a93d-c0681557ebfa) _Issues fixed by this PR (if any):_ None. ## 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. --- .../docs/install/devices/ios-physical.md | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/_includes/docs/install/devices/ios-physical.md b/src/_includes/docs/install/devices/ios-physical.md index a98ff17de5..1e0ab1ffd5 100644 --- a/src/_includes/docs/install/devices/ios-physical.md +++ b/src/_includes/docs/install/devices/ios-physical.md @@ -82,13 +82,14 @@ Follow the Xcode signing flow to provision your project. {: type="a"} 1. Go to **Xcode** > - **Settings...* + **Settings...** 1. Click **Accounts**. - . Click **+**. - . Select **Apple ID** and click **Continue**. - . When prompted, enter your **Apple ID** and **Password**. - . Close the **Settings** dialog. - Development and testing supports any Apple ID. + 1. Click **+**. + 1. Select **Apple ID** and click **Continue**. + 1. When prompted, enter your **Apple ID** and **Password**. + 1. Close the **Settings** dialog. + + Development and testing supports any Apple ID. 1. Go to **File** > **Open...** @@ -127,10 +128,11 @@ Follow the Xcode signing flow to provision your project. 1. Creates and downloads a Development Certificate 1. Registers your device with your account, 1. Creates and downloads a provisioning profile if needed - If automatic signing fails in Xcode, verify that the project's - **General** > - **Identity** > - **Bundle Identifier** value is unique. + +If automatic signing fails in Xcode, verify that the project's +**General** > +**Identity** > +**Bundle Identifier** value is unique. ![Check the app's Bundle ID][]{:.mw-100} From 88d3d7c31294a80873fb89d635ae4013ef16e186 Mon Sep 17 00:00:00 2001 From: Haroun El Omri Date: Tue, 30 Apr 2024 21:46:09 +0200 Subject: [PATCH 016/109] Add the design document to add support for content:// URIs on Android (#10472) See https://github.com/flutter/flutter/issues/147037. --- firebase.json | 1 + 1 file changed, 1 insertion(+) diff --git a/firebase.json b/firebase.json index a7cb358eb4..f78d91e078 100644 --- a/firebase.json +++ b/firebase.json @@ -287,6 +287,7 @@ { "source": "/go/colorscheme-m3", "destination": "https://docs.google.com/document/d/1mY1ahBQEMAfsawGJMX5S34pXb7c8dHGatyotClReeas/edit#heading=h.cnnhzna3pz6d", "type": 301 }, { "source": "/go/configurable-autosubmit", "destination": "https://docs.google.com/document/d/14pf4jfBy1-PHYmJLVbeqrh1swTF01SZ2YD3DR_Qv3kM/edit?usp=sharing&resourcekey=0-AW7-kNNGmmpSUqyOvBdwRg", "type": 301 }, { "source": "/go/contextual-menus", "destination": "https://docs.google.com/document/d/1F1itGgbSS3Cbq70hScSCNriDoux1sMGF9LHZsMdvU74/edit?resourcekey=0-RkHGwhe-tcoTGlaQyclPtQ", "type": 301 }, + { "source": "/go/cross_file-content-uri-implementation", "destination": "https://docs.google.com/document/d/1-d7uWlB9ERPIOFRQ1nJGGiPDb9ALh7QxincEPOmGc3c", "type": 301 }, { "source": "/go/cupertino-context-menu-action", "destination": "https://docs.google.com/document/d/1lCuPyAbIzAr0c2KIEZhREC_EnkTKBxNiqP6lGLT-KpU/edit", "type": 301 }, { "source": "/go/cupertino-datepicker-redesign", "destination": "https://docs.google.com/document/d/1Ib5ztLzc19e1Uggz16BFlrJMg1TOdYLyP-WqtTpDltM/edit?usp=sharing&resourcekey=0-11oVmOsTHLD5fqxdAHZqNg", "type": 301 }, { "source": "/go/cupertino-increase-contrast", "destination": "https://docs.google.com/document/d/1kePVlqWvJu5Ph0RL6wgg67F3SATmsJ8QY5N0S1MvaGg/edit#", "type": 301 }, From c8c47ac5fa640f93fd15e9609491996d7aa61043 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Tue, 30 Apr 2024 13:51:04 -0700 Subject: [PATCH 017/109] Tweaking sidenav to clarify types of monetization (#10476) Partly addresses https://github.com/flutter/website/issues/10448 --- src/_data/sidenav.yml | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/_data/sidenav.yml b/src/_data/sidenav.yml index afbe229954..f6da7959f8 100644 --- a/src/_data/sidenav.yml +++ b/src/_data/sidenav.yml @@ -93,17 +93,25 @@ - title: Intro to Flame with Flutter permalink: https://codelabs.developers.google.com/codelabs/flutter-flame-brick-breaker - title: Monetization +# - title: Overview +# permalink: xxx children: - - title: Overview - permalink: https://flutter.dev/monetization - - title: Add in-app purchases - permalink: https://codelabs.developers.google.com/codelabs/flutter-in-app-purchases - - title: Add advertising - permalink: /cookbook/plugins/google-mobile-ads - - title: Add AdMob Ads to your Flutter app - permalink: https://codelabs.developers.google.com/codelabs/admob-ads-in-flutter - - title: Add an AdMob banner and native inline ads to a Flutter app - permalink: https://codelabs.developers.google.com/codelabs/admob-inline-ads-in-flutter + - title: Advertising + children: + - title: Add advertising + permalink: /cookbook/plugins/google-mobile-ads + - title: Add AdMob ads to your Flutter app + permalink: https://codelabs.developers.google.com/codelabs/admob-ads-in-flutter + - title: Add an AdMob banner and native inline ads + permalink: https://codelabs.developers.google.com/codelabs/admob-inline-ads-in-flutter + - title: In-app purchases + children: + - title: Add in-app purchases + permalink: https://codelabs.developers.google.com/codelabs/flutter-in-app-purchases + - title: Payments + children: + - title: Google pay package + permalink: https://pub.dev/packages/pay - title: Maps children: - title: Add maps to your app From 5748cfefbffab884a00f6f40a30d0126e04c3445 Mon Sep 17 00:00:00 2001 From: John McCutchan Date: Wed, 1 May 2024 08:27:46 -0700 Subject: [PATCH 018/109] Update plugin-api-migration.md (#10478) Add a note at the top that this page does not apply to modern Flutter code --- src/content/release/breaking-changes/plugin-api-migration.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/content/release/breaking-changes/plugin-api-migration.md b/src/content/release/breaking-changes/plugin-api-migration.md index e1bb1ae119..865663f15e 100644 --- a/src/content/release/breaking-changes/plugin-api-migration.md +++ b/src/content/release/breaking-changes/plugin-api-migration.md @@ -5,6 +5,10 @@ description: How to update a plugin using the old APIs to support the new APIs. +:::note +New plugins and all plugins that are compatible with Flutter 2 (March 2021) can ignore this page. +::: + :::note You might be directed to this page if the framework detects that your app uses a plugin based on the old Android APIs. From a0a2ec6fd0e18c769a890e2e7ff4136a435ef787 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Thu, 2 May 2024 02:17:21 +0700 Subject: [PATCH 019/109] Avoid include shadowing issues in getting started docs (#10475) --- .../docs/install/compiler/android.md | 11 ++----- src/_includes/docs/install/compiler/xcode.md | 18 +++++------ .../docs/install/devices/android-emulator.md | 7 +---- .../docs/install/devices/android-physical.md | 11 ++----- src/_includes/docs/install/flutter-doctor.md | 18 +++++------ src/_includes/docs/install/flutter-sdk.md | 11 +++---- .../docs/install/flutter/download.md | 26 +++++++--------- src/_includes/docs/install/flutter/vscode.md | 16 +++++----- src/_includes/docs/install/next-steps.md | 30 +++++++++---------- src/_includes/docs/install/reqs/add-web.md | 5 ++-- src/_includes/docs/install/reqs/linux/base.md | 18 +++++------ .../reqs/linux/install-desktop-tools.md | 7 ++--- .../docs/install/reqs/linux/set-path.md | 6 +--- .../docs/install/reqs/linux/software.md | 15 ++++------ .../docs/install/reqs/linux/unset-path.md | 6 ++-- src/_includes/docs/install/reqs/macos/base.md | 16 +++++----- .../docs/install/reqs/macos/set-path.md | 5 +--- .../docs/install/reqs/macos/software.md | 3 +- .../docs/install/reqs/macos/unset-path.md | 4 +-- .../docs/install/reqs/macos/zsh-config.md | 3 +- .../docs/install/reqs/windows/base.md | 12 ++++---- .../docs/install/reqs/windows/set-path.md | 6 ++-- .../docs/install/reqs/windows/software.md | 12 ++++---- .../docs/install/reqs/windows/unset-path.md | 6 ++-- 24 files changed, 109 insertions(+), 163 deletions(-) diff --git a/src/_includes/docs/install/compiler/android.md b/src/_includes/docs/install/compiler/android.md index 021b094388..a1cf670f72 100644 --- a/src/_includes/docs/install/compiler/android.md +++ b/src/_includes/docs/install/compiler/android.md @@ -1,12 +1,7 @@ ## Configure Android development -{% assign devos = include.devos %} -{% assign target = include.target %} -{% assign compiler = include.compiler %} -{% assign attempt-time = include.attempt %} - -{% case devos %} +{% case include.devos %} {% when 'Windows' -%} {% assign terminal='PowerShell' %} {% assign prompt='C:\>' %} @@ -155,13 +150,13 @@ Otherwise, you can skip to the [next section][check-dev].
-{% include docs/install/devices/android-emulator.md devos=devos %} +{% include docs/install/devices/android-emulator.md devos=include.devos %}
-{% include docs/install/devices/android-physical.md devos=devos %} +{% include docs/install/devices/android-physical.md devos=include.devos %}
diff --git a/src/_includes/docs/install/compiler/xcode.md b/src/_includes/docs/install/compiler/xcode.md index 49e6cb8e61..9902302f7d 100644 --- a/src/_includes/docs/install/compiler/xcode.md +++ b/src/_includes/docs/install/compiler/xcode.md @@ -2,15 +2,12 @@ ## Configure iOS development {% assign prompt1='$' %} -{% assign devos = include.devos %} -{% assign target = include.target %} -{% assign attempt = include.attempt %} ### Configure Xcode -{% if attempt=="first" %} +{% if include.attempt=="first" %} -To develop Flutter apps for {{target}}, install Xcode to compile to native bytecode. +To develop Flutter apps for {{include.target}}, install Xcode to compile to native bytecode. 1. To configure the command-line tools to use the installed version of Xcode, run the following commands. @@ -33,7 +30,7 @@ To develop Flutter apps for {{target}}, install Xcode to compile to native bytec This section presumes you have installed and configured Xcode when you installed Flutter for -{%- case target %} +{%- case include.target %} {%- when 'iOS' %} [macOS desktop][macos-install] {%- when 'desktop' %} @@ -48,7 +45,7 @@ installed Flutter for Try to keep to the current version of Xcode. -{% if target=='iOS' %} +{% if include.target=='iOS' %} ### Configure your target iOS device @@ -83,13 +80,14 @@ With Xcode, you can run Flutter apps on an iOS device or on the simulator. {% endif %} -{% if attempt=="first" %} +{% if include.attempt=="first" %} ### Install CocoaPods -If your apps depend on [Flutter plugins][] with native {{target}} code, +If your apps depend on [Flutter plugins][] with native {{include.target}} code, install [CocoaPods][cocoapods]. -This program bundles various dependencies across Flutter and {{target}} code. +This program bundles various dependencies across +Flutter and {{include.target}} code. To install and set up CocoaPods, run the following commands: diff --git a/src/_includes/docs/install/devices/android-emulator.md b/src/_includes/docs/install/devices/android-emulator.md index e393c85f95..151dfd669e 100644 --- a/src/_includes/docs/install/devices/android-emulator.md +++ b/src/_includes/docs/install/devices/android-emulator.md @@ -2,12 +2,7 @@ {% include docs/help-link.md location='android-emulator' section='#android-setup' %} -{% assign devos = include.devos %} -{% assign target = include.target %} -{% assign compiler = include.compiler %} -{% assign attempt = include.attempt %} - -{% case devos %} +{% case include.devos %} {% when 'Windows','Linux' -%} {% assign images = '**x86 Images**' -%} {% when 'macOS' -%} diff --git a/src/_includes/docs/install/devices/android-physical.md b/src/_includes/docs/install/devices/android-physical.md index 904e0b918a..bade78cdf6 100644 --- a/src/_includes/docs/install/devices/android-physical.md +++ b/src/_includes/docs/install/devices/android-physical.md @@ -2,11 +2,6 @@ {% include docs/help-link.md location='android-device' section='#android-setup' %} -{% assign devos = include.devos %} -{% assign target = include.target %} -{% assign compiler = include.compiler %} -{% assign attempt = include.attempt %} - To configure your Flutter app to run on a physical Android device, you need an Android device running {{site.targetmin.android}} or later. @@ -18,18 +13,18 @@ you need an Android device running {{site.targetmin.android}} or later. enable **Wireless debugging** on your device as described in the [Android documentation]({{site.android-dev}}/studio/run/device#wireless). -{%- if devos == 'Windows' %} +{%- if include.devos == 'Windows' %} 1. Install the [Google USB Driver]({{site.android-dev}}/studio/run/win-usb). {% endif %} -1. Plug your device into your {{devos}} computer. +1. Plug your device into your {{include.devos}} computer. If your device prompts you, authorize your computer to access your device. 1. Verify that Flutter recognizes your connected Android device. - {%- if devos == 'Windows' %} + {%- if include.devos == 'Windows' %} In PowerShell, run: diff --git a/src/_includes/docs/install/flutter-doctor.md b/src/_includes/docs/install/flutter-doctor.md index 7fe34b64f6..6c11b9a3a9 100644 --- a/src/_includes/docs/install/flutter-doctor.md +++ b/src/_includes/docs/install/flutter-doctor.md @@ -3,11 +3,9 @@ {% include docs/help-link.md location='win-doctor' %} -{% assign devos = include.devos %} -{% assign target = include.target %} {% assign compiler = include.compiler %} -{% case devos %} +{% case include.devos %} {% when 'Windows' -%} {% assign terminal='PowerShell' %} {% assign prompt='C:\>' %} @@ -18,13 +16,13 @@ {% assign terminal='a shell' %} {% assign prompt='$' %} {% endcase -%} -{% case target %} +{% case include.target %} {% when 'macOS','Windows','Linux' %} -{% assign work-target = target | append: ' desktop' %} +{% assign work-target = include.target | append: ' desktop' %} {% when 'desktop' %} -{% assign work-target = devos | append: ' desktop' %} +{% assign work-target = include.devos | append: ' desktop' %} {% else %} -{% assign work-target = target | append: ' on ' | append: devos %} +{% assign work-target = include.target | append: ' on ' | append: include.devos %} {% endcase %} {% case work-target %} {% when 'macOS desktop','Web on macOS','iOS on macOS' %} @@ -40,7 +38,7 @@ ### Run Flutter doctor The `flutter doctor` command validates that all components of a -complete Flutter development environment for {{devos}}. +complete Flutter development environment for {{include.devos}}. 1. Open {{terminal}}. @@ -51,11 +49,11 @@ complete Flutter development environment for {{devos}}. {{prompt}} flutter doctor ``` -As you chose to develop for {{target}}, +As you chose to develop for {{include.target}}, you do not need _all_ components. If you followed this guide, the result of your command should resemble: -{% include docs/install/flutter-doctor-success.md config=include.config devos=devos -%} +{% include docs/install/flutter-doctor-success.md config=include.config devos=include.devos -%} ### Troubleshoot Flutter doctor issues diff --git a/src/_includes/docs/install/flutter-sdk.md b/src/_includes/docs/install/flutter-sdk.md index d939088c9f..d879f7dcb5 100644 --- a/src/_includes/docs/install/flutter-sdk.md +++ b/src/_includes/docs/install/flutter-sdk.md @@ -1,13 +1,10 @@ -{% assign os=include.os %} -{% assign target = include.target %} -{% assign terminal=include.terminal %} -{% case target %} +{% case include.target %} {% when 'mobile-ios' %} {% assign v-target = 'iOS' %} {% when 'mobile-android','mobile' %} {% assign v-target = 'Android' %} {% else %} - {% assign v-target = target %} + {% assign v-target = include.target %} {% endcase %} ## Install the Flutter SDK @@ -30,13 +27,13 @@ or download and install the Flutter bundle yourself.
-{% include docs/install/flutter/vscode.md os=os terminal=terminal target=v-target %} +{% include docs/install/flutter/vscode.md os=include.os terminal=include.terminal target=v-target %}
-{% include docs/install/flutter/download.md os=os terminal=terminal target=v-target%} +{% include docs/install/flutter/download.md os=include.os terminal=include.terminal target=v-target%}
diff --git a/src/_includes/docs/install/flutter/download.md b/src/_includes/docs/install/flutter/download.md index cd1a002007..ae299df3f7 100644 --- a/src/_includes/docs/install/flutter/download.md +++ b/src/_includes/docs/install/flutter/download.md @@ -1,11 +1,8 @@ -{% assign terminal=include.terminal %} ### Download then install Flutter {:.no_toc} -{% assign os = include.os %} -{% assign osl = os | downcase | replace: "chromeos","linux" %} -{% assign target = include.target %} -{% case os %} +{% assign osl = include.os | downcase | replace: "chromeos","linux" %} +{% case include.os %} {% when 'Windows' -%} {% assign unzip='Expand-Archive .\\' %} {% assign path='C:\\user\\{username}\\dev' %} @@ -57,7 +54,7 @@ then extract the SDK. 1. Download the following installation bundle to get the latest {{site.sdk.channel}} release of the Flutter SDK. - {% if os=='macOS' %} + {% if include.os=='macOS' %} | Intel Processor | Apple Silicon | |---------------------------------------------------------------------|-------------------------------------------------------------------------------------------| @@ -71,9 +68,9 @@ then extract the SDK. For other release channels, and older builds, check out the [SDK archive][]. - The Flutter SDK should download to the {{os}} default download directory: - `{{dirdl}}`. - {% if os=='Windows' %} + The Flutter SDK should download to the {{include.os}} + default download directory: `{{dirdl}}`. + {% if include.os=='Windows' %} If you changed the location of the Downloads directory, replace this path with that path. To find your Downloads directory location, @@ -83,7 +80,7 @@ then extract the SDK. 1. Create a folder where you can install Flutter. Consider creating a directory at {{diroptions}}. - {% if os == "Windows" -%} + {% if include.os == "Windows" -%} {% include docs/install/admonitions/install-paths.md %} {% endif %} @@ -98,12 +95,11 @@ then extract the SDK. [SDK archive]: /release/archive [move-dl]: https://answers.microsoft.com/en-us/windows/forum/all/move-download-folder-to-other-drive-in-windows-10/67d58118-4ccd-473e-a3da-4e79fdb4c878 -{% case os %} +{% case include.os %} {% when 'Windows' %} -{% include docs/install/reqs/windows/set-path.md terminal=terminal target=target %} +{% include docs/install/reqs/windows/set-path.md terminal=terminal target=include.target %} {% when 'macOS' %} -{% include docs/install/reqs/macos/set-path.md terminal=terminal -target=target dir=dirinstall %} +{% include docs/install/reqs/macos/set-path.md terminal=terminal target=include.target dir=dirinstall %} {% else %} -{% include docs/install/reqs/linux/set-path.md terminal=terminal target=target %} +{% include docs/install/reqs/linux/set-path.md terminal=terminal target=include.target %} {% endcase %} diff --git a/src/_includes/docs/install/flutter/vscode.md b/src/_includes/docs/install/flutter/vscode.md index 88a51626ad..05709b7950 100644 --- a/src/_includes/docs/install/flutter/vscode.md +++ b/src/_includes/docs/install/flutter/vscode.md @@ -1,6 +1,4 @@ -{% assign os=include.os %} -{% assign terminal=include.terminal %} -{%- if os=='macOS' -%} +{%- if include.os=='macOS' -%} {% assign special = 'Command' %} {% else %} {% assign special = 'Control' %} @@ -32,8 +30,8 @@ you have installed [Visual Studio Code][] click **Download SDK**. This option sends you the Flutter install page if you have not - installed Git {% if os == "Windows" %}for Windows {% endif %}as directed in - the [development tools prerequisites][]. + installed Git {% if include.os == "Windows" %}for Windows {% endif %}as + directed in the [development tools prerequisites][]. 1. When prompted **Which Flutter template?**, ignore it. Press Esc. @@ -47,7 +45,7 @@ you have installed [Visual Studio Code][] VS Code places you in your user profile to start. Choose a different location. - {% if os == "Windows" -%} + {% if include.os == "Windows" -%} Consider `%USERPROFILE%` or `C:\dev`. {% include docs/install/admonitions/install-paths.md %} @@ -108,7 +106,7 @@ you have installed [Visual Studio Code][] in external terminals? ``` -{% if os=='Windows' %} +{% if include.os=='Windows' %} 1. Click **Add SDK to PATH**. @@ -124,10 +122,10 @@ you have installed [Visual Studio Code][] If you agree, click **OK**. -1. To enable `flutter` in all {{terminal}} windows: +1. To enable `flutter` in all {{include.terminal}} windows: {:type="a"} - 1. Close, then reopen all {{terminal}} windows. + 1. Close, then reopen all {{include.terminal}} windows. 1. Restart VS Code. [development tools prerequisites]: #development-tools diff --git a/src/_includes/docs/install/next-steps.md b/src/_includes/docs/install/next-steps.md index 31433ddc36..d28bc02e6a 100644 --- a/src/_includes/docs/install/next-steps.md +++ b/src/_includes/docs/install/next-steps.md @@ -3,19 +3,17 @@ To learn more about managing your Flutter SDK install, consult the following resources. -{% assign doctor = doctor %} {% assign config = doctor[include.config] %} -{% assign target = include.target | remove: 'mobile-' | downcase %} -{% assign devos = include.devos %} -{% if target == 'desktop' %} - {% assign webtarget = devos | append: '-desktop' | downcase %} - {% assign andtarget = devos | downcase %} - {% assign target = devos | downcase %} -{% elsif target == 'web' %} - {% assign andtarget = 'web-on-' | append: devos | downcase %} +{% assign mod-target = include.target | remove: 'mobile-' | downcase %} +{% if mod-target == 'desktop' %} + {% assign webtarget = include.devos | append: '-desktop' | downcase %} + {% assign andtarget = include.devos | downcase %} + {% assign mod-target = include.devos | downcase %} +{% elsif mod-target == 'web' %} + {% assign andtarget = 'web-on-' | append: include.devos | downcase %} {% else %} - {% assign webtarget = target | append: '-on-' | append: devos | downcase %} - {% assign andtarget = devos | downcase %} + {% assign webtarget = mod-target | append: '-on-' | append: include.devos | downcase %} + {% assign andtarget = include.devos | downcase %} {% endif %} * [Upgrade Flutter][upgrade] @@ -30,21 +28,21 @@ consult the following resources. {%- endcase %} {%- case config.add-simulator %} {%- when 'Y' %} -* [Add iOS simulator or device](/platform-integration/ios/install-ios/install-ios-from-{{target}}) +* [Add iOS simulator or device](/platform-integration/ios/install-ios/install-ios-from-{{mod-target}}) {%- endcase %} {%- case config.add-xcode %} {%- when 'Y' %} -* [Add macOS compilation tools](/platform-integration/macos/install-macos/install-macos-from-{{target}}) +* [Add macOS compilation tools](/platform-integration/macos/install-macos/install-macos-from-{{mod-target}}) {%- endcase %} {%- case config.add-linux-tools %} {%- when 'Y' %} -* [Add Linux compilation tools](/platform-integration/linux/install-linux/install-linux-from-{{target}}) +* [Add Linux compilation tools](/platform-integration/linux/install-linux/install-linux-from-{{mod-target}}) {%- endcase %} {%- case config.add-visual-studio %} {%- when 'Y' %} -* [Add Windows desktop compilation tools](/platform-integration/windows/install-windows/install-windows-from-{{target}}) +* [Add Windows desktop compilation tools](/platform-integration/windows/install-windows/install-windows-from-{{mod-target}}) {%- endcase %} * [Uninstall Flutter][uninstall] [upgrade]: /release/upgrade -[uninstall]: /get-started/uninstall?tab={{devos}} +[uninstall]: /get-started/uninstall?tab={{include.devos}} diff --git a/src/_includes/docs/install/reqs/add-web.md b/src/_includes/docs/install/reqs/add-web.md index b7de330f05..9a0e8259e2 100644 --- a/src/_includes/docs/install/reqs/add-web.md +++ b/src/_includes/docs/install/reqs/add-web.md @@ -1,11 +1,10 @@ -{% assign devos = include.devos %} 1. Allocate a minimum of 1 GB of storage for Google Chrome. Consider allocating 2 GB of storage for an optimal configuration. -1. Download and install the {{devos}} version of [Google Chrome][] +1. Download and install the {{include.devos}} version of [Google Chrome][] to debug JavaScript code for web apps. -{% if devos == 'Linux' %}{% include docs/install/accordions/install-chrome-from-cli.md %}{% endif %} +{% if include.devos == 'Linux' %}{% include docs/install/accordions/install-chrome-from-cli.md %}{% endif %} [Google Chrome]: https://www.google.com/chrome/dr/download/ diff --git a/src/_includes/docs/install/reqs/linux/base.md b/src/_includes/docs/install/reqs/linux/base.md index f953e6dd83..1896407632 100644 --- a/src/_includes/docs/install/reqs/linux/base.md +++ b/src/_includes/docs/install/reqs/linux/base.md @@ -1,17 +1,15 @@ -{% assign os = include.os %} -{% assign target = include.target %} {% include docs/install/admonitions/install-in-order.md %} ## Verify system requirements To install and run Flutter, -your {{os}} environment must meet the following hardware +your {{include.os}} environment must meet the following hardware and software requirements. ### Hardware requirements -Your {{os}} Flutter development environment must meet the following +Your {{include.os}} Flutter development environment must meet the following minimal hardware requirements.
@@ -21,13 +19,13 @@ minimal hardware requirements. | CPU Cores | 4 | 8 | | Memory in GB | 8 | 16 | | Display resolution in pixels | WXGA (1366 x 768) | FHD (1920 x 1080) | -| Free disk space in GB | {% include docs/install/reqs/linux/storage.md target=target %} +| Free disk space in GB | {% include docs/install/reqs/linux/storage.md target=include.target %} {:.table .table-striped}
-{% if os == 'ChromeOS' and target == 'Android' %} +{% if include.os == 'ChromeOS' and include.target == 'Android' %} To discover which hardware devices ChromeOS recommends for Android development, consult the [ChromeOS docs][chromeos-docs]. {% endif %} @@ -36,13 +34,13 @@ consult the [ChromeOS docs][chromeos-docs]. ### Software requirements -To write and compile Flutter code for {{target}}, -you must have the following version of {{os}} and the listed +To write and compile Flutter code for {{include.target}}, +you must have the following version of {{include.os}} and the listed software packages. #### Operating system -{% if os == 'Linux' %} +{% if include.os == 'Linux' %} {%- capture supported-os %} Debian Linux {{site.devmin.linux.debian}} or later and Ubuntu Linux {{site.devmin.linux.ubuntu}} or later @@ -55,7 +53,7 @@ Flutter supports {{supported-os}}. #### Development tools {:.no_toc} -{% include docs/install/reqs/linux/software.md target=target os=os %} +{% include docs/install/reqs/linux/software.md target=include.target os=include.os %} {% include docs/install/reqs/flutter-sdk/flutter-doctor-precedence.md %} diff --git a/src/_includes/docs/install/reqs/linux/install-desktop-tools.md b/src/_includes/docs/install/reqs/linux/install-desktop-tools.md index fae2ff09f7..40ea9cde6f 100644 --- a/src/_includes/docs/install/reqs/linux/install-desktop-tools.md +++ b/src/_includes/docs/install/reqs/linux/install-desktop-tools.md @@ -1,8 +1,5 @@ -{% assign devos = include.devos %} -{% assign target = include.target %} - -1. To develop {{devos}} {{target}} apps, use the following command to install - these packages: +1. To develop {{include.devos}} {{include.target}} apps, use the + following command to install these packages: [`clang`][clang], [`cmake`][cmake], [`ninja-build`][ninjabuild], diff --git a/src/_includes/docs/install/reqs/linux/set-path.md b/src/_includes/docs/install/reqs/linux/set-path.md index b9ff831bb1..124c592d2e 100644 --- a/src/_includes/docs/install/reqs/linux/set-path.md +++ b/src/_includes/docs/install/reqs/linux/set-path.md @@ -1,10 +1,6 @@ -{% assign terminal=include.terminal %} -{% assign target = include.target %} -{% assign dir = include.dir %} - ### Add Flutter to your `PATH` {:.no_toc} -To run Flutter commands in {{terminal}}, +To run Flutter commands in {{include.terminal}}, add Flutter to the `PATH` environment variable. 1. Check which shell starts when you open a new console window. diff --git a/src/_includes/docs/install/reqs/linux/software.md b/src/_includes/docs/install/reqs/linux/software.md index f8e8dc170d..429214a95e 100644 --- a/src/_includes/docs/install/reqs/linux/software.md +++ b/src/_includes/docs/install/reqs/linux/software.md @@ -1,9 +1,6 @@ -{% assign os = include.os %} -{% assign target = include.target %} +To develop Flutter on {{include.os}}: -To develop Flutter on {{os}}: - -{% if os == "ChromeOS" %} +{% if include.os == "ChromeOS" %} 1. Enable [Linux][] on your Chromebook. @@ -29,17 +26,17 @@ To develop Flutter on {{os}}: $ sudo apt-get install -y curl git unzip xz-utils zip libglu1-mesa ``` -{% case target %} +{% case include.target %} {% when 'desktop' -%} -{% include docs/install/reqs/linux/install-desktop-tools.md devos=os %} +{% include docs/install/reqs/linux/install-desktop-tools.md devos=include.os %} {% when 'Android' -%} -1. To develop {{target}} apps: +1. To develop {{include.target}} apps: {:type="a"} - 1. Install the following prequisite packages for Android Studio: + 1. Install the following prerequisite packages for Android Studio: `libc6:i386`, `libncurses5:i386`, `libstdc++6:i386`, `lib32z1`, `libbz2-1.0:i386` ```console diff --git a/src/_includes/docs/install/reqs/linux/unset-path.md b/src/_includes/docs/install/reqs/linux/unset-path.md index f5fb72ef92..96ea8d54c5 100644 --- a/src/_includes/docs/install/reqs/linux/unset-path.md +++ b/src/_includes/docs/install/reqs/linux/unset-path.md @@ -1,8 +1,7 @@ -{% assign terminal=include.terminal %} ### Remove Flutter from your Windows Path variable {:.no_toc} -To remove Flutter commands from {{terminal}}, +To remove Flutter commands from {{include.terminal}}, remove Flutter from the `PATH` environment variable. {% include docs/install/reqs/windows/open-envvars.md %} @@ -22,4 +21,5 @@ remove Flutter from the `PATH` environment variable. 1. Click **OK** three times. 1. To enable these changes, - close and reopen any existing command prompts and {{terminal}} instances. + close and reopen any existing + command prompts and {{include.terminal}} instances. diff --git a/src/_includes/docs/install/reqs/macos/base.md b/src/_includes/docs/install/reqs/macos/base.md index ae70f6668c..6f6ac0c8c6 100644 --- a/src/_includes/docs/install/reqs/macos/base.md +++ b/src/_includes/docs/install/reqs/macos/base.md @@ -1,25 +1,23 @@ -{% assign target = include.target %} -{% case target %} +{% case include.target %} {% when 'mobile-ios' %} {% assign v-target = "iOS" %} {% when 'mobile-android' %} {% assign v-target = "Android" %} {% else %} -{% assign v-target = target %} +{% assign v-target = include.target %} {% endcase %} -{% assign os = include.os %} {% include docs/install/admonitions/install-in-order.md %} ## Verify system requirements To install and run Flutter, -your {{os}} environment must meet the following hardware +your {{include.os}} environment must meet the following hardware and software requirements. ### Hardware requirements -Your {{os}} Flutter development environment must meet the following +Your {{include.os}} Flutter development environment must meet the following minimal hardware requirements.
@@ -29,7 +27,7 @@ minimal hardware requirements. | CPU Cores | 4 | 8 | | Memory in GB | 8 | 16 | | Display resolution in pixels | WXGA (1366 x 768) | FHD (1920 x 1080) | -| Free disk space in GB | {% include docs/install/reqs/macos/storage.md target=target %} +| Free disk space in GB | {% include docs/install/reqs/macos/storage.md target=include.target %} {:.table .table-striped} @@ -45,7 +43,7 @@ install the following packages. Flutter supports macOS {{site.devmin.macos}} or later. This guide presumes your Mac runs the `zsh` as your default shell. -{% include docs/install/reqs/macos/zsh-config.md target=target %} +{% include docs/install/reqs/macos/zsh-config.md target=include.target %} {% include docs/install/reqs/macos/apple-silicon.md %} @@ -53,7 +51,7 @@ This guide presumes your Mac runs the `zsh` as your default shell. Download and install the following packages. -{% include docs/install/reqs/macos/software.md target=target %} +{% include docs/install/reqs/macos/software.md target=include.target %} The developers of the preceding software provide support for those products. To troubleshoot installation issues, consult that product's documentation. diff --git a/src/_includes/docs/install/reqs/macos/set-path.md b/src/_includes/docs/install/reqs/macos/set-path.md index e0ae42f63e..3267379a9c 100644 --- a/src/_includes/docs/install/reqs/macos/set-path.md +++ b/src/_includes/docs/install/reqs/macos/set-path.md @@ -1,10 +1,7 @@ -{% assign terminal=include.terminal %} -{% assign target = include.target %} -{% assign dir = include.dir %} ### Add Flutter to your `PATH` {:.no_toc} -To run Flutter commands in {{terminal}}, +To run Flutter commands in {{include.terminal}}, add Flutter to the `PATH` environment variable. This guide presumes your [Mac runs the latest default shell][zsh-mac], `zsh`. Zsh uses the `.zshenv` file for [environment variables][envvar]. diff --git a/src/_includes/docs/install/reqs/macos/software.md b/src/_includes/docs/install/reqs/macos/software.md index af6d3f92e0..d33ed3d11f 100644 --- a/src/_includes/docs/install/reqs/macos/software.md +++ b/src/_includes/docs/install/reqs/macos/software.md @@ -1,4 +1,3 @@ -{% assign target = include.target %} {% assign xcode = '[Xcode][] ' | append: site.appnow.xcode | append: ' to debug and compile native Swift or ObjectiveC code.' %} {% assign cocoapods = '[CocoaPods][] ' | append: site.appnow.cocoapods | append: ' to compile enable Flutter plugins in your native apps.' %} @@ -16,7 +15,7 @@ type `git version` in your Terminal. If you need to install `git`, type `brew install git`. {% endcapture %} -{% case target %} +{% case include.target %} {% when 'desktop','iOS' %} * {{xcode}} {{git-xcode}} {{git-main}} diff --git a/src/_includes/docs/install/reqs/macos/unset-path.md b/src/_includes/docs/install/reqs/macos/unset-path.md index cf859b842b..992fe95c55 100644 --- a/src/_includes/docs/install/reqs/macos/unset-path.md +++ b/src/_includes/docs/install/reqs/macos/unset-path.md @@ -1,8 +1,6 @@ -{% assign terminal=include.terminal %} - ### Remove Flutter from your macOS PATH {:.no_toc} -To remove Flutter commands from {{terminal}}, +To remove Flutter commands from {{include.terminal}}, remove Flutter to the `PATH` environment variable. This guide presumes your [Mac runs the latest default shell][zsh-mac], `zsh`. Zsh uses the `.zshenv` file for [environment variables][envvar]. diff --git a/src/_includes/docs/install/reqs/macos/zsh-config.md b/src/_includes/docs/install/reqs/macos/zsh-config.md index f9487c0ab3..48ab454951 100644 --- a/src/_includes/docs/install/reqs/macos/zsh-config.md +++ b/src/_includes/docs/install/reqs/macos/zsh-config.md @@ -1,4 +1,3 @@ -{% assign target = include.target %}
To verify your shell configuration, expand this section @@ -17,7 +16,7 @@ Zsh or `zsh` is the default shell for macOS. $ dscl . -read ~/ UserShell ``` - {{terminal}} should print the following as its response. + The command should print the following as its response. ```console UserShell: /bin/zsh diff --git a/src/_includes/docs/install/reqs/windows/base.md b/src/_includes/docs/install/reqs/windows/base.md index ca9296b4f1..a7db453279 100644 --- a/src/_includes/docs/install/reqs/windows/base.md +++ b/src/_includes/docs/install/reqs/windows/base.md @@ -1,17 +1,15 @@ -{% assign target = include.target %} -{% assign os = include.os %} {% include docs/install/admonitions/install-in-order.md %} ## Verify system requirements To install and run Flutter, -your {{os}} environment must meet the following hardware +your {{include.os}} environment must meet the following hardware and software requirements. ### Hardware requirements -Your {{os}} Flutter development environment must meet the following +Your {{include.os}} Flutter development environment must meet the following minimal hardware requirements.
@@ -21,7 +19,7 @@ minimal hardware requirements. | x86_64 CPU Cores | 4 | 8 | | Memory in GB | 8 | 16 | | Display resolution in pixels | WXGA (1366 x 768) | FHD (1920 x 1080) | -| Free disk space in GB | {% include docs/install/reqs/windows/storage.md target=target %} +| Free disk space in GB | {% include docs/install/reqs/windows/storage.md target=include.target %} {:.table .table-striped} @@ -29,7 +27,7 @@ minimal hardware requirements. ### Software requirements -To write and compile Flutter code for {{target}}, +To write and compile Flutter code for {{include.target}}, you must have the following version of Windows and the listed software packages. @@ -44,7 +42,7 @@ These versions of Windows should include the required Download and install the Windows version of the following packages: * [Git for Windows][] {{site.appmin.git_win}} or later to manage source code. -{% include docs/install/reqs/windows/software.md target=target %} +{% include docs/install/reqs/windows/software.md target=include.target %} The developers of the preceding software provide support for those products. To troubleshoot installation issues, consult that product's documentation. diff --git a/src/_includes/docs/install/reqs/windows/set-path.md b/src/_includes/docs/install/reqs/windows/set-path.md index 37f3688d03..1063aceaf9 100644 --- a/src/_includes/docs/install/reqs/windows/set-path.md +++ b/src/_includes/docs/install/reqs/windows/set-path.md @@ -1,10 +1,9 @@ -{% assign terminal=include.terminal %} ### Update your Windows PATH variable {:.no_toc} {% include docs/help-link.md location='win-path' section='#unable-to-find-the-flutter-command' %} -To run Flutter commands in {{terminal}}, +To run Flutter commands in {{include.terminal}}, add Flutter to the `PATH` environment variable. This section presumes that you installed the Flutter SDK in `%USERPROFILE%\dev\flutter`. @@ -44,4 +43,5 @@ This section presumes that you installed the Flutter SDK in 1. Click **OK** three times. 1. To enable these changes, - close and reopen any existing command prompts and {{terminal}} instances. + close and reopen any existing + command prompts and {{include.terminal}} instances. diff --git a/src/_includes/docs/install/reqs/windows/software.md b/src/_includes/docs/install/reqs/windows/software.md index 4ba7ab7c3c..28a5b3bf10 100644 --- a/src/_includes/docs/install/reqs/windows/software.md +++ b/src/_includes/docs/install/reqs/windows/software.md @@ -1,29 +1,29 @@ {% if include.target == 'Android' %} -{% assign target = 'mobile' %} +{% assign mod-target = 'mobile' %} {% else %} -{% assign target = include.target %} +{% assign mod-target = include.target %} {% endif %} -{% if target == 'desktop' -%} +{% if mod-target == 'desktop' -%} * [Visual Studio 2022][] to debug and compile native C++ Windows code. Make sure to install the **Desktop development with C++** workload. This enables building Windows app including all of its default components. **Visual Studio** is an IDE separate from **[Visual Studio _Code_][]**. -{% elsif target == 'mobile' -%} +{% elsif mod-target == 'mobile' -%} * [Android Studio][] {{site.appmin.android_studio}} or later to debug and compile Java or Kotlin code for Android. Flutter requires the full version of Android Studio. -{% elsif target == 'web' -%} +{% elsif mod-target == 'web' -%} * [Google Chrome][] to debug JavaScript code for web apps. {% else -%} -* [Visual Studio 2022][] with the the **Desktop development with C++** workload +* [Visual Studio 2022][] with the **Desktop development with C++** workload or [Build Tools for Visual Studio 2022][]. This enables building Windows app including all of its default components. **Visual Studio** is an IDE separate from **[Visual Studio _Code_][]**. diff --git a/src/_includes/docs/install/reqs/windows/unset-path.md b/src/_includes/docs/install/reqs/windows/unset-path.md index a6d4c6221b..d6f47784dc 100644 --- a/src/_includes/docs/install/reqs/windows/unset-path.md +++ b/src/_includes/docs/install/reqs/windows/unset-path.md @@ -1,8 +1,7 @@ -{% assign terminal=include.terminal %} ### Remove Flutter from your Windows Path variable {:.no_toc} -To remove Flutter commands from {{terminal}}, +To remove Flutter commands from {{include.terminal}}, remove Flutter to the `PATH` environment variable. {% include docs/install/reqs/windows/open-envvars.md %} @@ -22,4 +21,5 @@ remove Flutter to the `PATH` environment variable. 1. Click **OK** three times. 1. To enable these changes, - close and reopen any existing command prompts and {{terminal}} instances. + close and reopen any existing + command prompts and {{include.terminal}} instances. From bbbd8d2befb53b5a521d1f9c1c99fe22e822f5f1 Mon Sep 17 00:00:00 2001 From: Anthony Sansone Date: Wed, 1 May 2024 14:59:56 -0500 Subject: [PATCH 020/109] Fix formatting error (#10481) Corrects small formatting error --- src/_includes/docs/install/devices/ios-physical.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/_includes/docs/install/devices/ios-physical.md b/src/_includes/docs/install/devices/ios-physical.md index 1e0ab1ffd5..23fef3652c 100644 --- a/src/_includes/docs/install/devices/ios-physical.md +++ b/src/_includes/docs/install/devices/ios-physical.md @@ -80,7 +80,6 @@ Follow the Xcode signing flow to provision your project. 1. Sign in to Xcode with your Apple ID. - {: type="a"} 1. Go to **Xcode** > **Settings...** 1. Click **Accounts**. @@ -124,7 +123,6 @@ Follow the Xcode signing flow to provision your project. After you select a team, Xcode performs the following tasks: - {: type="a"} 1. Creates and downloads a Development Certificate 1. Registers your device with your account, 1. Creates and downloads a provisioning profile if needed @@ -203,7 +201,8 @@ Enabling certificates varies in different versions of iOS. 1. When the dialog displays, tap **Trust**.
-
{% comment %} End: Tab panes. {% endcomment -%} + +{% comment %} End: Tab panes. {% endcomment %} If prompted, enter your Mac password into the **codesign wants to access key...** dialog and tap **Always Allow**. From 211a66ec30b4dc64b1ab7970201818dd48f6b037 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson <43759233+kenzieschmoll@users.noreply.github.com> Date: Wed, 1 May 2024 13:05:52 -0700 Subject: [PATCH 021/109] Fix instructions for building the flutter website (#10483) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ _Issues fixed by this PR (if any):_ ## Presubmit checklist - [ ] 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. --- README.md | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 048096d2a8..9253ac9228 100644 --- a/README.md +++ b/README.md @@ -188,11 +188,23 @@ following the instructions in [Get the prerequisites](#get-the-prerequisites). dart pub get ``` -3. Install [`pnpm`][] using your preferred [installation method][pnpm-install]. - `pnpm` is an alternative, efficient package manager for npm packages. - If you already have `pnpm`, verify you have the latest stable version. - We recommend using [`corepack`][] to install and manage `pnpm` versions, - since it is bundled with most installations of Node. +3. Install `pnpm`, an alternative, efficient package manager for + npm packages. If you already have `pnpm`, verify you have the + latest stable version. + + ```console + node --version + ``` + + If you do not already have `pnpm` installed, we recommend + using [`corepack`][] to install and manage `pnpm` versions, + since `corepack` is bundled with most installations of + Node. If you installed `node` using Homebrew, you'll need + to install corepack separately: + + ```console + brew install corepack + ``` If you haven't used `corepack` before, you'll need to first enable it with `corepack enable`. @@ -200,10 +212,13 @@ following the instructions in [Get the prerequisites](#get-the-prerequisites). root directory of the repository, run `corepack install`: ```console - corepack enable + corepack enable; corepack install ``` + To install [`pnpm`][] without using `corepack`, you + can use your preferred [installation method][pnpm-install]. + 4. Once you have `pnpm` installed and setup, fetch the site's npm dependencies using `pnpm install`. We highly recommend you use `pnpm`, but you can also use `npm`. From e8e3cc8ae5c5407a8baa13a784358c4392ad72f4 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson <43759233+kenzieschmoll@users.noreply.github.com> Date: Wed, 1 May 2024 13:06:48 -0700 Subject: [PATCH 022/109] Add release notes for DevTools 2.35.0 (#10485) --- .../images-2.35.0/json_viewer_copy.png | Bin 0 -> 48414 bytes .../images-2.35.0/network_recording.png | Bin 0 -> 31272 bytes .../images-2.35.0/profiler_recording.png | Bin 0 -> 31384 bytes .../release-notes/release-notes-2.35.0-src.md | 59 ++++++++++++++++++ .../release-notes/release-notes-2.35.0.md | 7 +++ 5 files changed, 66 insertions(+) create mode 100644 src/content/tools/devtools/release-notes/images-2.35.0/json_viewer_copy.png create mode 100644 src/content/tools/devtools/release-notes/images-2.35.0/network_recording.png create mode 100644 src/content/tools/devtools/release-notes/images-2.35.0/profiler_recording.png create mode 100644 src/content/tools/devtools/release-notes/release-notes-2.35.0-src.md create mode 100644 src/content/tools/devtools/release-notes/release-notes-2.35.0.md diff --git a/src/content/tools/devtools/release-notes/images-2.35.0/json_viewer_copy.png b/src/content/tools/devtools/release-notes/images-2.35.0/json_viewer_copy.png new file mode 100644 index 0000000000000000000000000000000000000000..235e493834322d689346f817adff6600c1eb191b GIT binary patch literal 48414 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 literal 0 HcmV?d00001 diff --git a/src/content/tools/devtools/release-notes/images-2.35.0/network_recording.png b/src/content/tools/devtools/release-notes/images-2.35.0/network_recording.png new file mode 100644 index 0000000000000000000000000000000000000000..22a2f36326843f6e468f7459498688cf0578467a GIT binary patch literal 31272 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∈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 X!nXTvM^yn--2+iUDS_hmTA%(8S<@sM literal 0 HcmV?d00001 diff --git a/src/content/tools/devtools/release-notes/images-2.35.0/profiler_recording.png b/src/content/tools/devtools/release-notes/images-2.35.0/profiler_recording.png new file mode 100644 index 0000000000000000000000000000000000000000..32cf0a31c3871762f2dbd1a1782d6037a07706ed GIT binary patch literal 31384 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 Date: Wed, 1 May 2024 18:27:18 -0500 Subject: [PATCH 023/109] Clarified integration test intro (#10433) Refactors page to clarify which files are being referenced in particular sections. Fixes #10416 --------- Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> Co-authored-by: Brett Morgan --- .../integration_test/app_test.dart | 6 +- .../integration/introduction/lib/main.dart | 19 +- .../testing/integration/introduction.md | 353 ++++++++++++------ src/content/testing/testing-plugins.md | 2 +- 4 files changed, 255 insertions(+), 125 deletions(-) diff --git a/examples/cookbook/testing/integration/introduction/integration_test/app_test.dart b/examples/cookbook/testing/integration/introduction/integration_test/app_test.dart index ab2defad65..44d0313f9b 100644 --- a/examples/cookbook/testing/integration/introduction/integration_test/app_test.dart +++ b/examples/cookbook/testing/integration/introduction/integration_test/app_test.dart @@ -1,4 +1,4 @@ -// #docregion IntegrationTest +// #docregion integration-test import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; @@ -17,7 +17,7 @@ void main() { expect(find.text('0'), findsOneWidget); // Finds the floating action button to tap on. - final fab = find.byKey(const Key('increment')); + final fab = find.byKey(const ValueKey('increment')); // Emulate a tap on the floating action button. await tester.tap(fab); @@ -30,4 +30,4 @@ void main() { }); }); } -// #enddocregion IntegrationTest +// #enddocregion integration-test diff --git a/examples/cookbook/testing/integration/introduction/lib/main.dart b/examples/cookbook/testing/integration/introduction/lib/main.dart index 973eabdad7..839057487e 100644 --- a/examples/cookbook/testing/integration/introduction/lib/main.dart +++ b/examples/cookbook/testing/integration/introduction/lib/main.dart @@ -1,15 +1,21 @@ import 'package:flutter/material.dart'; -void main() => runApp(const MyApp()); +void main() { + runApp(const MyApp()); +} class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { - return const MaterialApp( - title: 'Counter App', - home: MyHomePage(title: 'Counter App Home Page'), + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), + useMaterial3: true, + ), + home: const MyHomePage(title: 'Flutter Demo Home Page'), ); } } @@ -36,6 +42,7 @@ class _MyHomePageState extends State { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( + backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Text(widget.title), ), body: Center( @@ -53,9 +60,9 @@ class _MyHomePageState extends State { ), ), floatingActionButton: FloatingActionButton( - // Provide a Key to this button. This allows finding this + // Provide a ValueKey to this button. This allows finding this // specific button inside the test suite, and tapping it. - key: const Key('increment'), + key: const ValueKey('increment'), onPressed: _incrementCounter, tooltip: 'Increment', child: const Icon(Icons.add), diff --git a/src/content/cookbook/testing/integration/introduction.md b/src/content/cookbook/testing/integration/introduction.md index fc0929be76..9c8d0100c1 100644 --- a/src/content/cookbook/testing/integration/introduction.md +++ b/src/content/cookbook/testing/integration/introduction.md @@ -27,27 +27,61 @@ This recipe uses the following steps: 4. Write the integration test. 5. Run the integration test. -## 1. Create an app to test +## Create a new app to test -First, create an app for testing. In this example, -test the counter app produced by the `flutter create` -command. This app allows a user to tap on a button -to increase a counter. +Integration testing requires an app to test. +This example uses the built-in **Counter App** example +that Flutter produces when you run the `flutter create` command. +The counter app allows a user to tap on a button to increase a counter. + +1. To create an instance of the built-in Flutter app, + run the following command in your terminal: + + ```console + $ flutter create counter_app + ``` + +1. Change into the `counter_app` directory. + +1. Open `lib/main.dart` in your preferred IDE. + +1. Add a `key` parameter to the `floatingActionButton()` widget + with an instance of a `Key` class with a string value of `increment`. + + ```dart + floatingActionButton: FloatingActionButton( + [!key: const ValueKey('increment'),!] + onPressed: _incrementCounter, + tooltip: 'Increment', + child: const Icon(Icons.add), + ), + ``` + +1. Save your `lib/main.dart` file. + +After these changes, +the `lib/main.dart` file should resemble the following code. -```dart +```dart title="lib/main.dart" import 'package:flutter/material.dart'; -void main() => runApp(const MyApp()); +void main() { + runApp(const MyApp()); +} class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { - return const MaterialApp( - title: 'Counter App', - home: MyHomePage(title: 'Counter App Home Page'), + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), + useMaterial3: true, + ), + home: const MyHomePage(title: 'Flutter Demo Home Page'), ); } } @@ -74,6 +108,7 @@ class _MyHomePageState extends State { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( + backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Text(widget.title), ), body: Center( @@ -91,9 +126,9 @@ class _MyHomePageState extends State { ), ), floatingActionButton: FloatingActionButton( - // Provide a Key to this button. This allows finding this + // Provide a ValueKey to this button. This allows finding this // specific button inside the test suite, and tapping it. - key: const Key('increment'), + key: const ValueKey('increment'), onPressed: _incrementCounter, tooltip: 'Increment', child: const Icon(Icons.add), @@ -103,39 +138,55 @@ class _MyHomePageState extends State { } ``` -## 2. Add the `integration_test` dependency +## Add the `integration_test` dependency -Run following command to add `integration_test` and `flutter_test` packages as `dev_dependencies` using `sdk: flutter`. +You need to add the testing packages to your new app. -```sh -$ flutter pub add 'dev:flutter_test:{"sdk":"flutter"}' 'dev:integration_test:{"sdk":"flutter"}' +To add `integration_test` and `flutter_test` packages as +`dev_dependencies` using `sdk: flutter`, run following command. + +```console +$ flutter pub add 'dev:integration_test:{"sdk":"flutter"}' ``` Output ```console -"flutter_test" is already in "dev_dependencies". Will try to update the constraint. -Resolving dependencies... - collection 1.17.2 (1.18.0 available) -+ file 6.1.4 (7.0.0 available) -# ...output has been shortened -+ webdriver 3.0.2 -Changed 9 dependencies! +Building flutter tool... +Resolving dependencies... +Got dependencies. +Resolving dependencies... ++ file 7.0.0 ++ flutter_driver 0.0.0 from sdk flutter ++ fuchsia_remote_debug_protocol 0.0.0 from sdk flutter ++ integration_test 0.0.0 from sdk flutter +... + test_api 0.6.1 (0.7.1 available) + vm_service 13.0.0 (14.2.1 available) ++ webdriver 3.0.3 +Changed 8 dependencies! +7 packages have newer versions incompatible with dependency constraints. +Try `flutter pub outdated` for more information. ``` -Updated pubsec -```yaml -# pubspec.yaml + +Updated `pubspec.yaml` file + +```yaml title="pubspec.yaml" # ... dev_dependencies: # ... added depencies flutter_test: sdk: flutter - integration_test: - sdk: flutter + flutter_lints: ^3.0.0 + [!integration_test:!] + [!sdk: flutter!] # ... ``` -## 3. Create the test files +## Create the integration test files -Create a new directory, `integration_test`, with an empty `app_test.dart` file: +1. Create a new directory named `integration_test`. +1. Add empty file named `app_test.dart` in that directory. + +The resulting directory tree should resemble the following: ```plaintext counter_app/ @@ -145,76 +196,97 @@ counter_app/ app_test.dart ``` -## 4. Write the integration test +## Write the integration test -Now you can write tests. This involves three steps: +1. Open your `integration_test/app_test.dart` file in your preferred IDE. - 1. Initialize `IntegrationTestWidgetsFlutterBinding`, a singleton service that - executes tests on a physical device. - 2. Interact and tests widgets using the `WidgetTester` class. - 3. Test the important scenarios. +1. Copy the following code and paste it into your + `integration_test/app_test.dart` file. + The last import should point to the `main.dart` file + of your `counter_app`. + (This `import` points to the example app called `introduction`.) - -```dart -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:integration_test/integration_test.dart'; -import 'package:introduction/main.dart'; + + ```dart title="integration_test/app_test.dart" + import 'package:flutter/material.dart'; + import 'package:flutter_test/flutter_test.dart'; + import 'package:integration_test/integration_test.dart'; + import 'package:counter_app/main.dart'; -void main() { - IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - group('end-to-end test', () { - testWidgets('tap on the floating action button, verify counter', - (tester) async { - // Load app widget. - await tester.pumpWidget(const MyApp()); + group('end-to-end test', () { + testWidgets('tap on the floating action button, verify counter', + (tester) async { + // Load app widget. + await tester.pumpWidget(const MyApp()); - // Verify the counter starts at 0. - expect(find.text('0'), findsOneWidget); + // Verify the counter starts at 0. + expect(find.text('0'), findsOneWidget); - // Finds the floating action button to tap on. - final fab = find.byKey(const Key('increment')); + // Finds the floating action button to tap on. + final fab = find.byKey(const ValueKey('increment')); - // Emulate a tap on the floating action button. - await tester.tap(fab); + // Emulate a tap on the floating action button. + await tester.tap(fab); - // Trigger a frame. - await tester.pumpAndSettle(); + // Trigger a frame. + await tester.pumpAndSettle(); - // Verify the counter increments by 1. - expect(find.text('1'), findsOneWidget); - }); - }); -} -``` + // Verify the counter increments by 1. + expect(find.text('1'), findsOneWidget); + }); + }); + } + ``` -## 5. Run the integration test +This example goes through three steps: -The process of running the integration tests varies depending on the platform -you are testing against. You can test against a mobile platform or the web. +1. Initialize `IntegrationTestWidgetsFlutterBinding`. + This singleton service executes tests on a physical device. -### 5a. Mobile +2. Interact and test widgets using the `WidgetTester` class. -To test on a real iOS / Android device, first connect the device and run the -following command from the root of the project: +3. Test the important scenarios. -```console -$ flutter test integration_test/app_test.dart -``` +## Run integration tests -Or, you can specify the directory to run all integration tests: +The integration tests that run vary depending on the platform on which you test. +You can test against a mobile platform or the web. -```console -$ flutter test integration_test -``` - -This command runs the app and integration tests on the target device. For more -information, see the [Integration testing][] page. +### Test on a mobile device + +To test on a real iOS or Android device + +1. Connect the device. + +1. Run the following command from the root of the project. + + ```console + $ flutter test integration_test/app_test.dart + ``` + + The result should resemble the following output: + + ```console + $ flutter test integration_test/app_test.dart + 00:04 +0: loading /path/to/counter_app/integration_test/app_test.dart + 00:15 +0: loading /path/to/counter_app/integration_test/app_test.dart + 00:18 +0: loading /path/to/counter_app/integration_test/app_test.dart 2,387ms + Xcode build done. 13.5s + 00:21 +1: All tests passed! + ``` + +1. Verify that the test removed the Counter App when it finished. + If not, subsequent tests fail. If needed, press on the app and choose + **Remove App** from the context menu. + +To learn more, consult the [Integration testing][] page. --- -### 5b. Web +### Test in a web browser {% comment %} TODO(ryjohn): Add back after other WebDriver versions are supported: @@ -224,55 +296,106 @@ To test for web, determine which browser you want to test against and download the corresponding web driver: - * Chrome: [Download ChromeDriver][] - * Firefox: [Download GeckoDriver][] - * Safari: Safari can only be tested on a Mac; - the SafariDriver is already installed on Mac machines. - * Edge [Download EdgeDriver][] +* Chrome: Download [ChromeDriver][] +* Firefox: [Download GeckoDriver][] +* Safari: Safari can only be tested on a Mac; + the SafariDriver is already installed on Mac machines. +* Edge [Download EdgeDriver][] {% endcomment -%} -To get started testing in a web browser, [Download ChromeDriver][]. +To test in a web browser, perform the following steps. -Next, create a new directory named `test_driver` containing a new file -named `integration_test.dart`: +1. Install [ChromeDriver][] into the directory of your choice. - -```dart -import 'package:integration_test/integration_test_driver.dart'; + ```console + $ npx @puppeteer/browsers install chromedriver@stable + ``` -Future main() => integrationDriver(); -``` + To simplify the install, this command uses the + [`@puppeteer/browsers`][puppeteer] Node library. -Launch `chromedriver` as follows: + [puppeteer]: https://www.npmjs.com/package/@puppeteer/browsers -```console -$ chromedriver --port=4444 -``` +1. Add the path to ChromeDriver to your `$PATH` environment variable. -From the root of the project, run the following command: +1. Verify the ChromeDriver install succeeded. -```console -$ flutter drive \ - --driver=test_driver/integration_test.dart \ - --target=integration_test/app_test.dart \ - -d chrome -``` + ```console + $ chromedriver --version + ChromeDriver 124.0.6367.60 (8771130bd84f76d855ae42fbe02752b03e352f17-refs/branch-heads/6367@{#798}) + ``` -For a headless testing experience, you can also run `flutter drive` -with `web-server` as the target device identifier as follows: +1. In your `counter_app` project directory, + create a new directory named `test_driver`. -```console -flutter drive \ - --driver=test_driver/integration_test.dart \ - --target=integration_test/app_test.dart \ - -d web-server -``` + ```console + $ mkdir test_driver + ``` + +1. In this directory, create a new file named `integration_test.dart`. + +1. Copy the following code and paste it into your `integration_test.dart` file. + + + ```dart title="test_driver/integration_test.dart" + import 'package:integration_test/integration_test_driver.dart'; + + Future main() => integrationDriver(); + ``` + +1. Launch `chromedriver` as follows: + + ```console + $ chromedriver --port=4444 + ``` + +1. From the root of the project, run the following command: + + ```console + $ flutter drive \ + --driver=test_driver/integration_test.dart \ + --target=integration_test/app_test.dart \ + -d chrome + ``` + + The response should resemble the following output: + + ```console + Resolving dependencies... + leak_tracker 10.0.0 (10.0.5 available) + leak_tracker_flutter_testing 2.0.1 (3.0.5 available) + leak_tracker_testing 2.0.1 (3.0.1 available) + material_color_utilities 0.8.0 (0.11.1 available) + meta 1.11.0 (1.14.0 available) + test_api 0.6.1 (0.7.1 available) + vm_service 13.0.0 (14.2.1 available) + Got dependencies! + 7 packages have newer versions incompatible with dependency constraints. + Try `flutter pub outdated` for more information. + Launching integration_test/app_test.dart on Chrome in debug mode... + Waiting for connection from debug service on Chrome... 10.9s + This app is linked to the debug service: ws://127.0.0.1:51523/3lofIjIdmbs=/ws + Debug service listening on ws://127.0.0.1:51523/3lofIjIdmbs=/ws + 00:00 +0: end-to-end test tap on the floating action button, verify counter + 00:01 +1: (tearDownAll) + 00:01 +2: All tests passed! + All tests passed. + Application finished. + ``` + + To run this as a headless test, run `flutter drive` + with `-d web-server` option: + + ```console + $ flutter drive \ + --driver=test_driver/integration_test.dart \ + --target=integration_test/app_test.dart \ + -d web-server + ``` -[Download ChromeDriver]: https://googlechromelabs.github.io/chrome-for-testing/ +[ChromeDriver]: https://googlechromelabs.github.io/chrome-for-testing/ [Download EdgeDriver]: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ [Download GeckoDriver]: {{site.github}}/mozilla/geckodriver/releases [flutter_driver]: {{site.api}}/flutter/flutter_driver/flutter_driver-library.html [integration_test]: {{site.repo.flutter}}/tree/main/packages/integration_test [Integration testing]: /testing/integration-tests -[`SerializableFinders`]: {{site.api}}/flutter/flutter_driver/CommonFinders-class.html -[`ValueKey`]: {{site.api}}/flutter/foundation/ValueKey-class.html diff --git a/src/content/testing/testing-plugins.md b/src/content/testing/testing-plugins.md index 2ba918046d..ed302098d0 100644 --- a/src/content/testing/testing-plugins.md +++ b/src/content/testing/testing-plugins.md @@ -112,7 +112,7 @@ For information on running this type of test, check out the [integration test documentation][]. The commands must be run in the `example` directory. -[integration test documentation]: /cookbook/testing/integration/introduction#5-run-the-integration-test +[integration test documentation]: /cookbook/testing/integration/introduction#run-integration-tests ### Native unit tests From e3ea65829370dad60866530ab6cf8808af46658d Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Wed, 1 May 2024 20:02:14 -0700 Subject: [PATCH 024/109] Adding landing pages for different kinds of monetization (#10486) More partial fix for https://github.com/flutter/website/issues/10448 The idea is that the marketing pages can link to these single landing pages. I will add AI closer to the release. cc @RedBrogdon --- src/_data/sidenav.yml | 8 +++-- src/content/assets/images/docs/add-ads.png | Bin 0 -> 63079 bytes .../images/docs/add-in-app-purchases.png | Bin 0 -> 36801 bytes .../assets/images/docs/add-payments.png | Bin 0 -> 186700 bytes src/content/resources/ads-overview.md | 28 ++++++++++++++++++ .../resources/architectural-overview.md | 11 +++---- .../resources/in-app-purchases-overview.md | 18 +++++++++++ src/content/resources/payments-overview.md | 18 +++++++++++ 8 files changed, 76 insertions(+), 7 deletions(-) create mode 100644 src/content/assets/images/docs/add-ads.png create mode 100644 src/content/assets/images/docs/add-in-app-purchases.png create mode 100644 src/content/assets/images/docs/add-payments.png create mode 100644 src/content/resources/ads-overview.md create mode 100644 src/content/resources/in-app-purchases-overview.md create mode 100644 src/content/resources/payments-overview.md diff --git a/src/_data/sidenav.yml b/src/_data/sidenav.yml index f6da7959f8..dd5e9c5bc2 100644 --- a/src/_data/sidenav.yml +++ b/src/_data/sidenav.yml @@ -93,11 +93,11 @@ - title: Intro to Flame with Flutter permalink: https://codelabs.developers.google.com/codelabs/flutter-flame-brick-breaker - title: Monetization -# - title: Overview -# permalink: xxx children: - title: Advertising children: + - title: Ads overview + permalink: /resources/ads-overview - title: Add advertising permalink: /cookbook/plugins/google-mobile-ads - title: Add AdMob ads to your Flutter app @@ -106,10 +106,14 @@ permalink: https://codelabs.developers.google.com/codelabs/admob-inline-ads-in-flutter - title: In-app purchases children: + - title: In-app purchases overview + permalink: /resources/in-app-purchases-overview - title: Add in-app purchases permalink: https://codelabs.developers.google.com/codelabs/flutter-in-app-purchases - title: Payments children: + - title: Payments overview + permalink: /resources/payments-overview - title: Google pay package permalink: https://pub.dev/packages/pay - title: Maps diff --git a/src/content/assets/images/docs/add-ads.png b/src/content/assets/images/docs/add-ads.png new file mode 100644 index 0000000000000000000000000000000000000000..8573d21a0e4c01dbb49072f228314bc9283cec2d GIT binary patch literal 63079 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 literal 0 HcmV?d00001 diff --git a/src/content/assets/images/docs/add-in-app-purchases.png b/src/content/assets/images/docs/add-in-app-purchases.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f9b4d5bce60dbc349b48df034851271da6ee26 GIT binary patch literal 36801 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 EKWBR|*Z=?k literal 0 HcmV?d00001 diff --git a/src/content/assets/images/docs/add-payments.png b/src/content/assets/images/docs/add-payments.png new file mode 100644 index 0000000000000000000000000000000000000000..2b829e7a688d35d12b1c6c3800ea9d1376f89642 GIT binary patch literal 186700 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 M~q8K~L{lfDYQJrPGRx_a-S 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�?B1@zLnwC17U=GVThPCVUOL3P=F<}&P`C$>fC6%TS59VBFKU#F1zocl; zxU4?iiX5L*ExkQh@cikIOav;{eqTE*6uWe{4AB#hdqz5HGT(1VZQKSkA0DtA;;fk! zT-x^5_Den6N*Mf{(&5lB*%Do?UKk77yUo*s%N*kcwhzWT{CD|V2oukEJ{3F~hHy1$ z=gST$KT=c$R@1*vzS9BHS^?5a}KW5KTx?JGT$n_{RKyr~PKVd(fiYlOW(AV1=hdz;Z z-r?23&~p8aUjcSU`0Ib>-zq#b3trZ}tRCbs7w1wvY-D{*Zp|S@VfbGbv@DV`M}d!? zBMF)V3>{!2%UjQF_!Vt$Oqy0euqucm-jV1KaHcD~QPb>N`GmSL;1PLz(4Mm>;W5DQ zb1iU4#x!6gwPh*(Ahbg5vx4Qssfb4@V?65@NskD|hF!%bP z&|oyGMrjUmJ2fjkED`i88ZW=XnOubay_XNrEHphJtU^beOJ3~X(QPL*CbK>k}U!TeqxS!wQct22~3uiZK+lXlzGZ+Wkd=ECYO#zUWerXEF z)oOPQv`2XD(f7I)C0nFN_H|6tggHbpT-jCTPoJ~HiUUV{yseZQ@CQ7OCCq*$SnvpA zN-?v_%e_2d21rSatw{xykWsoSD8VHyeP(V~f>}axUmmBv z1Fe))ak7}@s89HJGe?YYd)cP(Tkblra81F-zpna!OFqPAr5seLBfX(mb&_%K0fO^> zf8HXs<=rKYvXY-JwL@?=Ci{O%8g)~ z6CbdnT<7LQqI-`Ys8x1@BMV=IjLR7+d>_DQ!|S`K%1{h@HO&TTgg z1OsWpLF`hRmUO8it@6RLN9`{+3e z8}|-8^P}zIei0uM!H92qPJqR~B3%GL_fr&zF#e1~Gm}E3s*drU-pfE+**}OSk%MvY zy01=Ot@*7*VzqW(+T&=UHneRqsrmHR#*vnZ=J-PcHc<0v%X+*z_mvxDr%L?a;YmBL z1~!qgE9yl`7g@`&zx(BYMZs(Y>N*Hl*Zwk~+V^A&lu{{5KH|7E=ytK|&V^Fj?P+^x zAqqefPJ>*z;D0}%=P-z!UppYxV@gY&PL9;mCpwojecRhHa_G_ z6kXU{0@?;3(Oa<&v($>4sweI}EHq^L%NddRUj-1FWKfG1>2g=AVZ+FvA z7mhwH9h1d?NM&PL5Xw}5~{Nq2V-anJC7-+MpZkHBzd?|s%@@vOC;m0_y7U35`gms_cPEw(~kXElq;C+`H^=M*=FU8DWHHFgcamk@)?7>Nnx{vkma@rSQC=dwqr+T2O6*>+O zb;y(#?H(2DBQ=%7~YNpcEj7l&e_EB>Bsjv4FbD(njErJpENC_Qh`cc6gca zuTGnz6koOD*SxRn5X;i`ng4arttjNj*NOY?Ae&pH=bOFDGenoAkneSaQAs#?LnyG1B8uim z1qz%<_6cdnFCq-vavb|fGAL5!`{)km($5OZ{=r=uRTK7iOcuJb+=gcw?Ukj{J4Lkq z-6=~wdjZdPUCp9w*q%LRtM(yk2JxVB@c$;2MzI_@ZG=3hKd3EisJD_CI1SV9J(T#} z;!;B+sGquldV%XXza#2(s^0BHrY2fw8!-I^_4*_(KPvVEzLvKZ65?z4sHm%3!oM{q zdla0Jc2%A^i=!TW_>-wqr;tH)A4iDe@|Q{Pi;<>;25Y$+DX8|2tMfhA0!{;Tb32-{ z#1n4dK-)#3Y4x$XrT+4{t;Gi445*SOyyhLOs*C3nyZ`Zv#W297I>S3)`qKwn(f@o` zEqA;R6HbI(5E(EvA3V~VLf5p!*edM(p#NZwz+yGfqck487UUGOufv)&+>TdOM|I|f zH)sxD-Bei42KPG3RxRrMt&a_D<%X6VG)PNDD}g9;dFXSUW&vY0mWYj?sD*cP5`oIP1|eDi|*zjXQFFGM*VPTA@nF zAk;i`IWddo`?+MB=akesx!GCIQ{uHr6!KvpCR^7(`_84C?D(fy_GjwK=Tp~g0q=$4 z!e_oaGS9H(^p;R#oS`2D#8}ynhhI>0>vaQFQ`z)^ZWoUU?8-DwTf9h-dRcLAunv6e z=&jWTf#Gb0>0C?KK0%m=bxrO;KX?*%2|`9}oIF!P@{0)05;9MwRQi1H8LjtstIDy` zV~K^s*M52KfOD)Z6nQ{Z<*vq6!9*O$7xp99)RD>^dKmH%4x@6>1rbY~c+r zou01sKJ{R-2miBcWu;s8xmj}PzsSBR?0ovy=`$-uBD7=g75Bwu*`S2XB8Ww|_0>?| ztKan|I<%)Ws%LEd=HVI4gQvNPqzj{8YCur~ZG$a=v5S_6PHm(q2trXaowC=)AF8&r zHaK{Gt!{Tc@sY#a4B$or?YcGRPGVsxP0}>_Rso0h9e3NJO}o>&9jek`!%Cli=40sQ zU}bxYA*T?BSgpsa6!IEP`SH&*X2JtLIyOQG(Ow-KgZJRR^2A?~+%>JF4&EFJwqtkx z0ykSiU$@qr^?Bj2^iZ}8CQ(<4aLFJ4+KT37YGm)ba5K*BQ@>wCGY+`ZF%$lBg%A3Q zxgA%U_JPzfqU;>k#6$h))ddX2M}KXAf(U1_VcXn9CQfHUBs(9~AB9f(y*|nTden$I zTU980RlIh;>~#|Ie6j-lhih;VfZMTC{W|Of0hoXx)>$z~<$=`U`!99Py3vQ8?T0>{ z7J(OL`d4I##QYBZNa(`_#o>~i84fXeDd+)C!WjAY9xHyRm_Wlp8S%rwHAQoR0E(-e zHp|UB>~It;^x$J$QMvb*R9r;^hVeBsf<>HT850A7d>KNhiaEGtXzD@}C5lB0)>o)% zx>q-WMs1^j4Pbk*0Zbcog>?=|J_dN`ns{@3?x#j04}Td%W&FpIHGal*pe?w}ht=E02hC-)7Psc2^%ygG8Rdx7L-n{~qKM+V$W( zI@Lb@S!;<@ubJ!Vv7g(4Q&d%@F3m;!tN0PDF}s{<&#Vg{P8p5#rec2poRW;r8XwYnxDo^!zH0b<@%czXj||8CGv^eU!Au@n3G2(>BOkX=D=aDm zwq1goE9~A?=;u-LIvLy)RM`Kfcly<&wR6KE5E=man&21?P#h=-n9_6C6|+{u0q!;-EfCo;S>r*reWeB{lV&|V+}qJCIz zkVB!}HZE|$;#EeDCG-SU%nrISxUxPC>pZJCm4GhT8nWG36X(lru5&g~o=?i>Va}gR?F~U&!v#a2LX%E5dl>V38Ohi|U7H3g{mJ4MBexncacCB}Z2I?@`|+cA=7S`ro_a{oQ!94^C ztVg6~dou0;F;Xf=BPp)qe(-^MF6O!0>9rp%O#`IF$o^(Iy_Kvk)g9 zx}(;*gH{3(KMC<`b>Riuz%zY#_lzM$&Y^+Fr2Z5Uh~{wXo_OIo{M!{C%OK)!<;P!+ zI5A$XLS#{k_KF`%V>Em-K5Oc)Xg&VB)lMv56t|LZaPff%U85r)Uv$Q`u7GCM;^uRCK1dFJ_tC&a=A(8 zjvGXI!6N*5c6tQY`FMkDU(4*bsjb!TpOw$g)4bo_NZNL+vQmeT+v%pBm*1Rt#n_T? zlDd%|%2;dZeC;V%cSDcA`9>TZ$zpIxtAgFL-0szmq%vb3FpIg9;rxkU2jEsB<|K6z z+W$w}*puvY~+*6O?T zkA1nLxrFg@$fBYy=<=!1XX&k`B(L403kXy@G;vn1Ij8PE*g zCu-6-(x!zjxa;(5|DyLELj{cqSvEhrrQO2j-B&z3Na1@Nib$n=VYQ3BDuvk#HD8%O zMDWG`m}IRpsYg1-Gc-xZsd?_du9LlpB|uXykC~A8C3h=1*H~-dQgT$~)C_D`rzC&v zarVSk9IA)y%3m}-=;jNUBSa)AfT6+x6^w3TVhCQ zlK0s(Geq{bZ6+@JirF5hvdhc6v_Ub<59+Xuj`ZPoE!kVO>UJfdC7KJf;d)KET|?N2&Hu5x;YP zP>Cz!#*H;~F4-}6E_Ji`^az!}Gfzk$Nh`@Qo)-&#t5ugqvqxN2BY@iXF8d@*a&WKi zhlPAPVHD8`)CrsOLwyNO$zF@n9H;{BcfXZNcv7f2|JTiFrv2`Oe&LUu>wlwfx{H#ryeZ7gv6su`}RwL7DT%0fz775wPKqM0X zzV7lS!ogqRuksK%bu$GMuS9B@S#3G(uW^}vHnj!+qOlQ7iPC8K#~?`}v8}wO$%+cZ zf7LDf*JgqhoYG%6%jvfqrI*T^6;_sHDa8W^JHk@T@r*WG#hJFYWcL3!bIceV=nM+I zdl7#a{>bY7*-x)Ss$*+@fjDc7Vz87(5kghjw_w-#cpa}qgbg)au$a_s11d)3u^jOw zD=T~+lFZuiJaUeF5A}aVSAFPgEm$=4TFqH4kzp^aLOzl0@iERvlXV^G*Ygrq zXWaH22kPmJ&;KqeY^5LGpJ5b!R0|RwYd=+Isq}orANR7>T(?a8I?T$p<;r#+YwElp(mqy}^q zV)>ZBkjAhEQ6yhF5M|}E8eM6Mw>!0#mUFFZnVWf{AXpx^%8@!FdyqBF{sy7GI)*`Zv zY}DRci3FVH`24t6T6HR87kDV<4*7y5zVG*0?%{RB4b=Y-R*XYD*`{vbTYgg9jHT)~iu?i0 z$~$9#LQXYkSi@lY64ye7*UVf(glOs;Z`D{pMt)veb?>0xPtjuZt`& zzKm2%v{!R)XlLmBtZRofBIQsYVaQS~Alz}NgTZ#mU(N3m`}L~=CoR3%>>khDgWyGr z1+TwMm{Pjw8LPjj|1>P;yRa-wL8o2F5d+XOV(xJ?Nhx;H5w#fFikup{2Z*0P&RgQ>Iw zE~5pp$F51OldUmTgc{|K8p(=^L|Z1)%}fhTm?0$ok-j(73jfmh&QX&E^n4gQr*qgS zN&X}M*Zu*Rnm4av=1QwGv=3upB;ZY_VUbcEwVsi}+_(r{$7##NTm@pBaR;7s2+zKt zWru^?lg2YP%r?U&Jr_uU-YYDJuIcC_l|srJm)}lUt1!8=*N+wjtLZ*t}_(<6fK3B2AEU&H2*7B|4X>M%a z^t6+zdA22M%cpn;U8Z9iOdUHr|0A!Z;4T|dZNhCI%{L(%m71hth2FfJBDdfWV5?PU}`M&E}LCQja+thnxj zu5vnG@SEORd&?p;sz33^iAB>jskZHCw7pL7qPUO0>2YrvXAAPZaAj<>hlMw8RHVUg zmbj)rT02*3eW!7guuu~fNbQYc89aMP>9T zK~fI28WluVZV)m+37R3{rIFhqsx^`L|>XN_tIYML^~XV z(bm(>VJ>^y{q8;^5#UE8<-rCbF#-uB?z(#Uql@o->r9}^EdM=M(WZ&xP}-wK=ZON* zk=O%oG(h+FL;TK^we|!Gm#>C}S&3!ev|u@rwGtr|76^JP`PK?=eYPy_XwX_NtE*26 zK%U08h`NuE2Ujf{JQ`I@>$uMDM44!$YxsRho;IBv2{66-ePGXQFVxxVkpZbBNV@J} zq|NXF+q^AWB5B*obLh3b=@D3cgc_K#PXOFFD9}m3-y)?&Dx=XC@aNKQci{)?Q;af4 zd=+)!Rk-t<3ISrH*ydMcDO4uO1UEhFF;Y9Fa3k@_n?B}ma`FJmaZszQMv4IY?{9|8 zl5d*UU9fFuKk(+oYTsSzVU6xQnsJc?in|1r2Ui?JWm{{5xg5;ODy*i9O%p1%7m0mX zld<8+ob@66rP=07=KTH*95U7lSKolPK^uWR;D(H1|I@J2@{F$vWg;WkbqD-GOMZYe zH0j#&YIeQFSOzow6V-I2vg8v?mqOlWF`jg^dgP(3)uR zEAiNW$x_@7|5@k6Lf)kQQnc@s`ccO;I2urnNKNkCU!R1q(&_`Yrx^xU{QcFKt!dz~)%7N9 z5m%j}5)K5RaqW#~fKNgPLRp#NLHMK#PZ@mfAmdjFp!RhuG}HXS!X`a59R>sao9qZv z^Z*gk$Cx8<381* z@FhiM(R&TJ`D9usCy{YCO`>${k~QHWsf3a(6`fD_qJLyRWyzA9oM9l#>0}*WrLe6K zva7sL5@@XK{N7!KK4cJ7(byNXbBR^-Ie1-$? zP=ywZ8wuE;h(4Ed19XZcF^BpsCY_?U#FCf8M=X(6MlA#BDRm{-Y0t0TZms?D+pxXu zU(l;!cOJ~$am;kJ+8W|3d?JO`8S$?$twh3a8(Y{^Nr{kTL^~`Sz)(q6Sf%$=5Speb zVe`;%nDafZZX24u{Skp`$e|q{8O9(26Tr@1z)UKQP#}jm(!uUX8+|iWz_IA8)r4pD zjX$s zAgg-b((wqr8GWjNbK=dfLB*v)0xWyL0s?*17E#dXj=P=~2CaXR9GkUp0!y{qFu3#0 ze{g@I<7BKhVNgGu#}cKU8owcx+fhCaH8A!uOhVOgEe! zcpJV_JDyTDN&6Hi%YF(Q0q;nUXV;;whGlC#4D$ddrWkevs~EhzX2aP;ZZpiEyO#=< zzy7v&UQ;PQg-gMQSE2n;c#9W6Fy;dusA=UmRsN!1P_Y+I3H@iIhsat*x$7g5m5e%# zi*MRd_oe6_0;(?0XD@%BnflZVjr_ACq%5F_`+f@^^8D6LgVMBgsIqiJu;?6&_0BUp zgcWY2rMluLly=GSt;n`Q^ZNVwbA7CTlfzOXCHs8@=$?N%k~NaUO4<`nhz=ZYZ|&C~ z+Tlntfw4y2Ra-DrWnQHd0g_VbAf7K@rcWfA9t*@OG>$P(d8r0jawJC=7=z2}=1>6p zz;+^z<~lv(LF1Tvmwfz=JaW%ujA`ki?>t%kzUnvicu`XJk-8a6{%#un(5+Q%bn-8pGagdB%PLh)E9D??jqhm)086LAf-{vX`$)LM} zS38Ufo;|K532eX$ePE2!T(7m8U4CRJW3dy9rVoK4|Ixf5i>#r2-S&lEYqfy-TdDC!vixhbBDKiFIVy(_{bEPg%|HFelZs! zBpfaC??J28%}D;jqUFf!m-%hEK0m>Hc%rEBleU@QpWUB!sM~d%I=G^$C3>HsB_WSq z_)i}J|8hnr0>%m;GZ*-$>Nm}ShWjT?%wz{K&bH-;ZQd~F8qX`b(nKtRQOu8pKSi7F zaXH`jw6 zqLd45;R}b=UJ@v`#utwClGPh7RD;Qfdh~8GAP~OPJD}|TZRpHtO9u52TWm}R?!Btd zKIhJfBVQ$l38hPnV}5hM^*8kas!>a=--I9^zHa<^ara4WG?FX}AV%S^5rG9YAA0im z*>W-LRF(oa-Jl~^$Y9pC;d>Z z{Q57!T`7T@WaLn`ugVEXMMDT`n?-LC<4>@W-q2CXEcDb&R3vEJaHl3#ft14oMfFqA z_tKa`t)r_yp}H!VqA(%z=Vx{=YTEK_+j5YUEWaNp5z+oPg}beMeWS8Wc<;yTl^N#z zDcZ5w_bYWzT$Y^EnRFAN4X#6Az|pJSHeI_MRgcFWK@{i?eGFq?HlW}@%XNuqNz9O`~DFdt+xf`mS4n6)8o_8OqrP~9sCL`b+xS2xLI5~3;^1&u6!c*; zvs!Mh_;MExU~Ry^bG^Vx-SjboLRF*+%n?iPUAD|kw?j9TlSrg zZWA)v+@6#Qz=Um!-{8;X(Ar<+=GLsRx>%H6jh+{HdAa4wQO&KiP)1Z&XhR_W9uTBP zeJ55J9+nrZtjnc4fK^;zrPJ|~Q1jPcl{Q#evY5O9qB+2@Gj{cH1Fkl$nkBtvl(mD- z$IT{#;%Kcl9BN^`S$QydgZO(=n&*mvYx4pvy?3&Zw2)C2!W zEg8);0EPxz{|kr)3aYWfTql!k_-b4jL4wa#<5r#DX0YY)JqZ}00yZQXl}}*rfd^6m zc-+-L%+pI)^-Lo}%Xxqo4>Nv8I6!}xx%B7m_$jX%$T0Y1M%Nx2#0J(Qm?#wqb*dSR zqT6b=5pbe0SK@5f(A0dU037>19hT3m@@d0^K#gUPaU*OUmN|`~< z9i~U$(y9H^Sm)j9{{H?+Akc@K_NfqYT|KcFl=J<7)5Kzi752ssC4o0a3a10F7va(k zOQY4C7L^%DO=fwA2pP5aW13f{4vj>W(k?yskaV1$0HrJ7OLlS$;$BXhkoe}tXAU7R*#3XLDZR2&j}5Ai;jj!$oF&Z-}f(4 zlo<>R)x{#KAxladF#tuo^h6loa{~Cg3NKM9$qeNyjzfqB5wIW^W@_Sx>o#uAHFTQPI<8K)Gu?6UCpehm@Fe9W3vZVr`IlL)i z(Y`1|X2R35+VPJS5rvsH>CMx~nJwN8YGNG?euz*m`+`cqnze5Q#^y|MEL#N*eq5+i$(fxcHnk-uydRj+;XX zjetA^i9wtD+T)d5UlD-NLj~o55;Jk9cBK;P??O4Ugnlorn6~R zWEbYV0PX)6Cbk7&q3lEszqZr-itR0>y#{;lCzMA_ziwS&4BkaI_As zR=+{>PFT_1ZTN9PS;tbvbMF5Y_O)n0&3v_rL|ufu6XF4JJ9;?m5j=t zt!aw6sd>IS`gA10fru!gDz~HkkZ|I~<$alIAZTC^)9h;h`{TR+&S&4Ql>bAD|tpInE17~arkF18XmGP{Q{NG4T+ zo%(%w`i{lAlKJ>_NDstrW)l;YK2%QlnXaT1da4;tHC>X@5)8%5Or28)nI>l)?_E)ki}y z_aHgVuFu)`f4e~8(Q^8U!;<5zS^h3UujET2BwNDMWJS`0L)rus3&P^wBEF^MYyWKN z^r_Ver$2$lHWE|j@8EDmW?kX^TyaB7i|w%{qwRDdqp~UrQMJMqUV9su-rM>H@5)-(ZC4I3QN*z#F(sO09*0jXG5M6qq&Lxao|s{Q$N? z!eKPmDsi7rZ&B=lFZguGN=HH7Y6_weI$20F-*=PSK@A*qU^*JVZ>2LP`aEL}1twU4F>}1QE*6|qJ zhy1bgR~;-9EN>Y&Zd}j}wrQx)g%0dL>Y765Vfxl+4wl0P_N9XaG*j?iOB>K__22h< zby{I+4oS?gy9p&}8M@GY>ocov28uoe=AR+D{Q^#6M0Xz5!POtYWo2dVjuL;V!Ed3p zy6Z+)AGiF`vFgf=y0#EKRCYQ_Bp9ONngxi0Ce55$%s%^2&Ts~6U8zDny_L10Op4*T zBbeOj(LT-*K_30Mk>f@UvB*W5+(bhtfq@|8@@Yz?vx z?%@Z}b*&Xzp3671+W+@*UW~tVmo$suUVdU#eOFoSjUfM&@KuuE7vMzDL$j|O8Q&-My08G7y&yvbf}y!`z|n2@dG)hVQZRW7d6a_Yg;l;OR+nflM~$k@N|u4Ru#g~E|oDDT=3GbB}e zvqi1`)_+**W8{!SV5OMK{x&7T5SO`_XKk4}C2Nr#D_PQ~le+K)TvTStrNQnhZX6ml zSci*UQ$Jq&2W6PzK1t)jD@~4XVCwx@(MjXJev(>D{WMtQ%2ly!pR@iR{7C)U+|)L< z{x#`m*1vaFQ2;+Q%(cLW*>HZmn%77QK~urr3CRbuzDKh|;vkK1$-ZCbMz5#n9XrBZ zCVk6reRd^~G2O?Vvl2BjfQ~y24uUlr1ZnC|xUM&wZ<em-&JbfeaH@|oi;9+Ot<|GN=AI-Q{Q~S0@P-3{A--6(YxHiZI=5Si zU(sc~+Mb3*?ih_T*&I8D_Ul_($o4J!?>&KDCK3e9S{fM|jGb&hVOTe@vpxwwx^~yS zb-r~ZJPHTiI+`o~n}Z0WqU;Dw1nu!56KPXg>omODO5dwe_hI@}`SoujaV1>GwVn-cE)Zen7idFmgd07 zE5k>Kq2h6<*_A3=nB@ckL~e#ng+KVvBHRqV^>Ruc@fGcqlwG)!qM77%_^@l!E=i%u ztI~4)%bd%OSemgXAOh#drv#g+RWRzWFsYj1 zv-hucuExNhO>JR;S$EYm%;QZ%l&Vucxgj8t*b0=z2oI6Zjb}%|=Md;zk7P!$^ql^= zOoWD@-4h->$)CWoa6w-Z=AsDVbd$%T3z8*BI;&W%8D+yfb_b7(-Q5x%-+);CfR<&N z$?I@KT>;mBDRxBU13eWI)J7VQ_XL^rQ4Tl@jv+nIPZgu#f%mui1lzI^w7Hr zQh5Z_LDgpc_>B^@Mg(8eMa`mFj1+oS0dFU%6UgBu{-bTBMKO_Hr;y|d)?z}~m=L`9 z4URd-$H$+<;lJ*a93i1z)=a4=ZmVgbCy;g=+zsBRb&~bC2c4|H8u{;a^RZ(OVdo9B znW~t4?mNl-Yu70uRrmbYkn#)p&Ty?5Bt;y~$v*KRGsOy_(+XBc-pgXYq1giFTqVa= zt#HKYPI%H z{uit-p}`!~g#hs$7qZ7fMpFY&I=F^*N3v^Ef@aSHYbvILbd4%h43y^D-;;=|2jMfg-=_^Y1TQ*?VZ>T6_u)VmhF7N01-#fDd+Gv7| zWBycxT~gOL9WAwL9@8h{CUCgP*t`W}tmWe3zXR(N_&2Mb1U0s8vC4wj5w!bvWoI~? zMChCtf}@7glW5m)S|(<*&i{m&M$r2Bv+BgBOM!*OYl9?-U^eQ(#4pAe~UMM-gW z{}5Q6Z)poqK^_IUSf;kMvs8UPCR9p!>!h$9>1YxrYSYQx$hUIt^XNb)Eqn&fF|7Lg zb>8Pec=Zk9>bVVSonF15BLGa*?GSA=4N55ap%nsQjIaw|6l7(nM~>FRk_(my=Jnl6 z^+hM%o64nNf_CQHIm**=@Fb#LrGKVw2-^)A_F=uNPHQ~~3r{l5R<0a&BB{7)h zxm2(>i(*(EkctP%ilLMoESz#lN9urnEMP0`SSP=7F8^82USek&%{Nxt7IW1OiIZZ{ zF?EfuhiOrupc4Rkx*ZN>f2Q}X7a+bR+{+Cqh-Yu`51E+ElR?zZGtGt=0=fPO+;Dn@ zb$|59@9oCof5L5iZhNV(b+{AC3?)1I1f*x)3XD*3$`yLA4-BD6MxzlY<71L>q$hgr z{y4|m!{-Vu#a+Pz{izAJ=t;hor_H+AZ1geCE+Gv0S`A^l3Yd1K7AtZ50fN;kwG_v{B;5qt-9no6E)?0AczJ@ zF`Rk}zeZwqrDZ(>QEWb50M2tV%YCn7@cQH#zPQl7GqItVk~RpV+voc|n>iEv4YOY2 z0sYP3C?9b(mO^n_)L-hQN-Y7Wfk@Imdk(o_(+wqadH>vwieV|{xKE|5T2k3$DXjXl zEL^ku*>;r-R<*M6Ns~T5!aPiXidMkMVL^nULg##O4B$o9H*%(@Big}m6&f?lh#hH;#hhs62Z%}iePg!auWsx zpfueEI1Amn?Hsoa-MUz9jT$o3J;*gGH+9)-!S(w)I6x&?L8?E>0^&-nW4!| zLP$lbm&w{xl&V2|BosW5Z>E5G6OtjP-R^%pj9QayQ?h z;3PJ_3sV{P6R*eN$q{HxA%&}wH$+iWh{Ig~XMVKs-h6bn-kyjIMwhul$`tqiyqa>8vtf%sEp^{#e zsm~$5yy}ahA+`6}$dyomAQ9`wIq$rSUGydE|DxZgxcgqgTGnIAdjsronK zJ~uws%2=32g4m;#;rcJ(^zY-)GzzFe>3+O0I1csVZ{G#V-i1zvl|JNQf;<5u};?|D*dUcCs?mFe(tST|}zudTOju2n63ElB9Uu({+2-(UB6N%mo zUfTgN#Jd>KfO-h*cnCcjxh{0pN>Y)6%*_7@E(pa9V@1AwEu9cw=aj-@o=v9xhe@&Q zW70DcZ!=k7a?l|9!W3bdG<5u7Zi79U^KW0}t_?1Tc5*|u@AHYzG<4TLA_H9Sxef9A zERP)~f!lHlzBGf{q z7AYZCD(iJ$4Ry1t1z(gB>2_~c8cOdm9Oxqj2T^8Gzo1EqxW}i`Pjo7H&Ft$`GO-ks ziXL_!;u~v4d@sj7cQNM?{R+#+8ZwS}9g*Jgl#nfaKp7`=YqSq%L5osum2kgoMff&P zEg@jc#wkMNQMV&yf>dEu%hPbse8QVc5Bgs=DPF3!q;!ns8dtesR9!Wi#Z~W6Vt17X z4B|BQFc#4XGX5r-n9wbQ#B8)XrRBiQ)F=u8(=I4h4>8|;5@C}IW<3ile#};M!tc;Y^RWD*Avp)Ll@l7E7tubR&{V(}T0uSi! z_kP%m*uKo}KmE%M0qwyeRfmw|8DfvG7!E^sh;f218Ex9#=OV$|p$*_pq~HQ~0;M<91S7FD zuD8Y+%b%| z9~{kgy{h8pLxM#QUJh`;<6>dHb$8X8mXPJvQ9I-yfPem4>C>@qrXEh5NE_^LuNJ<<^{?BW!Y4N2|9n*|@yj+H5z%db-Bjw( z9CVB;30rQyWD8Jw?LuHna?m?FBB}I7^1iu7u3QEMTi?DtMR;^&J zjw9C`2ci3h|Ha9^XQcY}@&CZCSfMbcGvG{->sCq+7BN9|hGIvj0KfbJk=fn3Ee)^V zZo=TpX`uwIX~EP5hYcCRUC*98$!7tiQ~jHk;pOAnMv8!o*&WZOC%BO?DjzJE@oS&+ ze*~!Pfixhg8^z1vDE8-&95ojN?O}rG4TY|i^uD1sQweVg#0?VI%zNqP!yFl;#@!Vq z;LXLrQfeGF0t9zDe~#ku^l+(9j(-`AN_Jh_*FbY%+0oD#|KfZytWkg}68JWGyrEgL zYj4hLM3)l=1h?Ix{fmBt27kCgcr8X8A*+{%5#H|20@Z+rd@rY>i-Nznd!(HmRB!y; z*Q^wY9F4>`e&@Fz&7(@3NmH;>BV^q4eXvF2{uokNv1WtGi zm^lgjidAf;lBR9)uGBb_eAsbI$HrB* zIW067R)+cGpXspQaRGfl-BtKa=8x=-H~>jCP+k6irFia|l-9@^Y<&Fpv$4=G>@$Wc zW8k?#6V!8fqjx|880!PU%gu=ulj<@+UN%I<{9cvJD1<%}r3+-}jX25>$*Vg@gLvNn zokd|U_hQb`2*K^D(a&ZJ8AvguaDX&^`?YQ=quOI;zpAYnhy5OMGg}sbW=;XZ7 zA2^`|fXWzHV4fIVnTXyP_1ukdr~Otw)VyBm-PAYGw%#vFS+{*Y4u|KL@UY|_ z)*x1=7+7c*CKexvUY1zVlfxX(lW91S9ZdK%>F4X_cS})*2qdWN=ML&mlCE?ofSc(Q z@Z|PqCEhjfohDEoR@kG5jSbX2tnNNvgFWTj?C7hk?P|E=0B(;D70r8aHgGuIP``1Y z%B&aXMMqRAXx#*E?UO$NV;oU>bykJCyzCw@wb&m}90_k-Pu^KQG3JgO zh$|XUUbc0HgmpYGw1wRL}n{ zQth;(6@>>*GaUk4;@<%`RKAyfkFV#@+&QcPhxi5H;b0-jXeHx;t25j<^1GCREdkWm ze+no$W5hq2J29|hr8vM~u!4yI{_S+H$*!Ma!LLh5yBbFgBoN#5Q8>eMs1D z!=B-JP}~dsR!XyRfc?w#0w)$^ytnFegEI%GEc%z^sggPb^*#>}S~M#6+o8~AQUY&c zJfJ}2P~k-zjD`)~v{CY)ZAxF3tTfR!5d&c`V*jBhP#)%V49igHF894FSK_r-R zn?K#Mj_ta6zIsGEwV8wS-Xh2C2?FfQVAi7=u;5Wlus&Ve#kh4R7I{dPt3LJ#wD|@m zXlMUBdP2V|M&YC8K>W}>VK0k@1-$4h zfN%j=tOx#$rw|-DnvVBmRwXJGPdDH`yb={Bt9*zd=l$V=j{~PL1{*XkRh3!;e7yOr zarqA8^44z7=uqT9t?62kowFFYU8#Xct~lNYt*29dSLnA7`YQq0p(kVdmHyAC`zt`f zZIw09@9^^f{UUA1&-;d*Wg;J_dGG*(K;gSH(CJU8l-7m&xK(?^3J5`zXhq1$Ezl`H z@$mCtwIb#-yBcHzBDBXv4_u4X?irY_J8kqe6}cxqClo-8Mf^H3+v>ZfI=7zi$6q=@0Xy|1|1_tp?lxz48GM8`<`h5<9xT!w>_Y4 zAM2l&_kX3-SJ>q+c{DtZd~VCBxBEp*#kI@xrX)8c76Mfs=iIl;;>(HTf(H){7aX4c zt~L7IuWxA+bnpI4|65;iRuxoP=!SvTt@Ciog~zwnU7Dmc}iAE0_|J8ICEHA%2y%88(S2wtC1qRm@jwI>X&ik%4|4mO_S*4i%w&wA7 zp0>GMO5QF@qF(Z^`l726+bw&g(4AfV`n`t9ZHmcA~DG6(jDYbma)VmizklE;u8 zeoRzbRZ48#p2jxr85@iW7hV+A^HGRn@KaEeTQH|#7jvuKeIIX@9x<=LjQagcj4#j3 zdp`TUef~31iIlgQyYr?L)$lbue6p&IBi3MNPX*%~_xJwO=C}UhoD+L)Vp#J2okFj@ z=Q5~GI>z{5k666^(m8Q$p5_e)%ZiV9)kMVcCM@ENV>rCx{_m`Pn$g?~r!no(9MHw0Qs9?;6t?V0~i zx%Fr4k}Y!Cr`>im?7zgr5HroH!B^MCk3TqHsIO}m_x131`evt#Y`-nPKU+@DLYtT2 z!2SY}LrQ0t&v|~jYFoXFY};zh|F=%O?KqaU@+ptAiu!gIEh&99{gp{i+`q&B{LWp}d;X-%rQEtGS$&`Rb{5?Pk(djN>n3SU zxckRY`fdnQgx>2 + Learn about the resources available for adding + ads to your Flutter app. +--- + +![adding ads](/assets/images/docs/add-ads.png) + +The Google Mobile Ads SDK for Flutter works with +both AdMob and Ad Manager. It supports a variety +of ads formats such as app open, banner, interstitial, +native, rewarded, and rewarded interstitial formats, +and features like mediation. + +Easily integrate Google AdMob and Ad Manager ads +directly in your Flutter App + +The the following resources can help get you started: + +* [Add ads to your mobile Flutter app or game][] (cookbook recipe) +* [Adding AdMob ads to a Flutter app][] (codelab) +* [Adding an AdMob banner and native inline ads to a Flutter app][] (codelab) + + +[Add ads to your mobile Flutter app or game]: /cookbook/plugins/google-mobile-ads +[Adding AdMob ads to a Flutter app]: {{site.codelabs}}/codelabs/admob-ads-in-flutter#0 +[Adding an AdMob banner and native inline ads to a Flutter app]: {{site.codelabs}}/codelabs/admob-inline-ads-in-flutter#0 diff --git a/src/content/resources/architectural-overview.md b/src/content/resources/architectural-overview.md index 5311d51c4e..feb2f0951a 100644 --- a/src/content/resources/architectural-overview.md +++ b/src/content/resources/architectural-overview.md @@ -69,7 +69,7 @@ services like rendering surfaces, accessibility, and input; and manages the message event loop. The embedder is written in a language that is appropriate for the platform: currently Java and C++ for Android, Objective-C/Objective-C++ for iOS and macOS, and C++ for Windows and Linux. Using the embedder, Flutter -code can be integrated into an existing application as a module, or the code may +code can be integrated into an existing application as a module, or the code might be the entire content of the application. Flutter includes a number of embedders for common target platforms, but [other embedders also exist](https://hover.build/blog/one-year-in/). @@ -516,8 +516,9 @@ onto a screen. ### Flutter's rendering model -You may be wondering: if Flutter is a cross-platform framework, then how can it -offer comparable performance to single-platform frameworks? +You might be wondering: if Flutter is a cross-platform framework, +then how can it offer comparable performance to +single-platform frameworks? It's useful to start by thinking about how traditional Android apps work. When drawing, @@ -608,8 +609,8 @@ if (color != null) Correspondingly, the `Image` and `Text` widgets might insert child widgets such as `RawImage` and `RichText` during the build process. The eventual widget -hierarchy may therefore be deeper than what the code represents, as in this -case2: +hierarchy might therefore be deeper than what the code represents, +as in this case2: ![Render pipeline sequencing diagram](/assets/images/docs/arch-overview/widgets.png){:width="35%"} diff --git a/src/content/resources/in-app-purchases-overview.md b/src/content/resources/in-app-purchases-overview.md new file mode 100644 index 0000000000..231015d722 --- /dev/null +++ b/src/content/resources/in-app-purchases-overview.md @@ -0,0 +1,18 @@ +--- +title: In-app purchases overview +description: > + Learn about the resources available for adding + in-app purchases to your Flutter app. +--- + +![adding ads](/assets/images/docs/add-in-app-purchases.png) + +Build in-app revenue with Google Play and App Store +support for Flutter + +The the following resources can help get you started: + +* [Add in-app purchases to your Flutter app][] (codelab) + + +[Add in-app purchases to your Flutter app]: {{site.codelabs}}/codelabs/flutter-in-app-purchases#0 diff --git a/src/content/resources/payments-overview.md b/src/content/resources/payments-overview.md new file mode 100644 index 0000000000..4d3da473c3 --- /dev/null +++ b/src/content/resources/payments-overview.md @@ -0,0 +1,18 @@ +--- +title: Payments overview +description: > + Learn about the resources available for Google pay + and other services to your Flutter app. +--- + +![adding ads](/assets/images/docs/add-payments.png) + +Seamlessly accept payments with multiple providers +in your Flutter app + +The the following resource can help to get you started: + +* [Add ads to your mobile Flutter app or game][] (cookbook recipe) + + +[Add ads to your mobile Flutter app or game]: /cookbook/plugins/google-mobile-ads From 90c90d94b3730edd57357503be513d3e1c446515 Mon Sep 17 00:00:00 2001 From: Kenzie Davisson <43759233+kenzieschmoll@users.noreply.github.com> Date: Wed, 1 May 2024 20:02:55 -0700 Subject: [PATCH 025/109] Add missing entry to the devtools_releases.yml file (#10487) FYI I added a CLI tool to the Devtools repo for prepping DevTools release note PRs to avoid mistakes like this moving forward :) https://github.com/flutter/devtools/pull/7689 --- src/_data/devtools_releases.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/_data/devtools_releases.yml b/src/_data/devtools_releases.yml index c04203f231..272a0171d0 100644 --- a/src/_data/devtools_releases.yml +++ b/src/_data/devtools_releases.yml @@ -2,6 +2,7 @@ # make sure to add the version number as an entry in this list. # This step might be eliminated in the future. releases: + - '2.35.0' - '2.34.1' - '2.33.0' - '2.32.0' From 5e6fdbeb36ae7c60e29206b6ec0c28b4460fa6f1 Mon Sep 17 00:00:00 2001 From: Ian Hickson Date: Wed, 1 May 2024 20:03:35 -0700 Subject: [PATCH 026/109] Remove mentions of obsolete features (#10484) These checkerboard features are being removed as they are poorly implemented and unlikely to be supported in Impeller. --- src/content/perf/ui-performance.md | 40 ++++-------------------------- 1 file changed, 5 insertions(+), 35 deletions(-) diff --git a/src/content/perf/ui-performance.md b/src/content/perf/ui-performance.md index f46f997a90..213409a20c 100644 --- a/src/content/perf/ui-performance.md +++ b/src/content/perf/ui-performance.md @@ -313,18 +313,10 @@ The [`saveLayer`][] method is one of the most expensive methods in the Flutter framework. It's useful when applying post-processing to the scene, but it can slow your app and should be avoided if you don't need it. Even if you don't call `saveLayer` explicitly, -implicit calls might happen on your behalf. You can check whether -your scene is using `saveLayer` with the -[`PerformanceOverlayLayer.checkerboardOffscreenLayers`][] switch. - -{% comment %} -[TODO: Document disabling the graphs and checkerboardRasterCacheImages. -Flutter inspector doesn't seem to support this?] -{% endcomment %} - -Once the switch is enabled, run the app and look for any images -that are outlined with a flickering box. The box flickers from -frame to frame if a new frame is being rendered. For example, +implicit calls might happen on your behalf, for example when specyifying +[`Clip.antiAliasWithSaveLayer`][] (typically as a `clipBehavior`). + +For example, perhaps you have a group of objects with opacities that are rendered using `saveLayer`. In this case, it's probably more performant to apply an opacity to each individual widget, rather than a parent @@ -345,7 +337,7 @@ ask yourself these questions: * Can any of these calls be eliminated? * Can I apply the same effect to an individual element instead of a group? -[`PerformanceOverlayLayer.checkerboardOffscreenLayers`]: {{site.api}}/flutter/rendering/PerformanceOverlayLayer/checkerboardOffscreenLayers.html +[`Clip.antiAliasWithSaveLayer`]: {{site.api}}/flutter/dart-ui/Clip.html #### Checking for non-cached images @@ -367,28 +359,6 @@ _Because raster cache entries are expensive to construct and take up loads of GPU memory, cache images only where absolutely necessary._ -You can see which images are being cached by enabling the -[`PerformanceOverlayLayer.checkerboardRasterCacheImages`][] switch. - -{% comment %} -[TODO: Document how to do this, either via UI or programmatically. -At this point, disable the graphs and checkerboardOffScreenLayers.] -{% endcomment %} - -Run the app and look for images rendered with a randomly colored -checkerboard, indicating that the image is cached. -As you interact with the scene, the checkerboarded images -should remain constant—you don't want to see flickering, -which would indicate that the cached image is being re-cached. - -In most cases, you want to see checkerboards on static images, -but not on non-static images. If a static image isn't cached, -you can cache it by placing it into a [`RepaintBoundary`][] -widget. Though the engine might still ignore a repaint -boundary if it thinks the image isn't complex enough. - -[`PerformanceOverlayLayer.checkerboardRasterCacheImages`]: {{site.api}}/flutter/rendering/PerformanceOverlayLayer/checkerboardRasterCacheImages.html - ### Viewing the widget rebuild profiler The Flutter framework is designed to make it hard to create From aabc788af5cd0688895b17eec36e1cb805979593 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 May 2024 16:04:00 +0700 Subject: [PATCH 027/109] Bump site-shared from `80f090a` to `a51135f` (#10489) --- site-shared | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site-shared b/site-shared index 80f090a594..a51135f262 160000 --- a/site-shared +++ b/site-shared @@ -1 +1 @@ -Subproject commit 80f090a5942a6988c3c78417a2dec4387546c043 +Subproject commit a51135f2625a41663118e8ced88c90cac4bcb9da From b39ed3751550621cdc886d1a6bba58e2c9d399d7 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Thu, 2 May 2024 22:36:21 +0700 Subject: [PATCH 028/109] Resolve bash substitution errors in devcontainer setup (#10492) --- .devcontainer/devcontainer.json | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index ed07d904f0..5f3f568f74 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,22 +1,21 @@ { - // Goal: Be able to run `./dash_site` once the devcontainer is up - // Base container includes node and pnpm - // Flutter is installed in the container - "name": "Dart & Flutter Website Development", + // The mcr base container includes node and pnpm. + // Flutter is installed in the container during creation. + "name": "Flutter documentation website development", "image": "mcr.microsoft.com/devcontainers/javascript-node:latest", "forwardPorts": [4000], - "remoteUser": "node", + "containerUser": "node", "containerEnv": { "FLUTTER_ROOT": "/home/node/flutter" }, "remoteEnv": { "PATH": "${containerEnv:PATH}:${containerEnv:FLUTTER_ROOT}/bin" }, - "onCreateCommand": "git clone --branch=stable https://github.com/flutter/flutter.git ${containerEnv:FLUTTER_ROOT} && ${containerEnv:FLUTTER_ROOT}/bin/flutter doctor", + "onCreateCommand": "git clone --branch=stable https://github.com/flutter/flutter.git ${FLUTTER_ROOT} && ${FLUTTER_ROOT}/bin/flutter doctor", "postCreateCommand": "git submodule update --init --recursive && flutter pub get && corepack install && pnpm install", "customizations": { "vscode": { - "extensions": ["Dart-Code.dart-code","Dart-Code.flutter"] + "extensions": ["Dart-Code.dart-code", "Dart-Code.flutter"] } } } From 73ba435dc160f0e4a9ec2c121ce1f8c0fb8e0da7 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Thu, 2 May 2024 22:38:16 +0700 Subject: [PATCH 029/109] Clarify that versions should be adjusted in gradle syntax change (#10491) Resolves https://github.com/flutter/website/issues/10463 --- .../breaking-changes/flutter-gradle-plugin-apply.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/content/release/breaking-changes/flutter-gradle-plugin-apply.md b/src/content/release/breaking-changes/flutter-gradle-plugin-apply.md index 79dfd086e6..7a227a0fb3 100644 --- a/src/content/release/breaking-changes/flutter-gradle-plugin-apply.md +++ b/src/content/release/breaking-changes/flutter-gradle-plugin-apply.md @@ -223,8 +223,12 @@ and remove these 2 lines from `/android/app/build.gradle`: -apply plugin: 'com.google.firebase.crashlytics' ``` -To migrate to the new, declarative apply of the GMS and Crashlytics plugins, add -the following lines to `/android/settings.gradle`: +To migrate to the new, declarative-apply syntax for +the GMS and Crashlytics plugins, add them to `plugins` block +in your app's `/android/settings.gradle` file. +The additions should look similar to the following, +but with your desired plugin versions, likely matching +the ones you removed from the `/android/build.gradle` file. ```diff plugins { From ac14b9448d87b15157117165aae7f4b7a4562822 Mon Sep 17 00:00:00 2001 From: Anthony Sansone Date: Thu, 2 May 2024 16:04:52 -0500 Subject: [PATCH 030/109] Fix VPN / Device display in iOS (#10482) Fixes #10410 --- .../docs/install/devices/ios-physical.md | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/_includes/docs/install/devices/ios-physical.md b/src/_includes/docs/install/devices/ios-physical.md index 23fef3652c..fbd7c40a13 100644 --- a/src/_includes/docs/install/devices/ios-physical.md +++ b/src/_includes/docs/install/devices/ios-physical.md @@ -74,11 +74,12 @@ This requires you to load signed developer certificates to your iOS device. To sign an app in Xcode, you need to create a development provisioning profile. -Follow the Xcode signing flow to provision your project. +To provision your project, follow the Xcode signing flow. -1. Open Xcode. +1. Launch Xcode. -1. Sign in to Xcode with your Apple ID. +1. Go to **Xcode** > + **Settings...** 1. Go to **Xcode** > **Settings...** @@ -140,10 +141,10 @@ When you attach your physical iOS device for the first time, enable trust for both your Mac and the Development Certificate on the iOS device. -You should enabled trust of your Mac on your iOS device when +You should have enabled trust of your Mac on your iOS device when you [attached the device to your Mac](#attach). -###### Enable developer certificate for your iOS devices +##### Enable developer certificate for your iOS devices Enabling certificates varies in different versions of iOS. @@ -192,6 +193,11 @@ Enabling certificates varies in different versions of iOS. 1. Tap on **General** > **VPN & Device Management**. + :::note + If you can't find **VPN & Device Management** + in **Settings**, run your app on your iOS device once, then try again. + ::: + 1. Under the **Developer App** heading, you should find your certificate. 1. Tap your Certificate. @@ -204,8 +210,11 @@ Enabling certificates varies in different versions of iOS. {% comment %} End: Tab panes. {% endcomment %} -If prompted, enter your Mac password into the -**codesign wants to access key...** dialog and tap **Always Allow**. +If the **codesign wants to access key...** dialog displays: + +1. Enter your macOS password. + +1. Tap **Always Allow**. #### Set up wireless debugging on your iOS device (Optional) From e08474c015087b362db6b8d6100fbe6e7a05d67a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= <737941+loic-sharma@users.noreply.github.com> Date: Fri, 3 May 2024 05:54:24 +0200 Subject: [PATCH 031/109] Add go link to multi-window status (#10480) --- firebase.json | 1 + 1 file changed, 1 insertion(+) diff --git a/firebase.json b/firebase.json index f78d91e078..0ff74cc949 100644 --- a/firebase.json +++ b/firebase.json @@ -490,6 +490,7 @@ { "source": "/go/multi-view-sync-embedder-apis", "destination": "https://docs.google.com/document/d/14z-e-x6M3P53ZMD6qBh4UaJ3nJdG_VdMNqGKERv31hw/edit?usp=sharing", "type": 301 }, { "source": "/go/multi-view-sync-over-async", "destination": "https://docs.google.com/document/d/14z-e-x6M3P53ZMD6qBh4UaJ3nJdG_VdMNqGKERv31hw/edit?usp=sharing", "type": 301 }, { "source": "/go/multi-window-single-isolate", "destination": "https://docs.google.com/document/d/1Wdqs79TY3b1VkOZMDmt12psg5AhO-q9k5-Uv28Snr8M/edit?resourcekey=0-qvOf6jo8bR9W4ozLrbLMcQ", "type": 301 }, + { "source": "/go/multi-window-status", "destination": "https://docs.google.com/document/d/13E27tD8_9f6lDgwg3MpGNTV8XIRCZH3ByI-t9kI9IUM/edit?usp=sharing", "type": 301 }, { "source": "/go/navigator-with-router", "destination": "https://docs.google.com/document/d/1Q0jx0l4-xymph9O6zLaOY4d_f7YFpNWX_eGbzYxr9wY/edit", "type": 301 }, { "source": "/go/nshc", "destination": "https://docs.google.com/document/d/1uwHQ3ZEGN2cH6bFwa3CCXTTXCeDfOWw-kUa_B6oTMuA/edit", "type": 301 }, { "source": "/go/null-safety-workshop", "destination": "https://dartpad.dev/workshops.html?webserver=https://dartpad-workshops-io2021.web.app/null_safety_workshop", "type": 301 }, From daaeb2132ef9e331f80cc2819f5da136bed37d9d Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Fri, 3 May 2024 20:34:09 +0900 Subject: [PATCH 032/109] Update deps, including 11ty for serving fixes (#10499) Update npm dependencies, including 11ty for various incremental rebuild and serving fixes. Co-authored-by: Brett Morgan --- package.json | 12 +- pnpm-lock.yaml | 580 ++++++++++++++++++++++++++++++++----------------- 2 files changed, 382 insertions(+), 210 deletions(-) diff --git a/package.json b/package.json index 4dbf58ca69..51c9f27d09 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "node": ">=20.10.0", "pnpm": ">=8.14.0" }, - "packageManager": "pnpm@8.15.6", + "packageManager": "pnpm@8.15.8", "scripts": { "serve": "PRODUCTION=false eleventy --serve", "build-site-for-staging": "PRODUCTION=false eleventy", @@ -22,12 +22,12 @@ "bootstrap-scss": "^4.6.2" }, "devDependencies": { - "@11ty/eleventy": "3.0.0-alpha.6", + "@11ty/eleventy": "3.0.0-alpha.10", "diff2html": "^3.4.48", - "firebase-tools": "^13.7.2", + "firebase-tools": "^13.8.0", "hast-util-from-html": "^2.0.1", "hast-util-select": "^6.0.2", - "hast-util-to-text": "^4.0.1", + "hast-util-to-text": "^4.0.2", "html-minifier-terser": "^7.2.0", "js-yaml": "^4.1.0", "markdown-it": "^14.1.0", @@ -36,7 +36,7 @@ "markdown-it-container": "^4.0.0", "markdown-it-deflist": "^3.0.0", "markdown-it-table": "^4.1.1", - "sass": "^1.75.0", - "shiki": "^1.3.0" + "sass": "^1.76.0", + "shiki": "^1.4.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5b6179c7a5..055495255d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,14 +11,14 @@ dependencies: devDependencies: '@11ty/eleventy': - specifier: 3.0.0-alpha.6 - version: 3.0.0-alpha.6 + specifier: 3.0.0-alpha.10 + version: 3.0.0-alpha.10 diff2html: specifier: ^3.4.48 version: 3.4.48 firebase-tools: - specifier: ^13.7.2 - version: 13.7.2 + specifier: ^13.8.0 + version: 13.8.0 hast-util-from-html: specifier: ^2.0.1 version: 2.0.1 @@ -26,8 +26,8 @@ devDependencies: specifier: ^6.0.2 version: 6.0.2 hast-util-to-text: - specifier: ^4.0.1 - version: 4.0.1 + specifier: ^4.0.2 + version: 4.0.2 html-minifier-terser: specifier: ^7.2.0 version: 7.2.0 @@ -39,7 +39,7 @@ devDependencies: version: 14.1.0 markdown-it-anchor: specifier: ^8.6.7 - version: 8.6.7(@types/markdown-it@14.0.1)(markdown-it@14.1.0) + version: 8.6.7(@types/markdown-it@14.1.1)(markdown-it@14.1.0) markdown-it-attrs: specifier: ^4.1.6 version: 4.1.6(markdown-it@14.1.0) @@ -53,11 +53,11 @@ devDependencies: specifier: ^4.1.1 version: 4.1.1 sass: - specifier: ^1.75.0 - version: 1.75.0 + specifier: ^1.76.0 + version: 1.76.0 shiki: - specifier: ^1.3.0 - version: 1.3.0 + specifier: ^1.4.0 + version: 1.4.0 packages: @@ -76,9 +76,9 @@ packages: '@11ty/eleventy-utils': 1.0.2 dev: true - /@11ty/eleventy-dev-server@1.0.4: - resolution: {integrity: sha512-qVBmV2G1KF/0o5B/3fITlrrDHy4bONUI2YuN3/WJ3BNw4NU1d/we8XhKrlgq13nNvHoBx5czYp3LZt8qRG53Fg==} - engines: {node: '>=14'} + /@11ty/eleventy-dev-server@2.0.0: + resolution: {integrity: sha512-hqxQV92Bos0uyZa3P+BAX0nQqjQQMi4vCSxcQHNYEB/jjGV6CnurLBSn63U1VoixGAL4SpHm9OdTa2oVOTUx6Q==} + engines: {node: '>=18'} hasBin: true dependencies: '@11ty/eleventy-utils': 1.0.2 @@ -90,14 +90,25 @@ packages: minimist: 1.2.8 morphdom: 2.7.2 please-upgrade-node: 3.2.0 - ssri: 8.0.1 - ws: 8.16.0 + send: 0.18.0 + ssri: 10.0.5 + urlpattern-polyfill: 10.0.0 + ws: 8.17.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate dev: true + /@11ty/eleventy-plugin-bundle@2.0.2: + resolution: {integrity: sha512-zGyPp1g6bi+VC2I5ylwj4w29nivDmx4Uki5gWY6v3MT/1muK0JTtnc1KOMC7yUurv6YwtwdiLYyFK2eFyKv2wg==} + engines: {node: '>=18'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + /@11ty/eleventy-utils@1.0.2: resolution: {integrity: sha512-Zy2leMK1DQR6Q6ZPSagv7QpJaAz9uVbb+RmVetYFp3foMeQtOSZx7w2u5daRFmP+PeNq9vO9H4xtBToYFWZwHA==} engines: {node: '>=12'} @@ -105,14 +116,15 @@ packages: normalize-path: 3.0.0 dev: true - /@11ty/eleventy@3.0.0-alpha.6: - resolution: {integrity: sha512-wllqMiM3A9qRt1mUA6iETQfhRtpFfUnzCT7v4RK/5RFqX/Bjwmqe18v7dfStHSO+V2zv5hE32skdM23HigG+eg==} + /@11ty/eleventy@3.0.0-alpha.10: + resolution: {integrity: sha512-lnymV2KjhxPNs+e4otrjwr/kh7AEE/yTAwgVRtpdo8BA+zSDHaw+aeq/2L+h2nhQ9Z1a4ExIjQqk7K51E40tlA==} engines: {node: '>=18'} hasBin: true dependencies: '@11ty/dependency-tree': 3.0.0 '@11ty/dependency-tree-esm': 1.0.0 - '@11ty/eleventy-dev-server': 1.0.4 + '@11ty/eleventy-dev-server': 2.0.0 + '@11ty/eleventy-plugin-bundle': 2.0.2 '@11ty/eleventy-utils': 1.0.2 '@11ty/lodash-custom': 4.17.21 '@11ty/posthtml-urls': 1.0.0 @@ -128,14 +140,14 @@ packages: is-glob: 4.0.3 iso-639-1: 3.1.2 kleur: 4.1.5 - liquidjs: 10.11.0 + liquidjs: 10.12.0 luxon: 3.4.4 markdown-it: 14.1.0 micromatch: 4.0.5 minimist: 1.2.8 moo: 0.5.2 multimatch: 7.0.0 - node-retrieve-globals: 5.0.0 + node-retrieve-globals: 6.0.0 normalize-path: 3.0.0 nunjucks: 3.2.4(chokidar@3.6.0) please-upgrade-node: 3.2.0 @@ -179,25 +191,25 @@ packages: engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + /@babel/helper-validator-identifier@7.24.5: + resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} engines: {node: '>=6.9.0'} dev: true - /@babel/parser@7.24.4: - resolution: {integrity: sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==} + /@babel/parser@7.24.5: + resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.24.0 + '@babel/types': 7.24.5 dev: true - /@babel/types@7.24.0: - resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + /@babel/types@7.24.5: + resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-validator-identifier': 7.24.5 to-fast-properties: 2.0.0 dev: true @@ -221,6 +233,19 @@ packages: kuler: 2.0.0 dev: true + /@google-cloud/cloud-sql-connector@1.3.0: + resolution: {integrity: sha512-PPJgqTliwkpdC3iMWgG/rjh17VGL/UEYLyvcMtfWCUtFQ+DQFr7UV8gxrDKM7H0d0yEjai32uBkd4fMuijPKjQ==} + engines: {node: '>=14'} + dependencies: + '@googleapis/sqladmin': 16.1.0 + gaxios: 6.5.0 + google-auth-library: 9.9.0 + p-throttle: 5.1.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + /@google-cloud/paginator@4.0.1: resolution: {integrity: sha512-6G1ui6bWhNyHjmbYwavdN7mpVPRBtyDg/bfqBTAlwr413On2TnFNfDxc9UhTJctkgoCDgQXEKiRPLPR9USlkbQ==} engines: {node: '>=12.0.0'} @@ -269,22 +294,32 @@ packages: - supports-color dev: true + /@googleapis/sqladmin@16.1.0: + resolution: {integrity: sha512-88Y0pvkuLfiEAPu5NwTi4tkbdWwzmKR9bdlM4p9MTRIQ+tYt6H39qDoXTRlnBp1eO2xnQ5NRXofZFNycK7D08w==} + engines: {node: '>=12.0.0'} + dependencies: + googleapis-common: 7.2.0 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + /@grpc/grpc-js@1.8.21: resolution: {integrity: sha512-KeyQeZpxeEBSqFVTi3q2K7PiPXmgBfECc4updA1ejCLjYmoAlvvM3ZMp5ztTDUCUQmoY3CpDxvchjO1+rFkoHg==} engines: {node: ^8.13.0 || >=10.10.0} dependencies: - '@grpc/proto-loader': 0.7.12 - '@types/node': 20.12.7 + '@grpc/proto-loader': 0.7.13 + '@types/node': 20.12.8 dev: true - /@grpc/proto-loader@0.7.12: - resolution: {integrity: sha512-DCVwMxqYzpUCiDMl7hQ384FqP4T3DbNpXU8pt681l3UWCip1WUiD5JrkImUwCB9a7f2cq4CUTmi5r/xIMRPY1Q==} + /@grpc/proto-loader@0.7.13: + resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} engines: {node: '>=6'} hasBin: true dependencies: lodash.camelcase: 4.3.0 long: 5.2.3 - protobufjs: 7.2.4 + protobufjs: 7.2.6 yargs: 17.7.2 dev: true @@ -342,8 +377,8 @@ packages: resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} dev: true - /@jsdoc/salty@0.2.7: - resolution: {integrity: sha512-mh8LbS9d4Jq84KLw8pzho7XC2q2/IJGiJss3xwRoLD1A+EE16SjN4PfaG4jRCzKegTFLlN0Zd8SdUPE6XdoPFg==} + /@jsdoc/salty@0.2.8: + resolution: {integrity: sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg==} engines: {node: '>=v12.0.0'} dependencies: lodash: 4.17.21 @@ -378,7 +413,7 @@ packages: agent-base: 7.1.1 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.4 - lru-cache: 10.2.0 + lru-cache: 10.2.2 socks-proxy-agent: 8.0.3 transitivePeerDependencies: - supports-color @@ -475,8 +510,8 @@ packages: resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} dev: true - /@shikijs/core@1.3.0: - resolution: {integrity: sha512-7fedsBfuILDTBmrYZNFI8B6ATTxhQAasUHllHmjvSZPnoq4bULWoTpHwmuQvZ8Aq03/tAa2IGo6RXqWtHdWaCA==} + /@shikijs/core@1.4.0: + resolution: {integrity: sha512-CxpKLntAi64h3j+TwWqVIQObPTED0FyXLHTTh3MKXtqiQNn2JGcMQQ362LftDbc9kYbDtrksNMNoVmVXzKFYUQ==} dev: true /@sindresorhus/slugify@2.2.1: @@ -501,14 +536,14 @@ packages: /@types/duplexify@3.6.4: resolution: {integrity: sha512-2eahVPsd+dy3CL6FugAzJcxoraWhUghZGEQJns1kTKfCXWKJ5iG/VkaB05wRVrDKHfOFKqb0X0kXh91eE99RZg==} dependencies: - '@types/node': 20.12.7 + '@types/node': 20.12.8 dev: true /@types/glob@8.1.0: resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.12.7 + '@types/node': 20.12.8 dev: true /@types/hast@3.0.4: @@ -521,38 +556,31 @@ packages: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} dev: true - /@types/linkify-it@3.0.5: - resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} + /@types/linkify-it@5.0.0: + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} dev: true /@types/long@4.0.2: resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==} dev: true - /@types/markdown-it@12.2.3: - resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} - dependencies: - '@types/linkify-it': 3.0.5 - '@types/mdurl': 1.0.5 - dev: true - - /@types/markdown-it@14.0.1: - resolution: {integrity: sha512-6WfOG3jXR78DW8L5cTYCVVGAsIFZskRHCDo5tbqa+qtKVt4oDRVH7hyIWu1SpDQJlmIoEivNQZ5h+AGAOrgOtQ==} + /@types/markdown-it@14.1.1: + resolution: {integrity: sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==} dependencies: - '@types/linkify-it': 3.0.5 - '@types/mdurl': 1.0.5 + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 dev: true - /@types/mdurl@1.0.5: - resolution: {integrity: sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==} + /@types/mdurl@2.0.0: + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} dev: true /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} dev: true - /@types/node@20.12.7: - resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} + /@types/node@20.12.8: + resolution: {integrity: sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==} dependencies: undici-types: 5.26.5 dev: true @@ -561,7 +589,7 @@ packages: resolution: {integrity: sha512-F3OznnSLAUxFrCEu/L5PY8+ny8DtcFRjx7fZZ9bycvXRi3KPTRS9HOitGZwvPg0juRhXFWIeKX58cnX5YqLohQ==} dependencies: '@types/glob': 8.1.0 - '@types/node': 20.12.7 + '@types/node': 20.12.8 dev: true /@types/triple-beam@1.3.5: @@ -649,7 +677,7 @@ packages: dev: true optional: true - /ajv-formats@2.1.1(ajv@8.12.0): + /ajv-formats@2.1.1(ajv@8.13.0): resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: ajv: ^8.0.0 @@ -657,7 +685,7 @@ packages: ajv: optional: true dependencies: - ajv: 8.12.0 + ajv: 8.13.0 dev: true /ajv@6.12.6: @@ -669,8 +697,8 @@ packages: uri-js: 4.4.1 dev: true - /ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + /ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} dependencies: fast-deep-equal: 3.1.3 json-schema-traverse: 1.0.0 @@ -1028,7 +1056,7 @@ packages: '@npmcli/fs': 3.1.0 fs-minipass: 3.0.3 glob: 10.3.12 - lru-cache: 10.2.0 + lru-cache: 10.2.2 minipass: 7.0.4 minipass-collect: 2.0.1 minipass-flush: 1.0.5 @@ -1598,6 +1626,10 @@ packages: hasBin: true dev: true + /discontinuous-range@1.0.0: + resolution: {integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==} + dev: true + /dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} dependencies: @@ -1695,10 +1727,6 @@ packages: once: 1.4.0 dev: true - /entities@2.1.0: - resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} - dev: true - /entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} dev: true @@ -1880,8 +1908,8 @@ packages: engines: {node: '>=6.0.0', npm: '>5.0.0'} dependencies: '@apidevtools/json-schema-ref-parser': 9.1.2 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) + ajv: 8.13.0 + ajv-formats: 2.1.1(ajv@8.13.0) body-parser: 1.20.2 content-type: 1.0.5 deep-freeze: 0.0.1 @@ -2057,11 +2085,12 @@ packages: - supports-color dev: true - /firebase-tools@13.7.2: - resolution: {integrity: sha512-sq1AZCOt/xjpP7FYNRXPEjSZtplAhEFd/LKqTaKsCtFo64h/ykEAYXHzAJCSl6J1EWh6tf0h1DYT2mIaW+d5cw==} + /firebase-tools@13.8.0: + resolution: {integrity: sha512-8fIQt87Uo6sN/4imCLNQCsmHzh1VXDu27mSGOUj4w+z5JQG/k40JHVwqOwW5LUsIlfDJgNOyf7Tu64x0iESHLA==} engines: {node: '>=18.0.0 || >=20.0.0'} hasBin: true dependencies: + '@google-cloud/cloud-sql-connector': 1.3.0 '@google-cloud/pubsub': 3.7.5 abort-controller: 3.0.0 ajv: 6.12.6 @@ -2086,11 +2115,11 @@ packages: form-data: 4.0.0 fs-extra: 10.1.0 fuzzy: 0.1.3 + gaxios: 6.5.0 glob: 7.2.3 - google-auth-library: 7.14.1 + google-auth-library: 9.9.0 inquirer: 8.2.6 inquirer-autocomplete-prompt: 2.0.1(inquirer@8.2.6) - js-yaml: 3.14.1 jsonwebtoken: 9.0.2 leven: 3.1.0 libsodium-wrappers: 0.7.13 @@ -2104,12 +2133,14 @@ packages: open: 6.4.0 ora: 5.4.1 p-limit: 3.1.0 + pg: 8.11.5 portfinder: 1.0.32 progress: 2.0.3 proxy-agent: 6.4.0 retry: 0.13.1 rimraf: 3.0.2 semver: 7.6.0 + sql-formatter: 15.3.1 stream-chain: 2.2.5 stream-json: 1.8.0 strip-ansi: 6.0.1 @@ -2124,9 +2155,11 @@ packages: winston: 3.13.0 winston-transport: 4.7.0 ws: 7.5.9 + yaml: 2.4.2 transitivePeerDependencies: - bufferutil - encoding + - pg-native - supports-color - utf-8-validate dev: true @@ -2222,11 +2255,10 @@ packages: engines: {node: '>= 0.6.0'} dev: true - /gaxios@4.3.3: - resolution: {integrity: sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==} - engines: {node: '>=10'} + /gaxios@5.1.3: + resolution: {integrity: sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==} + engines: {node: '>=12'} dependencies: - abort-controller: 3.0.0 extend: 3.0.2 https-proxy-agent: 5.0.1 is-stream: 2.0.1 @@ -2236,35 +2268,36 @@ packages: - supports-color dev: true - /gaxios@5.1.3: - resolution: {integrity: sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==} - engines: {node: '>=12'} + /gaxios@6.5.0: + resolution: {integrity: sha512-R9QGdv8j4/dlNoQbX3hSaK/S0rkMijqjVvW3YM06CoBdbU/VdKd159j4hePpng0KuE6Lh6JJ7UdmVGJZFcAG1w==} + engines: {node: '>=14'} dependencies: extend: 3.0.2 - https-proxy-agent: 5.0.1 + https-proxy-agent: 7.0.4 is-stream: 2.0.1 node-fetch: 2.7.0 + uuid: 9.0.1 transitivePeerDependencies: - encoding - supports-color dev: true - /gcp-metadata@4.3.1: - resolution: {integrity: sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==} - engines: {node: '>=10'} + /gcp-metadata@5.3.0: + resolution: {integrity: sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==} + engines: {node: '>=12'} dependencies: - gaxios: 4.3.3 + gaxios: 5.1.3 json-bigint: 1.0.0 transitivePeerDependencies: - encoding - supports-color dev: true - /gcp-metadata@5.3.0: - resolution: {integrity: sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==} - engines: {node: '>=12'} + /gcp-metadata@6.1.0: + resolution: {integrity: sha512-Jh/AIwwgaxan+7ZUUmRLCjtchyDiqh4KjBJ5tW3plBZb5iL/BPcso8A5DlzeD9qlw0duCamnNdpFjxwaT0KyKg==} + engines: {node: '>=14'} dependencies: - gaxios: 5.1.3 + gaxios: 6.5.0 json-bigint: 1.0.0 transitivePeerDependencies: - encoding @@ -2287,6 +2320,11 @@ packages: hasown: 2.0.2 dev: true + /get-stdin@8.0.0: + resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==} + engines: {node: '>=10'} + dev: true + /get-uri@6.0.3: resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} engines: {node: '>= 14'} @@ -2359,17 +2397,17 @@ packages: ini: 2.0.0 dev: true - /google-auth-library@7.14.1: - resolution: {integrity: sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA==} - engines: {node: '>=10'} + /google-auth-library@8.9.0: + resolution: {integrity: sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==} + engines: {node: '>=12'} dependencies: arrify: 2.0.1 base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 fast-text-encoding: 1.0.6 - gaxios: 4.3.3 - gcp-metadata: 4.3.1 - gtoken: 5.3.2 + gaxios: 5.1.3 + gcp-metadata: 5.3.0 + gtoken: 6.1.2 jws: 4.0.0 lru-cache: 6.0.0 transitivePeerDependencies: @@ -2377,19 +2415,16 @@ packages: - supports-color dev: true - /google-auth-library@8.9.0: - resolution: {integrity: sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==} - engines: {node: '>=12'} + /google-auth-library@9.9.0: + resolution: {integrity: sha512-9l+zO07h1tDJdIHN74SpnWIlNR+OuOemXlWJlLP9pXy6vFtizgpEzMuwJa4lqY9UAdiAv5DVd5ql0Am916I+aA==} + engines: {node: '>=14'} dependencies: - arrify: 2.0.1 base64-js: 1.5.1 ecdsa-sig-formatter: 1.0.11 - fast-text-encoding: 1.0.6 - gaxios: 5.1.3 - gcp-metadata: 5.3.0 - gtoken: 6.1.2 + gaxios: 6.5.0 + gcp-metadata: 6.1.0 + gtoken: 7.1.0 jws: 4.0.0 - lru-cache: 6.0.0 transitivePeerDependencies: - encoding - supports-color @@ -2401,7 +2436,7 @@ packages: hasBin: true dependencies: '@grpc/grpc-js': 1.8.21 - '@grpc/proto-loader': 0.7.12 + '@grpc/proto-loader': 0.7.13 '@types/long': 4.0.2 '@types/rimraf': 3.0.2 abort-controller: 3.0.0 @@ -2420,14 +2455,6 @@ packages: - supports-color dev: true - /google-p12-pem@3.1.4: - resolution: {integrity: sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==} - engines: {node: '>=10'} - hasBin: true - dependencies: - node-forge: 1.3.1 - dev: true - /google-p12-pem@4.0.1: resolution: {integrity: sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==} engines: {node: '>=12.0.0'} @@ -2436,6 +2463,21 @@ packages: node-forge: 1.3.1 dev: true + /googleapis-common@7.2.0: + resolution: {integrity: sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==} + engines: {node: '>=14.0.0'} + dependencies: + extend: 3.0.2 + gaxios: 6.5.0 + google-auth-library: 9.9.0 + qs: 6.12.1 + url-template: 2.0.8 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + dev: true + /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: @@ -2460,24 +2502,23 @@ packages: strip-bom-string: 1.0.0 dev: true - /gtoken@5.3.2: - resolution: {integrity: sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==} - engines: {node: '>=10'} + /gtoken@6.1.2: + resolution: {integrity: sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==} + engines: {node: '>=12.0.0'} dependencies: - gaxios: 4.3.3 - google-p12-pem: 3.1.4 + gaxios: 5.1.3 + google-p12-pem: 4.0.1 jws: 4.0.0 transitivePeerDependencies: - encoding - supports-color dev: true - /gtoken@6.1.2: - resolution: {integrity: sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==} - engines: {node: '>=12.0.0'} + /gtoken@7.1.0: + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} dependencies: - gaxios: 5.1.3 - google-p12-pem: 4.0.1 + gaxios: 6.5.0 jws: 4.0.0 transitivePeerDependencies: - encoding @@ -2586,8 +2627,8 @@ packages: '@types/hast': 3.0.4 dev: true - /hast-util-to-text@4.0.1: - resolution: {integrity: sha512-RHL7Vo2n06ZocCFWqmbyhZ1pCYX/mSKdywt9YD5U6Hquu5syV+dImCXFKLFt02JoK5QxkQFS0PoVdFdPXuPffQ==} + /hast-util-to-text@4.0.2: + resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} dependencies: '@types/hast': 3.0.4 '@types/unist': 3.0.2 @@ -2642,7 +2683,7 @@ packages: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.30.3 + terser: 5.31.0 dev: true /htmlparser2@7.2.0: @@ -3045,21 +3086,21 @@ packages: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} dev: true - /jsdoc@4.0.2: - resolution: {integrity: sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==} + /jsdoc@4.0.3: + resolution: {integrity: sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw==} engines: {node: '>=12.0.0'} hasBin: true dependencies: - '@babel/parser': 7.24.4 - '@jsdoc/salty': 0.2.7 - '@types/markdown-it': 12.2.3 + '@babel/parser': 7.24.5 + '@jsdoc/salty': 0.2.8 + '@types/markdown-it': 14.1.1 bluebird: 3.7.2 catharsis: 0.9.0 escape-string-regexp: 2.0.0 js2xmlparser: 4.0.2 klaw: 3.0.0 - markdown-it: 12.3.2 - markdown-it-anchor: 8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2) + markdown-it: 14.1.0 + markdown-it-anchor: 8.6.7(@types/markdown-it@14.1.1)(markdown-it@14.1.0) marked: 4.3.0 mkdirp: 1.0.4 requizzle: 0.2.4 @@ -3200,20 +3241,14 @@ packages: resolution: {integrity: sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==} dev: true - /linkify-it@3.0.3: - resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} - dependencies: - uc.micro: 1.0.6 - dev: true - /linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} dependencies: uc.micro: 2.1.0 dev: true - /liquidjs@10.11.0: - resolution: {integrity: sha512-DPUG/ez9KbeV6oxon4EOJPzkNModjYmSa2ceP3r9+3bOV9+MnpN/+a1KwGaj8bz5pp4td3kBiHrPX9sC7iuDxA==} + /liquidjs@10.12.0: + resolution: {integrity: sha512-ZpT27WEqUu8IeddXoLbdeBTbRfV5r7oUKDjJMthuQKQTScgI8pbLGbSWiiAktQVpPG7mHMGsJ0JVbZYn1w9Gtg==} engines: {node: '>=14'} hasBin: true dependencies: @@ -3324,10 +3359,9 @@ packages: tslib: 2.6.2 dev: true - /lru-cache@10.2.0: - resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} + /lru-cache@10.2.2: + resolution: {integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==} engines: {node: 14 || >=16.14} - requiresBuild: true dev: true /lru-cache@6.0.0: @@ -3354,8 +3388,8 @@ packages: semver: 6.3.1 dev: true - /make-fetch-happen@13.0.0: - resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} + /make-fetch-happen@13.0.1: + resolution: {integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==} engines: {node: ^16.14.0 || >=18.0.0} requiresBuild: true dependencies: @@ -3368,6 +3402,7 @@ packages: minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 negotiator: 0.6.3 + proc-log: 4.2.0 promise-retry: 2.0.1 ssri: 10.0.5 transitivePeerDependencies: @@ -3375,23 +3410,13 @@ packages: dev: true optional: true - /markdown-it-anchor@8.6.7(@types/markdown-it@12.2.3)(markdown-it@12.3.2): - resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} - peerDependencies: - '@types/markdown-it': '*' - markdown-it: '*' - dependencies: - '@types/markdown-it': 12.2.3 - markdown-it: 12.3.2 - dev: true - - /markdown-it-anchor@8.6.7(@types/markdown-it@14.0.1)(markdown-it@14.1.0): + /markdown-it-anchor@8.6.7(@types/markdown-it@14.1.1)(markdown-it@14.1.0): resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} peerDependencies: '@types/markdown-it': '*' markdown-it: '*' dependencies: - '@types/markdown-it': 14.0.1 + '@types/markdown-it': 14.1.1 markdown-it: 14.1.0 dev: true @@ -3417,17 +3442,6 @@ packages: engines: {node: '>12.6'} dev: true - /markdown-it@12.3.2: - resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} - hasBin: true - dependencies: - argparse: 2.0.1 - entities: 2.1.0 - linkify-it: 3.0.3 - mdurl: 1.0.1 - uc.micro: 1.0.6 - dev: true - /markdown-it@14.1.0: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true @@ -3471,10 +3485,6 @@ packages: minimatch: 3.1.2 dev: true - /mdurl@1.0.1: - resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} - dev: true - /mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} dev: true @@ -3718,6 +3728,16 @@ packages: dev: true optional: true + /nearley@2.20.1: + resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} + hasBin: true + dependencies: + commander: 2.20.3 + moo: 0.5.2 + railroad-diagrams: 1.0.0 + randexp: 0.4.6 + dev: true + /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -3772,7 +3792,7 @@ packages: exponential-backoff: 3.1.1 glob: 10.3.12 graceful-fs: 4.2.11 - make-fetch-happen: 13.0.0 + make-fetch-happen: 13.0.1 nopt: 7.2.0 proc-log: 3.0.0 semver: 7.6.0 @@ -3783,8 +3803,8 @@ packages: dev: true optional: true - /node-retrieve-globals@5.0.0: - resolution: {integrity: sha512-C4R0rtPEoxJaeo8RnLWx3VMvFgs0fAePFvI6WHBS2BS/aNxuHwL9IK922UBOjHnD5UKVfY1Xef9qk/BkmLrWiw==} + /node-retrieve-globals@6.0.0: + resolution: {integrity: sha512-VoEp6WMN/JcbBrJr6LnFE11kdzpKiBKNPFrHCEK2GgFWtiYpeL85WgcZpZFFnWxAU0O65+b+ipQAy4Oxy/+Pdg==} dependencies: acorn: 8.11.3 acorn-walk: 8.3.2 @@ -3915,7 +3935,7 @@ packages: /openapi3-ts@3.2.0: resolution: {integrity: sha512-/ykNWRV5Qs0Nwq7Pc0nJ78fgILvOT/60OxEmB3v7yQ8a8Bwcm43D4diaYazG/KBn6czA+52XYy931WFLMCUeSg==} dependencies: - yaml: 2.4.1 + yaml: 2.4.2 dev: true /optionator@0.8.3: @@ -3971,6 +3991,11 @@ packages: dev: true optional: true + /p-throttle@5.1.0: + resolution: {integrity: sha512-+N+s2g01w1Zch4D0K3OpnPDqLOKmLcQ4BvIFq3JC0K29R28vUOjWpO+OJZBNt8X9i3pFCksZJZ0YXkUGjaFE6g==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /pac-proxy-agent@7.0.1: resolution: {integrity: sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==} engines: {node: '>= 14'} @@ -4043,7 +4068,7 @@ packages: resolution: {integrity: sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==} engines: {node: '>=16 || 14 >=14.17'} dependencies: - lru-cache: 10.2.0 + lru-cache: 10.2.2 minipass: 7.0.4 dev: true @@ -4057,6 +4082,68 @@ packages: isarray: 0.0.1 dev: true + /pg-cloudflare@1.1.1: + resolution: {integrity: sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==} + requiresBuild: true + dev: true + optional: true + + /pg-connection-string@2.6.4: + resolution: {integrity: sha512-v+Z7W/0EO707aNMaAEfiGnGL9sxxumwLl2fJvCQtMn9Fxsg+lPpPkdcyBSv/KFgpGdYkMfn+EI1Or2EHjpgLCA==} + dev: true + + /pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + dev: true + + /pg-pool@3.6.2(pg@8.11.5): + resolution: {integrity: sha512-Htjbg8BlwXqSBQ9V8Vjtc+vzf/6fVUuak/3/XXKA9oxZprwW3IMDQTGHP+KDmVL7rtd+R1QjbnCFPuTHm3G4hg==} + peerDependencies: + pg: '>=8.0' + dependencies: + pg: 8.11.5 + dev: true + + /pg-protocol@1.6.1: + resolution: {integrity: sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==} + dev: true + + /pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.0 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + dev: true + + /pg@8.11.5: + resolution: {integrity: sha512-jqgNHSKL5cbDjFlHyYsCXmQDrfIX/3RsNwYqpd4N0Kt8niLuNoRNH+aazv6cOd43gPh9Y4DjQCtb+X0MH0Hvnw==} + engines: {node: '>= 8.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + dependencies: + pg-connection-string: 2.6.4 + pg-pool: 3.6.2(pg@8.11.5) + pg-protocol: 1.6.1 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.1.1 + dev: true + + /pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + dependencies: + split2: 4.2.0 + dev: true + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -4088,6 +4175,28 @@ packages: - supports-color dev: true + /postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + dev: true + + /postgres-bytea@1.0.0: + resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} + engines: {node: '>=0.10.0'} + dev: true + + /postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + dev: true + + /postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + dependencies: + xtend: 4.0.2 + dev: true + /posthtml-parser@0.11.0: resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} engines: {node: '>=12'} @@ -4122,6 +4231,13 @@ packages: dev: true optional: true + /proc-log@4.2.0: + resolution: {integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + requiresBuild: true + dev: true + optional: true + /process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} dev: true @@ -4178,7 +4294,7 @@ packages: espree: 9.6.1 estraverse: 5.3.0 glob: 8.1.0 - jsdoc: 4.0.2 + jsdoc: 4.0.3 minimist: 1.2.8 protobufjs: 7.2.4 semver: 7.6.0 @@ -4201,7 +4317,26 @@ packages: '@protobufjs/path': 1.1.2 '@protobufjs/pool': 1.1.0 '@protobufjs/utf8': 1.1.0 - '@types/node': 20.12.7 + '@types/node': 20.12.8 + long: 5.2.3 + dev: true + + /protobufjs@7.2.6: + resolution: {integrity: sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==} + engines: {node: '>=12.0.0'} + requiresBuild: true + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 20.12.8 long: 5.2.3 dev: true @@ -4283,6 +4418,18 @@ packages: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} dev: true + /railroad-diagrams@1.0.0: + resolution: {integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==} + dev: true + + /randexp@0.4.6: + resolution: {integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==} + engines: {node: '>=0.12'} + dependencies: + discontinuous-range: 1.0.0 + ret: 0.1.15 + dev: true + /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -4417,6 +4564,11 @@ packages: signal-exit: 3.0.7 dev: true + /ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + dev: true + /retry-request@5.0.2: resolution: {integrity: sha512-wfI3pk7EE80lCIXprqh7ym48IHYdwmAAzESdbU8Q9l7pnRCk9LEhpbOTNKjz6FARLm/Bl5m+4F0ABxOkYUujSQ==} engines: {node: '>=12'} @@ -4507,8 +4659,8 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass@1.75.0: - resolution: {integrity: sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==} + /sass@1.76.0: + resolution: {integrity: sha512-nc3LeqvF2FNW5xGF1zxZifdW3ffIz5aBb7I7tSvOoNu7z1RQ6pFt9MBuiPtjgaI62YWrM/txjWlOCFiGtf2xpw==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -4627,10 +4779,10 @@ packages: engines: {node: '>=8'} dev: true - /shiki@1.3.0: - resolution: {integrity: sha512-9aNdQy/etMXctnPzsje1h1XIGm9YfRcSksKOGqZWXA/qP9G18/8fpz5Bjpma8bOgz3tqIpjERAd6/lLjFyzoww==} + /shiki@1.4.0: + resolution: {integrity: sha512-5WIn0OL8PWm7JhnTwRWXniy6eEDY234mRrERVlFa646V2ErQqwIFd2UML7e0Pq9eqSKLoMa3Ke+xbsF+DAuy+Q==} dependencies: - '@shikijs/core': 1.3.0 + '@shikijs/core': 1.4.0 dev: true /side-channel@1.0.6: @@ -4720,6 +4872,11 @@ packages: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} dev: true + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: true + /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} dev: true @@ -4728,6 +4885,15 @@ packages: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} dev: true + /sql-formatter@15.3.1: + resolution: {integrity: sha512-L/dqan+Hrt0PpPdCbHcI9bdfOvqaQZR7v5c5SWMJ3bUGQSezK09Mm9q2I3B4iObjaq7FyoldIM+fDSmfzGRXCA==} + hasBin: true + dependencies: + argparse: 2.0.1 + get-stdin: 8.0.0 + nearley: 2.20.1 + dev: true + /ssri@10.0.5: resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -4735,14 +4901,6 @@ packages: dependencies: minipass: 7.0.4 dev: true - optional: true - - /ssri@8.0.1: - resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.3.6 - dev: true /stack-trace@0.0.10: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} @@ -4910,8 +5068,8 @@ packages: - supports-color dev: true - /terser@5.30.3: - resolution: {integrity: sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==} + /terser@5.31.0: + resolution: {integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==} engines: {node: '>=10'} hasBin: true dependencies: @@ -5008,10 +5166,6 @@ packages: is-typedarray: 1.0.0 dev: true - /uc.micro@1.0.6: - resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - dev: true - /uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} dev: true @@ -5143,6 +5297,14 @@ packages: resolution: {integrity: sha512-H6dnQ/yPAAVzMQRvEvyz01hhfQL5qRWSEt7BX8t9DqnPw9BjMb64fjIRq76Uvf1hkHp+mTZvEVJ5guXOT0Xqaw==} dev: true + /url-template@2.0.8: + resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} + dev: true + + /urlpattern-polyfill@10.0.0: + resolution: {integrity: sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==} + dev: true + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true @@ -5157,6 +5319,11 @@ packages: hasBin: true dev: true + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: true + /valid-url@1.0.9: resolution: {integrity: sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==} dev: true @@ -5330,8 +5497,8 @@ packages: optional: true dev: true - /ws@8.16.0: - resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + /ws@8.17.0: + resolution: {integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -5352,6 +5519,11 @@ packages: resolution: {integrity: sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==} dev: true + /xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + dev: true + /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -5361,8 +5533,8 @@ packages: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} dev: true - /yaml@2.4.1: - resolution: {integrity: sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==} + /yaml@2.4.2: + resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==} engines: {node: '>= 14'} hasBin: true dev: true From b597a91ef0d3d1f9db404cf0de42860e71b79868 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Fri, 3 May 2024 05:29:38 -0700 Subject: [PATCH 033/109] Embed the DevTools extensions video (#10427) Fixes https://github.com/flutter/website/issues/10426 --------- Co-authored-by: Parker Lougheed --- src/content/tools/devtools/extensions.md | 41 ++++++++++++++++-------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/src/content/tools/devtools/extensions.md b/src/content/tools/devtools/extensions.md index 9827aca47a..e6762ee9ab 100644 --- a/src/content/tools/devtools/extensions.md +++ b/src/content/tools/devtools/extensions.md @@ -5,22 +5,26 @@ description: Learn how to use and build DevTools extensions. ## What are DevTools extensions? -[DevTools extensions](https://pub.dev/packages/devtools_extensions) +[DevTools extensions][] are developer tools provided by third-party packages that are tightly integrated into the DevTools tooling suite. Extensions are distributed as part of a pub package, and they are dynamically loaded into DevTools when a user is debugging their app. +[DevTools extensions]: {{site.pub-pkg}}/devtools_extensions + ## Use a DevTools extension -If your app depends on a package that provides a DevTools extension, -the extension automatically shows up in a new tab when you open DevTools. +If your app depends on a package that provides a +DevTools extension, the extension automatically +shows up in a new tab when you open DevTools. ### Configure extension enablement states -You need to manually enable the extension before it loads for the first time. -Make sure the extension is provided by a source you trust before enabling it. +You need to manually enable the extension before it loads +for the first time. Make sure the extension is provided by +a source you trust before enabling it. ![Screenshot of extension enablement prompt](/assets/images/docs/tools/devtools/extension_enable_prompt.png) @@ -30,20 +34,29 @@ file in the root of the user's project This file stores per-project (or optionally, per user) settings for DevTools. -If this file is **checked into source control**, the specified options are -configured for the project. This means that anyone who pulls a project's +If this file is **checked into source control**, +the specified options are configured for the project. +This means that anyone who pulls a project's source code and works on the project uses the same settings. -If this file is **omitted from source control**, for example by adding -`devtools_options.yaml` as an entry in the `.gitignore` file, then the specified -options are configured separately for each user. Since each user or -contributor to the project uses a local copy of the `devtools_options.yaml` -file in this case, the specified options might differ between project contributors. +If this file is **omitted from source control**, +for example by adding `devtools_options.yaml` +as an entry in the `.gitignore` file, then the specified +options are configured separately for each user. +Since each user or contributor to the project +uses a local copy of the `devtools_options.yaml` +file in this case, the specified options might +differ between project contributors. ## Build a DevTools extension -For an in-depth guide on how to build a DevTools extension, check out -[Dart and Flutter DevTools extensions][article], a free article on Medium. +For an in-depth guide on how to build a DevTools extension, +check out [Dart and Flutter DevTools extensions][article], +a free article on Medium. + +To learn more about writing and using DevTools extensions, +check out the following video: + [article]: {{site.flutter-medium}}/dart-flutter-devtools-extensions-c8bc1aaf8e5f From 97681c78c50a0522269a8e9ca6b056cd54149f40 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Fri, 3 May 2024 22:07:51 +0900 Subject: [PATCH 034/109] Update banner for I/O 2024 (#10502) --- src/_includes/banner.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/_includes/banner.html b/src/_includes/banner.html index ea0981f665..ab679b4310 100644 --- a/src/_includes/banner.html +++ b/src/_includes/banner.html @@ -2,8 +2,7 @@ For headings use h3 elements. {% endcomment -%} From a445e33b2a33b0523b7d0de341fdfc742ff00ce8 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Fri, 3 May 2024 22:08:36 +0900 Subject: [PATCH 035/109] Add alt text to images missing it (#10504) Resolves https://github.com/flutter/website/issues/9527 --- .gitignore | 1 + firebase.json | 2 +- src/_includes/docs/android-ios-figure-pair.md | 8 ++---- .../data-and-backend/state-mgmt/simple.md | 1 + src/content/deployment/android.md | 10 +++---- src/content/get-started/codelab-web.md | 2 +- .../get-started/flutter-for/declarative.md | 2 +- .../get-started/flutter-for/swiftui-devs.md | 2 +- .../ios/app-extensions.md | 27 ++++++++----------- .../flutter-driver-migration.md | 12 ++++----- 10 files changed, 29 insertions(+), 38 deletions(-) diff --git a/.gitignore b/.gitignore index 2d00beee19..e8c8e1c67d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ _site +.cache .*-cache .*-metadata .DS_Store diff --git a/firebase.json b/firebase.json index 0ff74cc949..5dd62e1984 100644 --- a/firebase.json +++ b/firebase.json @@ -630,7 +630,7 @@ ] }, { - "source": "**/*.@(jpg|jpeg|gif|png|webp|webm|svg|md|css|js)", + "source": "**/*.@(avif|jpg|jpeg|gif|png|webp|webm|svg|md|css|js)", "headers": [ { "key": "Cache-Control", "value": "max-age=3600" }, { "key": "Access-Control-Allow-Origin", "value": "*" } diff --git a/src/_includes/docs/android-ios-figure-pair.md b/src/_includes/docs/android-ios-figure-pair.md index a4dc985b8e..c30022e790 100644 --- a/src/_includes/docs/android-ios-figure-pair.md +++ b/src/_includes/docs/android-ios-figure-pair.md @@ -1,14 +1,10 @@
- {{include.alt}} on Android + {{include.alt}} on Android
Android
- {{include.alt}} on iOS + {{include.alt}} on iOS
iOS
diff --git a/src/content/data-and-backend/state-mgmt/simple.md b/src/content/data-and-backend/state-mgmt/simple.md index b7df05afe2..7ccac11934 100644 --- a/src/content/data-and-backend/state-mgmt/simple.md +++ b/src/content/data-and-backend/state-mgmt/simple.md @@ -27,6 +27,7 @@ state management from other reactive frameworks, you can find packages and tutorials listed on the [options page][]. ## Our example + An animated gif showing a Flutter app in use. It starts with the user on a login screen. They log in and are taken to the catalog screen, with a list of items. The click on several items, and as they do so, the items are marked as "added". The user clicks on a button and gets taken to the cart view. They see the items there. They go back to the catalog, and the items they bought still show "added". End of animation. For illustration, consider the following simple app. diff --git a/src/content/deployment/android.md b/src/content/deployment/android.md index 51a4a38b09..bc0a900693 100644 --- a/src/content/deployment/android.md +++ b/src/content/deployment/android.md @@ -262,17 +262,17 @@ Opting in allows Flutter to automatically depend on When you try to build and run your app with the **Run** and **Debug** options in your IDE, your build might fail with the following message: -screenshot of build failure because Multidex support is required +Build failure because Multidex support is required To enable multidex from the command line, run `flutter run --debug` and select an Android device: -screenshot of selecting an Android device +Selecting an Android device with the flutter CLI. When prompted, enter `y`. The Flutter tool enables multidex support and retries the build: -screenshot of a successful build after adding multidex +The output of a successful build after adding multidex. :::note Multidex support is natively included when targeting @@ -528,13 +528,13 @@ In Android Studio, open the existing `android/` folder under your app's folder. Then, select **build.gradle (Module: app)** in the project panel: -screenshot of gradle build script menu +The Gradle build script menu in Android Studio. Next, select the build variant. Click **Build > Select Build Variant** in the main menu. Select any of the variants in the **Build Variants** panel (debug is the default): -screenshot of build variant menu +The build variant menu in Android Studio with Release selected. The resulting app bundle or APK files are located in `build/app/outputs` within your app's folder. diff --git a/src/content/get-started/codelab-web.md b/src/content/get-started/codelab-web.md index 7e4a2cb07c..f07222ce41 100644 --- a/src/content/get-started/codelab-web.md +++ b/src/content/get-started/codelab-web.md @@ -20,7 +20,7 @@ does work on mobile and desktop once you download and configure the appropriate tooling. ::: -The web app that you'll be building +The web app that you'll be building. This is a guide to creating your first Flutter **web** app. If you are familiar with object-oriented programming, diff --git a/src/content/get-started/flutter-for/declarative.md b/src/content/get-started/flutter-for/declarative.md index f5b9d5c491..dd78ab05d5 100644 --- a/src/content/get-started/flutter-for/declarative.md +++ b/src/content/get-started/flutter-for/declarative.md @@ -29,7 +29,7 @@ This, however, requires a slight shift in thinking for how to manipulate UI. Consider a simplified example below: -View B (contained by view A) morphs from containing two views, c1 and c2, to containing only view c3 +View B (contained by view A) morphs from containing two views, c1 and c2, to containing only view c3. In the imperative style, you would typically go to ViewB's owner and retrieve the instance `b` using selectors or with `findViewById` or similar, diff --git a/src/content/get-started/flutter-for/swiftui-devs.md b/src/content/get-started/flutter-for/swiftui-devs.md index 11a5852dc6..6fe791582c 100644 --- a/src/content/get-started/flutter-for/swiftui-devs.md +++ b/src/content/get-started/flutter-for/swiftui-devs.md @@ -141,7 +141,7 @@ UnconstrainedBox( ) ``` -When parents pass unbounded constraints to children, and the children are expanding, then there is an overflow warning +When parents pass unbounded constraints to children, and the children are expanding, then there is an overflow warning. To learn how constraints work in Flutter, see [Understanding constraints][]. diff --git a/src/content/platform-integration/ios/app-extensions.md b/src/content/platform-integration/ios/app-extensions.md index 0de933a349..d8e9da2c99 100644 --- a/src/content/platform-integration/ios/app-extensions.md +++ b/src/content/platform-integration/ios/app-extensions.md @@ -32,10 +32,9 @@ add the extension point *target* to your Xcode project. Flutter project directory. 1. In Xcode, select **File -> New -> Target** from the menu bar. -
+
- + Opening the File -> New menu, then selecting Target in Xcode.
1. Select the app extension you intend to add. @@ -97,7 +96,7 @@ To add a target to an App Group: 1. Select an App Group from the list. 1. Click **+** to add a new App Group. -{% include docs/app-figure.md image="development/platform-integration/app-extensions/xcode-app-groups.png" %} +{% include docs/app-figure.md image="development/platform-integration/app-extensions/xcode-app-groups.png" alt="Selecting an App Group within an Xcode Runner target configuration." %} When two targets belong to the same App Group, they can read from and write to the same source. @@ -135,10 +134,9 @@ share content with other apps, such as sharing a picture to create a new post on a social media app. -
+
- + An example of an entry added to the share menu by a Flutter app
@@ -174,10 +172,9 @@ use an iOS simulator to test your extension in debug mode. share extension's frameworks and libraries list. Make sure the embed column says "Embed & Sign". -
+
- + The Flutter.xcframework file being marked as Embed & Sign in Xcode.
@@ -192,10 +189,9 @@ use an iOS simulator to test your extension in debug mode. **Based on configuration file** drop-down menu for your extension matches the one selected for the normal app target. -
+
- + An example Xcode Runner configuration with each property set to: Based on configuration file.
@@ -212,10 +208,9 @@ use an iOS simulator to test your extension in debug mode. you should omit the `.` portion.
-
+
- + Setting the NSExtensionPrincipalClass property in the Info.plist file within Xcode.
diff --git a/src/content/release/breaking-changes/flutter-driver-migration.md b/src/content/release/breaking-changes/flutter-driver-migration.md index c62a8cd69e..de37e6720f 100644 --- a/src/content/release/breaking-changes/flutter-driver-migration.md +++ b/src/content/release/breaking-changes/flutter-driver-migration.md @@ -1,6 +1,6 @@ --- title: Migrating from flutter_driver -description: > +description: >- Learn how to migrate existing flutter_driver tests to integration_test. --- @@ -26,13 +26,11 @@ functionality: * On the right, there's a details screen that displays the plant name and species. * On app start, when no plant is selected, a text asking the user to select -a plant is displayed + a plant is displayed * The list of plants is loaded from a local JSON file located in the - assets folder. + `/assets` folder. - +Starter project screenshot You can find the full code example in the [Example Project][] folder. @@ -56,7 +54,7 @@ This file won't be necessary anymore when using `integration_test`. To start using the `integration_test` package, add the `integration_test` to -your pubspec.yaml file if you haven't yet: +your `pubspec.yaml` file if you haven't yet: ```yaml dev_dependencies: From 835630b223c0e2527e192f8529622e88487c82b5 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Sat, 4 May 2024 01:22:35 +0900 Subject: [PATCH 036/109] Migrate misc docregion names to new style (#10503) Contributes to https://github.com/flutter/website/issues/10384 --- .../json/lib/manual/main.dart | 12 ++++----- .../json/lib/serializable/main.dart | 8 +++--- .../platform_integration/lib/c_interop.dart | 8 +++--- .../lib/pigeon_source.dart | 4 +-- .../lib/platform_channels.dart | 16 ++++++------ .../platform_views/native_view_example_1.dart | 8 +++--- .../platform_views/native_view_example_2.dart | 8 +++--- .../platform_views/native_view_example_3.dart | 8 +++--- .../platform_integration/lib/use_pigeon.dart | 4 +-- .../plugin_api_migration/lib/css_colors.dart | 4 +-- .../plugin_api_migration/lib/test.dart | 6 ++--- .../lib/url_launcher.dart | 6 ++--- .../tools/lib/hot-reload/after.dart | 24 ++++++++--------- .../tools/lib/hot-reload/before.dart | 20 +++++++------- .../tools/lib/hot-reload/foo_const.dart | 4 +-- .../tools/lib/hot-reload/getter.dart | 4 +-- .../gen_l10n_example/pubspec.yaml | 8 +++--- .../simple/lib/src/performance.dart | 12 ++++----- .../state_mgmt/simple/lib/src/provider.dart | 4 +-- .../state_mgmt/simple/lib/src/set_state.dart | 8 +++--- .../data-and-backend/serialization/json.md | 10 +++---- .../state-mgmt/ephemeral-vs-app.md | 2 +- .../data-and-backend/state-mgmt/simple.md | 8 +++--- .../packages-and-plugins/using-packages.md | 4 +-- .../android/platform-views.md | 8 +++--- .../ios/platform-views.md | 4 +-- .../platform-integration/platform-channels.md | 12 ++++----- .../breaking-changes/plugin-api-migration.md | 2 +- src/content/tools/hot-reload.md | 26 +++++++++---------- .../internationalization.md | 4 +-- 30 files changed, 126 insertions(+), 130 deletions(-) diff --git a/examples/development/data-and-backend/json/lib/manual/main.dart b/examples/development/data-and-backend/json/lib/manual/main.dart index 125d0ce03a..327a2c8379 100644 --- a/examples/development/data-and-backend/json/lib/manual/main.dart +++ b/examples/development/data-and-backend/json/lib/manual/main.dart @@ -2,14 +2,14 @@ import 'dart:convert'; import 'user.dart'; -// #docregion JSON +// #docregion multiline-json const jsonString = ''' { "name": "John Smith", "email": "john@example.com" } '''; -// #enddocregion JSON +// #enddocregion multiline-json void example() { // #docregion manual @@ -21,16 +21,16 @@ void example() { } void exampleJson() { - // #docregion fromJson + // #docregion from-json final userMap = jsonDecode(jsonString) as Map; final user = User.fromJson(userMap); print('Howdy, ${user.name}!'); print('We sent the verification link to ${user.email}.'); - // #enddocregion fromJson + // #enddocregion from-json - // #docregion jsonEncode + // #docregion json-encode // ignore: unused_local_variable String json = jsonEncode(user); - // #enddocregion jsonEncode + // #enddocregion json-encode } diff --git a/examples/development/data-and-backend/json/lib/serializable/main.dart b/examples/development/data-and-backend/json/lib/serializable/main.dart index a874aeb5a7..db60efbf26 100644 --- a/examples/development/data-and-backend/json/lib/serializable/main.dart +++ b/examples/development/data-and-backend/json/lib/serializable/main.dart @@ -10,16 +10,16 @@ const jsonString = ''' '''; void exampleJson() { - // #docregion fromJson + // #docregion from-json final userMap = jsonDecode(jsonString) as Map; final user = User.fromJson(userMap); - // #enddocregion fromJson + // #enddocregion from-json print('Howdy, ${user.name}!'); print('We sent the verification link to ${user.email}.'); - // #docregion jsonEncode + // #docregion json-encode // ignore: unused_local_variable String json = jsonEncode(user); - // #enddocregion jsonEncode + // #enddocregion json-encode } diff --git a/examples/development/platform_integration/lib/c_interop.dart b/examples/development/platform_integration/lib/c_interop.dart index 87e8ed4551..32110162f8 100644 --- a/examples/development/platform_integration/lib/c_interop.dart +++ b/examples/development/platform_integration/lib/c_interop.dart @@ -1,14 +1,14 @@ -// #docregion DynamicLibrary +// #docregion dynamic-library import 'dart:ffi'; // For FFI import 'dart:io'; // For Platform.isX final DynamicLibrary nativeAddLib = Platform.isAndroid ? DynamicLibrary.open('libnative_add.so') : DynamicLibrary.process(); -// #enddocregion DynamicLibrary +// #enddocregion dynamic-library -// #docregion NativeAdd +// #docregion search final int Function(int x, int y) nativeAdd = nativeAddLib .lookup>('native_add') .asFunction(); -// #enddocregion NativeAdd +// #enddocregion native-add diff --git a/examples/development/platform_integration/lib/pigeon_source.dart b/examples/development/platform_integration/lib/pigeon_source.dart index eaf50b60b7..a5ea1de44e 100644 --- a/examples/development/platform_integration/lib/pigeon_source.dart +++ b/examples/development/platform_integration/lib/pigeon_source.dart @@ -2,7 +2,7 @@ // ignore_for_file: one_member_abstracts // dart run pigeon --input lib/pigeon_source.dart --dart_out lib/generated_pigeon.dart -// #docregion Search +// #docregion search import 'package:pigeon/pigeon.dart'; class SearchRequest { @@ -22,4 +22,4 @@ abstract class Api { @async SearchReply search(SearchRequest request); } -// #enddocregion Search +// #enddocregion search diff --git a/examples/development/platform_integration/lib/platform_channels.dart b/examples/development/platform_integration/lib/platform_channels.dart index 3d8a91537e..37babafaf8 100644 --- a/examples/development/platform_integration/lib/platform_channels.dart +++ b/examples/development/platform_integration/lib/platform_channels.dart @@ -1,8 +1,8 @@ -// #docregion Import +// #docregion import import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -// #enddocregion Import +// #enddocregion import class MyHomePage extends StatefulWidget { const MyHomePage({super.key}); @@ -11,12 +11,12 @@ class MyHomePage extends StatefulWidget { State createState() => _MyHomePageState(); } -// #docregion MyHomePageState +// #docregion my-home-page-state class _MyHomePageState extends State { static const platform = MethodChannel('samples.flutter.dev/battery'); - // #docregion GetBattery + // #docregion get-battery // Get battery level. -// #enddocregion MyHomePageState +// #enddocregion my-home-page-state String _batteryLevel = 'Unknown battery level.'; Future _getBatteryLevel() async { @@ -32,9 +32,9 @@ class _MyHomePageState extends State { _batteryLevel = batteryLevel; }); } - // #enddocregion GetBattery + // #enddocregion get-battery -// #docregion Build + // #docregion build @override Widget build(BuildContext context) { return Material( @@ -52,5 +52,5 @@ class _MyHomePageState extends State { ), ); } -// #enddocregion Build + // #enddocregion build } diff --git a/examples/development/platform_integration/lib/platform_views/native_view_example_1.dart b/examples/development/platform_integration/lib/platform_views/native_view_example_1.dart index f4952d6e35..259f7c7f19 100644 --- a/examples/development/platform_integration/lib/platform_views/native_view_example_1.dart +++ b/examples/development/platform_integration/lib/platform_views/native_view_example_1.dart @@ -1,16 +1,16 @@ -// #docregion Import +// #docregion import import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart'; -// #enddocregion Import +// #enddocregion import class HybridCompositionWidget extends StatelessWidget { const HybridCompositionWidget({super.key}); @override - // #docregion HybridCompositionWidget + // #docregion hybrid-composition Widget build(BuildContext context) { // This is used in the platform side to register the view. const String viewType = ''; @@ -42,5 +42,5 @@ class HybridCompositionWidget extends StatelessWidget { }, ); } - // #enddocregion HybridCompositionWidget + // #enddocregion hybrid-composition } diff --git a/examples/development/platform_integration/lib/platform_views/native_view_example_2.dart b/examples/development/platform_integration/lib/platform_views/native_view_example_2.dart index b9d482a4d2..98af6d7497 100644 --- a/examples/development/platform_integration/lib/platform_views/native_view_example_2.dart +++ b/examples/development/platform_integration/lib/platform_views/native_view_example_2.dart @@ -1,13 +1,13 @@ -// #docregion Import +// #docregion import import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -// #enddocregion Import +// #enddocregion import class VirtualDisplayWidget extends StatelessWidget { const VirtualDisplayWidget({super.key}); @override - // #docregion VirtualDisplayWidget + // #docregion virtual-display Widget build(BuildContext context) { // This is used in the platform side to register the view. const String viewType = ''; @@ -21,5 +21,5 @@ class VirtualDisplayWidget extends StatelessWidget { creationParamsCodec: const StandardMessageCodec(), ); } - // #enddocregion VirtualDisplayWidget + // #enddocregion virtual-display } diff --git a/examples/development/platform_integration/lib/platform_views/native_view_example_3.dart b/examples/development/platform_integration/lib/platform_views/native_view_example_3.dart index 961e86dc38..605a4468ed 100644 --- a/examples/development/platform_integration/lib/platform_views/native_view_example_3.dart +++ b/examples/development/platform_integration/lib/platform_views/native_view_example_3.dart @@ -10,7 +10,7 @@ class IOSCompositionWidget extends StatelessWidget { const IOSCompositionWidget({super.key}); @override - // #docregion iOSCompositionWidget + // #docregion ios-composition Widget build(BuildContext context) { // This is used in the platform side to register the view. const String viewType = ''; @@ -24,14 +24,14 @@ class IOSCompositionWidget extends StatelessWidget { creationParamsCodec: const StandardMessageCodec(), ); } - // #enddocregion iOSCompositionWidget + // #enddocregion ios-composition } class TogetherWidget extends StatelessWidget { const TogetherWidget({super.key}); @override - // #docregion TogetherWidget + // #docregion together-widget Widget build(BuildContext context) { // This is used in the platform side to register the view. const String viewType = ''; @@ -47,5 +47,5 @@ class TogetherWidget extends StatelessWidget { throw UnsupportedError('Unsupported platform view'); } } - // #enddocregion TogetherWidget + // #enddocregion together-widget } diff --git a/examples/development/platform_integration/lib/use_pigeon.dart b/examples/development/platform_integration/lib/use_pigeon.dart index 9202e7d098..6c03a42abf 100644 --- a/examples/development/platform_integration/lib/use_pigeon.dart +++ b/examples/development/platform_integration/lib/use_pigeon.dart @@ -1,6 +1,6 @@ // ignore_for_file: avoid_print -// #docregion UseApi +// #docregion use-api import 'generated_pigeon.dart'; Future onClick() async { @@ -9,6 +9,6 @@ Future onClick() async { SearchReply reply = await api.search(request); print('reply: ${reply.result}'); } -// #enddocregion UseApi +// #enddocregion use-api class SomeApi extends Api {} diff --git a/examples/development/plugin_api_migration/lib/css_colors.dart b/examples/development/plugin_api_migration/lib/css_colors.dart index 50ceffc351..c32841c67a 100644 --- a/examples/development/plugin_api_migration/lib/css_colors.dart +++ b/examples/development/plugin_api_migration/lib/css_colors.dart @@ -1,4 +1,4 @@ -// #docregion CssColors +// #docregion css-colors import 'package:css_colors/css_colors.dart'; import 'package:flutter/material.dart'; @@ -25,4 +25,4 @@ class DemoPage extends StatelessWidget { return Scaffold(body: Container(color: CSSColors.orange)); } } -// #enddocregion CssColors +// #enddocregion css-colors diff --git a/examples/development/plugin_api_migration/lib/test.dart b/examples/development/plugin_api_migration/lib/test.dart index 79492bad15..44fd195b0c 100644 --- a/examples/development/plugin_api_migration/lib/test.dart +++ b/examples/development/plugin_api_migration/lib/test.dart @@ -1,7 +1,5 @@ -// ignore_for_file: import_of_legacy_library_into_null_safe - import 'package:battery/battery.dart'; -// #docregion Test +// #docregion test import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; @@ -14,4 +12,4 @@ void main() { expect(batteryLevel, isNotNull); }); } -// #enddocregion Test +// #enddocregion test diff --git a/examples/development/plugin_api_migration/lib/url_launcher.dart b/examples/development/plugin_api_migration/lib/url_launcher.dart index 4055481241..3cab2d8209 100644 --- a/examples/development/plugin_api_migration/lib/url_launcher.dart +++ b/examples/development/plugin_api_migration/lib/url_launcher.dart @@ -1,6 +1,4 @@ -// ignore_for_file: import_of_legacy_library_into_null_safe - -// #docregion UrlLauncher +// #docregion url-launcher import 'package:flutter/material.dart'; import 'package:path/path.dart' as p; import 'package:url_launcher/url_launcher.dart'; @@ -39,4 +37,4 @@ class DemoPage extends StatelessWidget { ); } } -// #enddocregion UrlLauncher +// #enddocregion url-launcher diff --git a/examples/development/tools/lib/hot-reload/after.dart b/examples/development/tools/lib/hot-reload/after.dart index dbbccc3d60..15f809a0ad 100644 --- a/examples/development/tools/lib/hot-reload/after.dart +++ b/examples/development/tools/lib/hot-reload/after.dart @@ -2,30 +2,30 @@ import 'package:flutter/material.dart'; -// #docregion Main +// #docregion main import 'package:flutter/widgets.dart'; void main() { runApp(const Center(child: Text('Hello', textDirection: TextDirection.ltr))); } -// #enddocregion Main +// #enddocregion main -// #docregion Enum +// #docregion enum class Color { Color(this.i, this.j); final int i; final int j; } -// #enddocregion Enum +// #enddocregion enum -// #docregion Class +// #docregion class class A { T? i; V? v; } -// #enddocregion Class +// #enddocregion class -// #docregion SampleTable +// #docregion sample-table final sampleTable = [ Table( children: const [ @@ -56,15 +56,15 @@ final sampleTable = [ ], ), ]; -// #enddocregion SampleTable +// #enddocregion sample-table -// #docregion Const +// #docregion const const foo = 2; // modified -// #docregion FinalFoo +// #docregion final-foo final bar = foo; -// #enddocregion FinalFoo +// #enddocregion final-foo void onClick() { print(foo); print(bar); } -// #enddocregion Const +// #enddocregion const diff --git a/examples/development/tools/lib/hot-reload/before.dart b/examples/development/tools/lib/hot-reload/before.dart index b56c1c5272..f372805c28 100644 --- a/examples/development/tools/lib/hot-reload/before.dart +++ b/examples/development/tools/lib/hot-reload/before.dart @@ -1,6 +1,6 @@ // ignore_for_file: avoid_print, prefer_const_declarations, prefer_const_constructors -// #docregion Build +// #docregion build import 'package:flutter/material.dart'; void main() { @@ -15,23 +15,23 @@ class MyApp extends StatelessWidget { return GestureDetector(onTap: () => print('tapped')); } } -// #enddocregion Build +// #enddocregion build -// #docregion Enum +// #docregion enum enum Color { red, green, blue, } -// #enddocregion Enum +// #enddocregion enum -// #docregion Class +// #docregion class class A { T? i; } -// #enddocregion Class +// #enddocregion class -// #docregion SampleTable +// #docregion sample-table final sampleTable = [ Table( children: const [ @@ -62,13 +62,13 @@ final sampleTable = [ ], ), ]; -// #enddocregion SampleTable +// #enddocregion sample-table -// #docregion Const +// #docregion const const foo = 1; final bar = foo; void onClick() { print(foo); print(bar); } -// #enddocregion Const +// #enddocregion const diff --git a/examples/development/tools/lib/hot-reload/foo_const.dart b/examples/development/tools/lib/hot-reload/foo_const.dart index 2cbf3b9de7..95d5c93294 100644 --- a/examples/development/tools/lib/hot-reload/foo_const.dart +++ b/examples/development/tools/lib/hot-reload/foo_const.dart @@ -1,10 +1,10 @@ // ignore_for_file: avoid_print -// #docregion Const +// #docregion const const foo = 1; const bar = foo; // Convert foo to a const... void onClick() { print(foo); print(bar); } -// #enddocregion Const +// #enddocregion const diff --git a/examples/development/tools/lib/hot-reload/getter.dart b/examples/development/tools/lib/hot-reload/getter.dart index 5a7909a6af..df37f48280 100644 --- a/examples/development/tools/lib/hot-reload/getter.dart +++ b/examples/development/tools/lib/hot-reload/getter.dart @@ -1,10 +1,10 @@ // ignore_for_file: avoid_print -// #docregion Const +// #docregion const const foo = 1; int get bar => foo; // ...or provide a getter. void onClick() { print(foo); print(bar); } -// #enddocregion Const +// #enddocregion const diff --git a/examples/internationalization/gen_l10n_example/pubspec.yaml b/examples/internationalization/gen_l10n_example/pubspec.yaml index 9a351e0681..6ef3c7a75c 100644 --- a/examples/internationalization/gen_l10n_example/pubspec.yaml +++ b/examples/internationalization/gen_l10n_example/pubspec.yaml @@ -6,22 +6,22 @@ description: >- environment: sdk: ^3.3.0 -# #docregion FlutterLocalizations +# #docregion flutter-localizations dependencies: flutter: sdk: flutter flutter_localizations: sdk: flutter intl: any -# #enddocregion FlutterLocalizations +# #enddocregion flutter-localizations dev_dependencies: example_utils: path: ../../example_utils -# #docregion Generate +# #docregion generate # The following section is specific to Flutter. flutter: generate: true # Add this line -# #enddocregion Generate +# #enddocregion generate uses-material-design: true diff --git a/examples/state_mgmt/simple/lib/src/performance.dart b/examples/state_mgmt/simple/lib/src/performance.dart index c1c0f34690..6c04a27ff4 100644 --- a/examples/state_mgmt/simple/lib/src/performance.dart +++ b/examples/state_mgmt/simple/lib/src/performance.dart @@ -35,7 +35,7 @@ class DescendantInLeafNode_Good extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion leafDescendant + // #docregion leaf-descendant // DO THIS return HumongousWidget( // ... @@ -48,7 +48,7 @@ class DescendantInLeafNode_Good extends StatelessWidget { ), ), ); - // #enddocregion leafDescendant + // #enddocregion leaf-descendant } } @@ -57,7 +57,7 @@ class DescendantNotInLeafNode_Bad extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion nonLeafDescendant + // #docregion non-leaf-descendant // DON'T DO THIS return Consumer( builder: (context, cart, child) { @@ -70,7 +70,7 @@ class DescendantNotInLeafNode_Bad extends StatelessWidget { ); }, ); - // #enddocregion nonLeafDescendant + // #enddocregion non-leaf-descendant } } @@ -112,9 +112,9 @@ class NonRebuilding_Good extends StatelessWidget { } void _onPressed(BuildContext context) { - // #docregion nonRebuilding + // #docregion non-rebuilding Provider.of(context, listen: false).removeAll(); - // #enddocregion nonRebuilding + // #enddocregion non-rebuilding } } diff --git a/examples/state_mgmt/simple/lib/src/provider.dart b/examples/state_mgmt/simple/lib/src/provider.dart index 71b86ad963..97aa610f33 100644 --- a/examples/state_mgmt/simple/lib/src/provider.dart +++ b/examples/state_mgmt/simple/lib/src/provider.dart @@ -111,13 +111,13 @@ class MyCatalogItem extends StatelessWidget { ); } - // #docregion myTapHandler + // #docregion my-tap-handler // GOOD void myTapHandler(BuildContext context) { var cartModel = somehowGetMyCartModel(context); cartModel.add(item); } - // #enddocregion myTapHandler + // #enddocregion my-tap-handler } class MyHomepage extends StatelessWidget { diff --git a/examples/state_mgmt/simple/lib/src/set_state.dart b/examples/state_mgmt/simple/lib/src/set_state.dart index 623e82926f..a8866cdf6e 100644 --- a/examples/state_mgmt/simple/lib/src/set_state.dart +++ b/examples/state_mgmt/simple/lib/src/set_state.dart @@ -14,7 +14,7 @@ class HelperScaffoldWrapper extends StatelessWidget { } } -// #docregion Ephemeral +// #docregion ephemeral class MyHomepage extends StatefulWidget { const MyHomepage({super.key}); @@ -34,13 +34,13 @@ class _MyHomepageState extends State { _index = newIndex; }); }, - // #enddocregion Ephemeral + // #enddocregion ephemeral items: const [ BottomNavigationBarItem(label: 'abc', icon: Icon(Icons.title)), BottomNavigationBarItem(label: 'def', icon: Icon(Icons.map)), ], - // #docregion Ephemeral + // #docregion ephemeral ); } } -// #enddocregion Ephemeral +// #enddocregion ephemeral diff --git a/src/content/data-and-backend/serialization/json.md b/src/content/data-and-backend/serialization/json.md index 7a76a3a6d9..16922869d7 100644 --- a/src/content/data-and-backend/serialization/json.md +++ b/src/content/data-and-backend/serialization/json.md @@ -114,7 +114,7 @@ decoder. The following sample JSON implements a simple user model. - + ```json { "name": "John Smith", @@ -187,7 +187,7 @@ class User { The responsibility of the decoding logic is now moved inside the model itself. With this new approach, you can decode a user easily. - + ```dart final userMap = jsonDecode(jsonString) as Map; final user = User.fromJson(userMap); @@ -200,7 +200,7 @@ To encode a user, pass the `User` object to the `jsonEncode()` function. You don't need to call the `toJson()` method, since `jsonEncode()` already does it for you. - + ```dart String json = jsonEncode(user); ``` @@ -387,14 +387,14 @@ It is safe to start the watcher once and leave it running in the background. To decode a JSON string the `json_serializable` way, you do not have actually to make any changes to our previous code. - + ```dart final userMap = jsonDecode(jsonString) as Map; final user = User.fromJson(userMap); ``` The same goes for encoding. The calling API is the same as before. - + ```dart String json = jsonEncode(user); ``` diff --git a/src/content/data-and-backend/state-mgmt/ephemeral-vs-app.md b/src/content/data-and-backend/state-mgmt/ephemeral-vs-app.md index d91810e3be..859a6f7d8d 100644 --- a/src/content/data-and-backend/state-mgmt/ephemeral-vs-app.md +++ b/src/content/data-and-backend/state-mgmt/ephemeral-vs-app.md @@ -47,7 +47,7 @@ Below, you see how the currently selected item in a bottom navigation bar is held in the `_index` field of the `_MyHomepageState` class. In this example, `_index` is ephemeral state. - + ```dart class MyHomepage extends StatefulWidget { const MyHomepage({super.key}); diff --git a/src/content/data-and-backend/state-mgmt/simple.md b/src/content/data-and-backend/state-mgmt/simple.md index 7ccac11934..f0b17c12dd 100644 --- a/src/content/data-and-backend/state-mgmt/simple.md +++ b/src/content/data-and-backend/state-mgmt/simple.md @@ -106,7 +106,7 @@ construct new widgets in the build methods of their parents, if you want to change `contents`, it needs to live in `MyCart`'s parent or above. - + ```dart // GOOD void myTapHandler(BuildContext context) { @@ -386,7 +386,7 @@ It is best practice to put your `Consumer` widgets as deep in the tree as possible. You don't want to rebuild large portions of the UI just because some detail somewhere changed. - + ```dart // DON'T DO THIS return Consumer( @@ -404,7 +404,7 @@ return Consumer( Instead: - + ```dart // DO THIS return HumongousWidget( @@ -435,7 +435,7 @@ rebuild a widget that doesn't need to be rebuilt. For this use case, we can use `Provider.of`, with the `listen` parameter set to `false`. - + ```dart Provider.of(context, [!listen: false!]).removeAll(); ``` diff --git a/src/content/packages-and-plugins/using-packages.md b/src/content/packages-and-plugins/using-packages.md index dac7a48083..4c756b452e 100644 --- a/src/content/packages-and-plugins/using-packages.md +++ b/src/content/packages-and-plugins/using-packages.md @@ -385,7 +385,7 @@ To use this package: 1. Open `lib/main.dart` and replace its full contents with: - + ```dart import 'package:css_colors/css_colors.dart'; import 'package:flutter/material.dart'; @@ -448,7 +448,7 @@ To use this plugin: 1. Open `lib/main.dart` and replace its full contents with the following: - + ```dart import 'package:flutter/material.dart'; import 'package:path/path.dart' as p; diff --git a/src/content/platform-integration/android/platform-views.md b/src/content/platform-integration/android/platform-views.md index c5d9578eec..66cf36a685 100644 --- a/src/content/platform-integration/android/platform-views.md +++ b/src/content/platform-integration/android/platform-views.md @@ -66,7 +66,7 @@ use the following instructions: 1. Add the following imports: - + ```dart import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; @@ -77,7 +77,7 @@ use the following instructions: 2. Implement a `build()` method: - + ```dart Widget build(BuildContext context) { // This is used in the platform side to register the view. @@ -130,7 +130,7 @@ use the following instructions: 1. Add the following imports: - + ```dart import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -138,7 +138,7 @@ use the following instructions: 2. Implement a `build()` method: - + ```dart Widget build(BuildContext context) { // This is used in the platform side to register the view. diff --git a/src/content/platform-integration/ios/platform-views.md b/src/content/platform-integration/ios/platform-views.md index da779383f4..714828f36d 100644 --- a/src/content/platform-integration/ios/platform-views.md +++ b/src/content/platform-integration/ios/platform-views.md @@ -58,7 +58,7 @@ import 'package:flutter/services.dart'; Implement a `build()` method: - + ```dart Widget build(BuildContext context) { // This is used in the platform side to register the view. @@ -354,7 +354,7 @@ When implementing the `build()` method in Dart, you can use [`defaultTargetPlatform`][] to detect the platform, and decide which widget to use: - + ```dart Widget build(BuildContext context) { // This is used in the platform side to register the view. diff --git a/src/content/platform-integration/platform-channels.md b/src/content/platform-integration/platform-channels.md index 7dc7b06253..71893cfae7 100644 --- a/src/content/platform-integration/platform-channels.md +++ b/src/content/platform-integration/platform-channels.md @@ -272,13 +272,13 @@ All channel names used in a single app must be unique; prefix the channel name with a unique 'domain prefix', for example: `samples.flutter.dev/battery`. - + ```dart import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; ``` - + ```dart class _MyHomePageState extends State { static const platform = MethodChannel('samples.flutter.dev/battery'); @@ -296,7 +296,7 @@ so wrap the `invokeMethod` call in a try-catch statement. Use the returned result to update the user interface state in `_batteryLevel` inside `setState`. - + ```dart // Get battery level. String _batteryLevel = 'Unknown battery level.'; @@ -320,7 +320,7 @@ Finally, replace the `build` method from the template to contain a small user interface that displays the battery state in a string, and a button for refreshing the value. - + ```dart @override Widget build(BuildContext context) { @@ -1139,7 +1139,7 @@ and Swift (with Objective-C interop). **Pigeon file:** - + ```dart import 'package:pigeon/pigeon.dart'; @@ -1164,7 +1164,7 @@ abstract class Api { **Dart usage:** - + ```dart import 'generated_pigeon.dart'; diff --git a/src/content/release/breaking-changes/plugin-api-migration.md b/src/content/release/breaking-changes/plugin-api-migration.md index 865663f15e..94f56c2463 100644 --- a/src/content/release/breaking-changes/plugin-api-migration.md +++ b/src/content/release/breaking-changes/plugin-api-migration.md @@ -246,7 +246,7 @@ but aren't required. This is a smoke test to ensure that the plugin properly registers with the new embedder. For example: - + ```dart import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; diff --git a/src/content/tools/hot-reload.md b/src/content/tools/hot-reload.md index 3d59c4a4fe..df2c0a07cd 100644 --- a/src/content/tools/hot-reload.md +++ b/src/content/tools/hot-reload.md @@ -122,7 +122,7 @@ changed to enumerated types. For example: Before the change: - + ```dart enum Color { red, @@ -132,7 +132,7 @@ enum Color { ``` After the change: - + ```dart class Color { Color(this.i, this.j); @@ -147,7 +147,7 @@ Hot reload won't work when generic type declarations are modified. For example, the following won't work: Before the change: - + ```dart class A { T? i; @@ -155,7 +155,7 @@ class A { ``` After the change: - + ```dart class A { T? i; @@ -199,7 +199,7 @@ a hot restart or restart the state where the initializers are hold is necessary to see the changes. For example, consider the following code: - + ```dart final sampleTable = [ Table( @@ -235,7 +235,7 @@ final sampleTable = [ After running the app, you make the following change: - + ```dart final sampleTable = [ Table( @@ -273,7 +273,7 @@ You hot reload, but the change is not reflected. Conversely, in the following example: - + ```dart const foo = 1; final bar = foo; @@ -286,7 +286,7 @@ void onClick() { Running the app for the first time prints `1` and `1`. Then, you make the following change: - + ```dart const foo = 2; // modified final bar = foo; @@ -306,7 +306,7 @@ The flagging mechanism is triggered for most of the initialization work in the above example, but not for cases like the following: - + ```dart final bar = foo; ``` @@ -316,7 +316,7 @@ consider redefining the field as `const` or using a getter to return the value, rather than using `final`. For example, either of the following solutions work: - + ```dart const foo = 1; const bar = foo; // Convert foo to a const... @@ -326,7 +326,7 @@ void onClick() { } ``` - + ```dart const foo = 1; int get bar => foo; // ...or provide a getter. @@ -354,7 +354,7 @@ see its effects after hot reload. For example, consider the following code: - + ```dart import 'package:flutter/material.dart'; @@ -374,7 +374,7 @@ class MyApp extends StatelessWidget { After running this app, change the code as follows: - + ```dart import 'package:flutter/widgets.dart'; diff --git a/src/content/ui/accessibility-and-internationalization/internationalization.md b/src/content/ui/accessibility-and-internationalization/internationalization.md index 11312bd575..b73d5e1c8e 100644 --- a/src/content/ui/accessibility-and-internationalization/internationalization.md +++ b/src/content/ui/accessibility-and-internationalization/internationalization.md @@ -76,7 +76,7 @@ $ flutter pub add intl:any This creates a `pubspec.yml` file with the following entries: - + ```yaml dependencies: flutter: @@ -216,7 +216,7 @@ complete the following instructions: 2. Open the `pubspec.yaml` file and enable the `generate` flag. This flag is found in the `flutter` section in the pubspec file. - + ```yaml # The following section is specific to Flutter. flutter: From 25d8baeeacd1ba85d6b5d555f8a1642e900077ab Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Sat, 4 May 2024 01:23:12 +0900 Subject: [PATCH 037/109] Update and migrate ui example docregions (#10501) Contributes to https://github.com/flutter/website/issues/10384 --- .github/dependabot.yml | 2 +- .../ui/interactive/analysis_options.yaml | 0 .../ui/interactive/lib/mixed.dart | 0 .../ui/interactive/lib/parent_managed.dart | 0 .../ui/interactive/lib/self_managed.dart | 0 .../ui/interactive/pubspec.yaml | 2 +- .../lib/global/device_size.dart | 20 +++---- .../lib/global/device_type.dart | 12 ++--- .../layout/adaptive_app_demos/lib/main.dart | 4 +- .../lib/pages/adaptive_grid_page.dart | 4 +- .../lib/pages/adaptive_reflow_page.dart | 4 +- .../lib/pages/focus_examples_page.dart | 16 +++--- .../lib/widgets/extra_widget_excerpts.dart | 40 +++++++------- .../lib/widgets/ok_cancel_dialog.dart | 4 +- src/content/ui/interactivity/index.md | 2 +- .../responsive/building-adaptive-apps.md | 52 +++++++++---------- 16 files changed, 81 insertions(+), 81 deletions(-) rename examples/{development => }/ui/interactive/analysis_options.yaml (100%) rename examples/{development => }/ui/interactive/lib/mixed.dart (100%) rename examples/{development => }/ui/interactive/lib/parent_managed.dart (100%) rename examples/{development => }/ui/interactive/lib/self_managed.dart (100%) rename examples/{development => }/ui/interactive/pubspec.yaml (86%) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 26b70a4ffa..5dedd56fcb 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -735,7 +735,7 @@ updates: - "lang.dart" - package-ecosystem: "pub" versioning-strategy: "increase-if-necessary" - directory: "/examples/development/ui/interactive" + directory: "/examples/ui/interactive" schedule: interval: "daily" labels: diff --git a/examples/development/ui/interactive/analysis_options.yaml b/examples/ui/interactive/analysis_options.yaml similarity index 100% rename from examples/development/ui/interactive/analysis_options.yaml rename to examples/ui/interactive/analysis_options.yaml diff --git a/examples/development/ui/interactive/lib/mixed.dart b/examples/ui/interactive/lib/mixed.dart similarity index 100% rename from examples/development/ui/interactive/lib/mixed.dart rename to examples/ui/interactive/lib/mixed.dart diff --git a/examples/development/ui/interactive/lib/parent_managed.dart b/examples/ui/interactive/lib/parent_managed.dart similarity index 100% rename from examples/development/ui/interactive/lib/parent_managed.dart rename to examples/ui/interactive/lib/parent_managed.dart diff --git a/examples/development/ui/interactive/lib/self_managed.dart b/examples/ui/interactive/lib/self_managed.dart similarity index 100% rename from examples/development/ui/interactive/lib/self_managed.dart rename to examples/ui/interactive/lib/self_managed.dart diff --git a/examples/development/ui/interactive/pubspec.yaml b/examples/ui/interactive/pubspec.yaml similarity index 86% rename from examples/development/ui/interactive/pubspec.yaml rename to examples/ui/interactive/pubspec.yaml index 8e9cc328c0..a3f1002a9b 100644 --- a/examples/development/ui/interactive/pubspec.yaml +++ b/examples/ui/interactive/pubspec.yaml @@ -10,7 +10,7 @@ dependencies: dev_dependencies: example_utils: - path: ../../../example_utils + path: ../../example_utils flutter: uses-material-design: true diff --git a/examples/ui/layout/adaptive_app_demos/lib/global/device_size.dart b/examples/ui/layout/adaptive_app_demos/lib/global/device_size.dart index 8921b71727..3e7105a97d 100644 --- a/examples/ui/layout/adaptive_app_demos/lib/global/device_size.dart +++ b/examples/ui/layout/adaptive_app_demos/lib/global/device_size.dart @@ -3,15 +3,15 @@ import 'package:flutter/material.dart'; enum ScreenType { handset, tablet, desktop, watch } -// #docregion FormFactor +// #docregion form-factor class FormFactor { static double desktop = 900; static double tablet = 600; static double handset = 300; } -// #enddocregion FormFactor +// #enddocregion form-factor -// #docregion getFormFactor +// #docregion get-form-factor ScreenType getFormFactor(BuildContext context) { // Use .shortestSide to detect device type regardless of orientation double deviceWidth = MediaQuery.of(context).size.shortestSide; @@ -20,9 +20,9 @@ ScreenType getFormFactor(BuildContext context) { if (deviceWidth > FormFactor.handset) return ScreenType.handset; return ScreenType.watch; } -// #enddocregion getFormFactor +// #enddocregion get-form-factor -// #docregion ScreenSize +// #docregion screen-size enum ScreenSize { small, normal, large, extraLarge } ScreenSize getSize(BuildContext context) { @@ -32,7 +32,7 @@ ScreenSize getSize(BuildContext context) { if (deviceWidth > 300) return ScreenSize.normal; return ScreenSize.small; } -// #enddocregion ScreenSize +// #enddocregion screen-size class WidgetWithBreakPoints extends StatelessWidget { const WidgetWithBreakPoints({super.key}); @@ -56,25 +56,25 @@ class WidgetWithBreakPoints extends StatelessWidget { Widget widgetSwap(BuildContext context) { bool isHandset = MediaQuery.of(context).size.width < 600; - // #docregion WidgetSwap + // #docregion widget-swap Widget foo = Row( children: [ ...isHandset ? _getHandsetChildren() : _getNormalChildren(), ], ); - // #enddocregion WidgetSwap + // #enddocregion widget-swap return foo; } @override Widget build(BuildContext context) { - // #docregion MediaQuery + // #docregion media-query bool isHandset = MediaQuery.of(context).size.width < 600; return Flex( direction: isHandset ? Axis.vertical : Axis.horizontal, children: const [Text('Foo'), Text('Bar'), Text('Baz')], ); - // #enddocregion MediaQuery + // #enddocregion media-query } } diff --git a/examples/ui/layout/adaptive_app_demos/lib/global/device_type.dart b/examples/ui/layout/adaptive_app_demos/lib/global/device_type.dart index e3a50df3f6..c6a368091c 100644 --- a/examples/ui/layout/adaptive_app_demos/lib/global/device_type.dart +++ b/examples/ui/layout/adaptive_app_demos/lib/global/device_type.dart @@ -20,16 +20,16 @@ class DeviceType { static bool get isDesktopOrWeb => isDesktop || isWeb; static bool get isMobileOrWeb => isMobile || isWeb; - // #docregion Platforms + // #docregion platforms bool get isMobileDevice => !kIsWeb && (Platform.isIOS || Platform.isAndroid); bool get isDesktopDevice => !kIsWeb && (Platform.isMacOS || Platform.isWindows || Platform.isLinux); bool get isMobileDeviceOrWeb => kIsWeb || isMobileDevice; bool get isDesktopDeviceOrWeb => kIsWeb || isDesktopDevice; - // #enddocregion Platforms + // #enddocregion platforms } -// #docregion Styling +// #docregion styling class Insets { static const double xsmall = 3; static const double small = 4; @@ -59,18 +59,18 @@ class TextStyles { static TextStyle body1 = raleway.copyWith(color: const Color(0xFF42A5F5)); // etc } -// #enddocregion Styling +// #enddocregion styling class MyWidget extends StatelessWidget { const MyWidget({super.key}); @override Widget build(BuildContext context) { - // #docregion UseConstants + // #docregion use-constants return Padding( padding: const EdgeInsets.all(Insets.small), child: Text('Hello!', style: TextStyles.body1), ); - // #enddocregion UseConstants + // #enddocregion use-constants } } diff --git a/examples/ui/layout/adaptive_app_demos/lib/main.dart b/examples/ui/layout/adaptive_app_demos/lib/main.dart index 92d0505166..58c043c2c6 100644 --- a/examples/ui/layout/adaptive_app_demos/lib/main.dart +++ b/examples/ui/layout/adaptive_app_demos/lib/main.dart @@ -27,7 +27,7 @@ class AppScaffold extends StatelessWidget { child: Builder( builder: (context) { bool touchMode = context.select((m) => m.touchMode); - // #docregion VisualDensity + // #docregion visual-density double densityAmt = touchMode ? 0.0 : -1.0; VisualDensity density = VisualDensity(horizontal: densityAmt, vertical: densityAmt); @@ -36,7 +36,7 @@ class AppScaffold extends StatelessWidget { home: MainAppScaffold(), debugShowCheckedModeBanner: false, ); - // #enddocregion VisualDensity + // #enddocregion visual-density }, ), ); diff --git a/examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_grid_page.dart b/examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_grid_page.dart index c2ce5433fc..3a66d46506 100644 --- a/examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_grid_page.dart +++ b/examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_grid_page.dart @@ -54,7 +54,7 @@ class _AdaptiveGridPageState extends State { builder: (context, constraints) { // Calculate how many columns we want depending on available space int colCount = max(1, (constraints.maxWidth / 250).floor()); - // #docregion ScrollbarAlwaysShown + // #docregion scrollbar-always-shown return Scrollbar( thumbVisibility: DeviceType.isDesktop, controller: _scrollController, @@ -66,7 +66,7 @@ class _AdaptiveGridPageState extends State { children: listChildren, ), ); - // #enddocregion ScrollbarAlwaysShown + // #enddocregion scrollbar-always-shown }, ), ), diff --git a/examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_reflow_page.dart b/examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_reflow_page.dart index 2b4b573c3e..d39d85cac5 100644 --- a/examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_reflow_page.dart +++ b/examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_reflow_page.dart @@ -73,9 +73,9 @@ class _ContentPanel extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion VisualDensityOwnView + // #docregion visual-density-own-view VisualDensity density = Theme.of(context).visualDensity; - // #enddocregion VisualDensityOwnView + // #enddocregion visual-density-own-view return ConstrainedBox( constraints: const BoxConstraints(minHeight: 300, minWidth: 300), child: Padding( diff --git a/examples/ui/layout/adaptive_app_demos/lib/pages/focus_examples_page.dart b/examples/ui/layout/adaptive_app_demos/lib/pages/focus_examples_page.dart index 0e5166325a..539c65d385 100644 --- a/examples/ui/layout/adaptive_app_demos/lib/pages/focus_examples_page.dart +++ b/examples/ui/layout/adaptive_app_demos/lib/pages/focus_examples_page.dart @@ -75,7 +75,7 @@ class BasicActionDetector extends StatefulWidget { State createState() => _BasicActionDetectorState(); } -// #docregion _BasicActionDetectorState +// #docregion action-detector-state class _BasicActionDetectorState extends State { bool _hasFocus = false; @override @@ -106,7 +106,7 @@ class _BasicActionDetectorState extends State { ); } } -// #enddocregion _BasicActionDetectorState +// #enddocregion action-detector-state /// Uses [FocusableActionDetector] class ClickableActionDetector extends StatefulWidget { @@ -159,7 +159,7 @@ class ClickableControl extends StatelessWidget { builder: (context) { // Check whether we have focus bool hasFocus = Focus.of(context).hasFocus; - // #docregion MouseRegion + // #docregion mouse-region // Show hand cursor return MouseRegion( cursor: SystemMouseCursors.click, @@ -172,7 +172,7 @@ class ClickableControl extends StatelessWidget { child: Logo(showBorder: hasFocus), ), ); - // #enddocregion MouseRegion + // #enddocregion mouse-region }, ), ); @@ -223,14 +223,14 @@ class MyFocusTraversalWidget extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion FocusTraversalGroup + // #docregion focus-traversal-group return Column(children: [ FocusTraversalGroup( child: MyFormWithMultipleColumnsAndRows(), ), SubmitButton(), ]); - // #enddocregion FocusTraversalGroup + // #enddocregion focus-traversal-group } } @@ -273,7 +273,7 @@ class _MyHoverWidgetState extends State { @override Widget build(BuildContext context) { - // #docregion MouseOver + // #docregion mouse-over return MouseRegion( onEnter: (_) => setState(() => _isMouseOver = true), onExit: (_) => setState(() => _isMouseOver = false), @@ -283,6 +283,6 @@ class _MyHoverWidgetState extends State { color: _isMouseOver ? Colors.blue : Colors.black, ), ); - // #enddocregion MouseOver + // #enddocregion mouse-over } } diff --git a/examples/ui/layout/adaptive_app_demos/lib/widgets/extra_widget_excerpts.dart b/examples/ui/layout/adaptive_app_demos/lib/widgets/extra_widget_excerpts.dart index 328401a578..105024a7f1 100644 --- a/examples/ui/layout/adaptive_app_demos/lib/widgets/extra_widget_excerpts.dart +++ b/examples/ui/layout/adaptive_app_demos/lib/widgets/extra_widget_excerpts.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; Widget layoutBuilderWidget() { - // #docregion LayoutBuilder + // #docregion layout-builder Widget foo = LayoutBuilder(builder: (context, constraints) { bool useVerticalLayout = constraints.maxWidth < 400; return Flex( @@ -16,7 +16,7 @@ Widget layoutBuilderWidget() { ], ); }); - // #enddocregion LayoutBuilder + // #enddocregion layout-builder return foo; } @@ -25,14 +25,14 @@ class ScrollListen extends StatelessWidget { const ScrollListen({super.key}); Widget scrollListener(BuildContext context) { - // #docregion PointerScroll + // #docregion pointer-scroll return Listener( onPointerSignal: (event) { if (event is PointerScrollEvent) print(event.scrollDelta.dy); }, child: ListView(), ); - // #enddocregion PointerScroll + // #enddocregion pointer-scroll } @override @@ -42,7 +42,7 @@ class ScrollListen extends StatelessWidget { } } -// #docregion Shortcuts +// #docregion shortcuts // Define a class for each type of shortcut action you want class CreateNewItemIntent extends Intent { const CreateNewItemIntent(); @@ -70,7 +70,7 @@ Widget build(BuildContext context) { ), ); } -// #enddocregion Shortcuts +// #enddocregion shortcuts void _createNewItem() { // ignore: unnecessary_statements @@ -87,12 +87,12 @@ class MyWidget extends StatefulWidget { } class _MyWidgetState extends State { - // #docregion MultiSelectShift + // #docregion multi-select-shift static bool get isSpanSelectModifierDown => isKeyDown({LogicalKeyboardKey.shiftLeft, LogicalKeyboardKey.shiftRight}); - // #enddocregion MultiSelectShift + // #enddocregion multi-select-shift - // #docregion MultiSelectModifierDown + // #docregion multi-select-modifier-down static bool get isMultiSelectModifierDown { bool isDown = false; if (Platform.isMacOS) { @@ -106,9 +106,9 @@ class _MyWidgetState extends State { } return isDown; } - // #enddocregion MultiSelectModifierDown + // #enddocregion multi-select-modifier-down - // #docregion HandleKey + // #docregion handle-key bool _handleKey(KeyEvent event) { bool isShiftDown = isKeyDown({ LogicalKeyboardKey.shiftLeft, @@ -122,15 +122,15 @@ class _MyWidgetState extends State { return false; } - // #enddocregion HandleKey + // #enddocregion handle-key - // #docregion KeysPressed + // #docregion keys-pressed static bool isKeyDown(Set keys) { return keys .intersection(HardwareKeyboard.instance.logicalKeysPressed) .isNotEmpty; } - // #enddocregion KeysPressed + // #enddocregion keys-pressed // #docregion hardware-keyboard @override @@ -156,13 +156,13 @@ class _MyWidgetState extends State { } Widget selectableTextWidget() { - // #docregion SelectableText + // #docregion selectable-text return const SelectableText('Select me!'); - // #enddocregion SelectableText + // #enddocregion selectable-text } Widget richTextSpan() { - // #docregion RichTextSpan + // #docregion rich-text-span return const SelectableText.rich( TextSpan( children: [ @@ -171,14 +171,14 @@ Widget richTextSpan() { ], ), ); - // #enddocregion RichTextSpan + // #enddocregion rich-text-span } Widget tooltipWidget() { - // #docregion Tooltip + // #docregion tooltip return const Tooltip( message: 'I am a Tooltip', child: Text('Hover over the text to show a tooltip.'), ); - // #enddocregion Tooltip + // #enddocregion tooltip } diff --git a/examples/ui/layout/adaptive_app_demos/lib/widgets/ok_cancel_dialog.dart b/examples/ui/layout/adaptive_app_demos/lib/widgets/ok_cancel_dialog.dart index c88ffdcb86..9c79dd968a 100644 --- a/examples/ui/layout/adaptive_app_demos/lib/widgets/ok_cancel_dialog.dart +++ b/examples/ui/layout/adaptive_app_demos/lib/widgets/ok_cancel_dialog.dart @@ -30,7 +30,7 @@ class OkCancelDialog extends StatelessWidget { class _OkCancelButtons extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion RowTextDirection + // #docregion row-text-direction TextDirection btnDirection = DeviceType.isWindows ? TextDirection.rtl : TextDirection.ltr; return Row( @@ -51,7 +51,7 @@ class _OkCancelButtons extends StatelessWidget { ), ], ); - // #enddocregion RowTextDirection + // #enddocregion row-text-direction } } diff --git a/src/content/ui/interactivity/index.md b/src/content/ui/interactivity/index.md index c4a0a6c29f..98f4c4d160 100644 --- a/src/content/ui/interactivity/index.md +++ b/src/content/ui/interactivity/index.md @@ -386,7 +386,7 @@ The `_TapboxAState` class: `setState()` function to update the UI. * Implements all interactive behavior for the widget. - + ```dart diff --git a/src/content/ui/layout/responsive/building-adaptive-apps.md b/src/content/ui/layout/responsive/building-adaptive-apps.md index 57ce4a7977..92576d4a49 100644 --- a/src/content/ui/layout/responsive/building-adaptive-apps.md +++ b/src/content/ui/layout/responsive/building-adaptive-apps.md @@ -153,7 +153,7 @@ densities, you can easily adjust your UI: To set a custom visual density, inject the density into your `MaterialApp` theme: - + ```dart double densityAmt = touchMode ? 0.0 : -1.0; VisualDensity density = @@ -168,7 +168,7 @@ return MaterialApp( To use `VisualDensity` inside your own views, you can look it up: - + ```dart VisualDensity density = Theme.of(context).visualDensity; ``` @@ -212,7 +212,7 @@ this can be done with the `MediaQuery` API. There are no hard and fast rules for the sizes to use here, but these are general values: - + ```dart class FormFactor { static double desktop = 900; @@ -224,7 +224,7 @@ class FormFactor { Using breakpoints, you can set up a simple system to determine the device type: - + ```dart ScreenType getFormFactor(BuildContext context) { // Use .shortestSide to detect device type regardless of orientation @@ -239,7 +239,7 @@ ScreenType getFormFactor(BuildContext context) { As an alternative, you could abstract it more and define it in terms of small to large: - + ```dart enum ScreenSize { small, normal, large, extraLarge } @@ -261,7 +261,7 @@ You can also use screen-based breakpoints to reflow your top-level widget trees. For example, you could switch from a vertical to a horizontal layout when the user isn't on a handset: - + ```dart bool isHandset = MediaQuery.of(context).size.width < 600; return Flex( @@ -273,7 +273,7 @@ return Flex( In another widget, you might swap some of the children completely: - + ```dart Widget foo = Row( children: [ @@ -298,7 +298,7 @@ depended on a global value. The previous example could be rewritten using `LayoutBuilder`: - + ```dart Widget foo = LayoutBuilder(builder: (context, constraints) { bool useVerticalLayout = constraints.maxWidth < 400; @@ -328,7 +328,7 @@ so it doesn't get covered by the native window buttons. To determine which combination of platforms you're on, you can use the [`Platform`][] API along with the `kIsWeb` value: - + ```dart bool get isMobileDevice => !kIsWeb && (Platform.isIOS || Platform.isAndroid); bool get isDesktopDevice => @@ -358,7 +358,7 @@ if you create a single source of truth for styling values like padding, spacing, corner shape, font sizes, and so on. This can be done easily with some helper classes: - + ```dart class Insets { static const double xsmall = 3; @@ -393,7 +393,7 @@ class TextStyles { These constants can then be used in place of hard-coded numeric values: - + ```dart return Padding( padding: const EdgeInsets.all(Insets.small), @@ -510,7 +510,7 @@ If you need to implement custom scroll behavior, you can use the [`Listener`][] widget, which lets you customize how your UI reacts to the scroll wheel. - + ```dart return Listener( onPointerSignal: (event) { @@ -543,7 +543,7 @@ of [`Actions`][], [`Shortcuts`][], [`MouseRegion`][], and and key bindings, and provides callbacks for handling focus and hover highlights. - + ```dart class _BasicActionDetectorState extends State { bool _hasFocus = false; @@ -593,7 +593,7 @@ of the tree that should be treated as a group when tabbing. For example, you might to tab through all the fields in a form before tabbing to the submit button: - + ```dart return Column(children: [ FocusTraversalGroup( @@ -655,7 +655,7 @@ or a [`Focus`][] widget and listen for keyboard events: If you'd like to apply a set of keyboard shortcuts to a large section of the tree, you can use the [`Shortcuts`][] widget: - + ```dart // Define a class for each type of shortcut action you want class CreateNewItemIntent extends Intent { @@ -716,7 +716,7 @@ you can use the `HardwareKeyboard.instance.logicalKeysPressed` set. For example, a method like the following can check whether any of the provided keys are being held down: - + ```dart static bool isKeyDown(Set keys) { return keys @@ -728,7 +728,7 @@ static bool isKeyDown(Set keys) { Putting these two things together, you can fire an action when `Shift+N` is pressed: - + ```dart bool _handleKey(KeyEvent event) { bool isShiftDown = isKeyDown({ @@ -771,7 +771,7 @@ for your standard button and text cursors. To change the cursor from within your own widgets, use [`MouseRegion`][]: - + ```dart // Show hand cursor return MouseRegion( @@ -790,7 +790,7 @@ return MouseRegion( `MouseRegion` is also useful for creating custom rollover and hover effects: - + ```dart return MouseRegion( onEnter: (_) => setState(() => _isMouseOver = true), @@ -903,7 +903,7 @@ has support for adaptive colors and sizes according to the current platform. The one tweak you might want to make is to toggle `alwaysShown` when on a desktop platform: - + ```dart return Scrollbar( thumbVisibility: DeviceType.isDesktop, @@ -926,7 +926,7 @@ comfortable on a given platform. Dealing with multi-select within a list is another area with subtle differences across platforms: - + ```dart static bool get isSpanSelectModifierDown => isKeyDown({LogicalKeyboardKey.shiftLeft, LogicalKeyboardKey.shiftRight}); @@ -935,7 +935,7 @@ static bool get isSpanSelectModifierDown => To perform a platform-aware check for control or command, you can write something like this: - + ```dart static bool get isMultiSelectModifierDown { bool isDown = false; @@ -980,14 +980,14 @@ users on the web tend to have an adverse reaction. Luckily, this is easy to support with the [`SelectableText`][] widget: - + ```dart return const SelectableText('Select me!'); ``` To support rich text, then use `TextSpan`: - + ```dart return const SelectableText.rich( TextSpan( @@ -1050,7 +1050,7 @@ and positioned: To show basic tooltips in Flutter, use the built-in [`Tooltip`][] widget: - + ```dart return const Tooltip( message: 'I am a Tooltip', @@ -1099,7 +1099,7 @@ placed at the end of the row (right side). This can be easily handled in Flutter using the `TextDirection` property on `Row`: - + ```dart TextDirection btnDirection = DeviceType.isWindows ? TextDirection.rtl : TextDirection.ltr; From e58f922d35a2d468f752bd085d4b7457f8e2d62a Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Sat, 4 May 2024 01:26:42 +0900 Subject: [PATCH 038/109] Consolidate app-figure includes (#10497) --- src/_includes/docs/app-figure.liquid | 43 ------------------- src/_includes/docs/app-figure.md | 24 +---------- .../docs/install/test-drive/try-hot-reload.md | 8 +--- src/content/add-to-app/debugging.md | 6 +-- src/content/ui/layout/tutorial.md | 16 +++---- 5 files changed, 14 insertions(+), 83 deletions(-) delete mode 100644 src/_includes/docs/app-figure.liquid diff --git a/src/_includes/docs/app-figure.liquid b/src/_includes/docs/app-figure.liquid deleted file mode 100644 index dcbe8b8a06..0000000000 --- a/src/_includes/docs/app-figure.liquid +++ /dev/null @@ -1,43 +0,0 @@ -{% assign platform = include.platform -%} -{% assign caption = include.caption | default: platform -%} -{% assign alt = include.alt | default: caption -%} -{% assign image = include.image -%} -{% if include.width -%} -{% assign width = 'width: ' | append: include.width | append: ';' -%} -{% else -%} -{% assign width = '' -%} -{% endif -%} -{% if include.height -%} -{% assign height = 'height: ' | append: include.height | append: ';' -%} -{% else -%} -{% assign height = '' -%} -{% endif -%} - -{% comment %} -NOTE possibly sneaky introspection, feeling like this should be removed -NOTE(rearch) We second that, never a good idea. -{% endcomment %} -{% if include.path-prefix -%} - {% assign path = include.path-prefix | append: '/' -%} -{% else -%} - {% assign path = '' -%} -{% endif -%} - -{% if platform -%} - {% assign alt = alt | append: ' on ' | append: platform -%} - {% assign platform_in_lowercase = platform | downcase -%} - {% assign path = path | append: platform_in_lowercase | append: '/' -%} -{% endif -%} - -
-
- {{alt}} - {% if caption -%} -
{{caption}}
- {% endif -%} -
-
diff --git a/src/_includes/docs/app-figure.md b/src/_includes/docs/app-figure.md index 3deee2fd2e..be8fab61f8 100644 --- a/src/_includes/docs/app-figure.md +++ b/src/_includes/docs/app-figure.md @@ -1,5 +1,5 @@ {% assign alt = include.alt | default: include.caption -%} -{% assign caption = include.caption | default: include.platform -%} +{% assign caption = include.caption | default: '' -%} {% if include.width -%} {% assign width = 'width: ' | append: include.width | append: ';' -%} {% else -%} @@ -11,29 +11,9 @@ {% assign height = '' -%} {% endif -%} -{% comment %} -NOTE possibly sneaky introspection, feeling like this should be removed -NOTE(rearch) We second that, never a good idea. -{% endcomment %} -{% if include.path-prefix -%} - {% assign path = include.path-prefix | append: '/' -%} -{% else -%} - {% assign path = '' -%} -{% endif -%} - -{% if include.platform -%} - {% assign alt = alt | append: ' on ' | append: include.platform -%} - {% assign platform_in_lowercase = include.platform | downcase -%} - {% assign path = path | append: platform_in_lowercase | append: '/' -%} -{% endif -%} -
- {{alt}} + {{alt}} {% if caption -%}
{{caption}}
{% endif -%} diff --git a/src/_includes/docs/install/test-drive/try-hot-reload.md b/src/_includes/docs/install/test-drive/try-hot-reload.md index b91dd21a04..0352adc11c 100644 --- a/src/_includes/docs/install/test-drive/try-hot-reload.md +++ b/src/_includes/docs/install/test-drive/try-hot-reload.md @@ -1,8 +1,6 @@ After the app build completes, your device displays your app. -{% include docs/app-figure.md img-class="site-mobile-screenshot border" - path-prefix="get-started" platform="macOS" image="starter-app.png" - caption="Starter app" %} +{% include docs/app-figure.md img-class="site-mobile-screenshot border" image="get-started/macos/starter-app.png" caption="Starter app on macOS" %} ## Try hot reload @@ -32,6 +30,4 @@ You can change your app source code, run the hot reload command in Your app updates the string as you watch. -{% include docs/app-figure.md img-class="site-mobile-screenshot border" - path-prefix="get-started" platform="macOS" image="starter-app-hot-reload.png" - caption="Starter app after hot reload" %} +{% include docs/app-figure.md img-class="site-mobile-screenshot border" image="get-started/macos/starter-app-hot-reload.png" caption="Starter app after hot reload" %} diff --git a/src/content/add-to-app/debugging.md b/src/content/add-to-app/debugging.md index e43a7bae73..4a738d0250 100644 --- a/src/content/add-to-app/debugging.md +++ b/src/content/add-to-app/debugging.md @@ -94,7 +94,7 @@ For an iOS target, complete the follow steps: 1. If your dev machine uses IPv6, add `--vm-service-host=::0`. - {% include docs/app-figure.liquid img-class="site-mobile-screenshot + {% include docs/app-figure.md img-class="site-mobile-screenshot border" image="development/add-to-app/debugging/wireless-port.png" caption="Arguments Passed On Launch with an IPv4 network added" width="100%" %} @@ -110,9 +110,7 @@ For an iOS target, complete the follow steps: 1. Check for an **IPv6 address** section. - {% include docs/app-figure.liquid img-class="site-mobile-screenshot - border" image="development/add-to-app/ipv6.png" - caption="WiFi dialog box for macOS System Settings" width="60%" %} + {% include docs/app-figure.md img-class="site-mobile-screenshot border" image="development/add-to-app/ipv6.png" caption="WiFi dialog box for macOS System Settings" width="60%" %} ### Debug over Wi-Fi on Android devices diff --git a/src/content/ui/layout/tutorial.md b/src/content/ui/layout/tutorial.md index 2e9b7d4642..d70224a1eb 100644 --- a/src/content/ui/layout/tutorial.md +++ b/src/content/ui/layout/tutorial.md @@ -19,7 +19,7 @@ This tutorial explains how to design and build layouts in Flutter. If you use the example code provided, you can build the following app. -{% include docs/app-figure.liquid img-class="site-mobile-screenshot border" image="ui/layout/layout-demo-app.png" caption="The finished app." width="50%" %} +{% include docs/app-figure.md img-class="site-mobile-screenshot border" image="ui/layout/layout-demo-app.png" caption="The finished app." width="50%" %}
@@ -67,7 +67,7 @@ Ask these questions to break the layout down to its basic elements. Identify the larger elements. In this example, you arrange the image, title, buttons, and description into a column. -{% include docs/app-figure.liquid img-class="site-mobile-screenshot border" image="ui/layout/layout-sketch-intro.svg" caption="Major elements in the layout: image, row, row, and text block" width="50%" %} +{% include docs/app-figure.md img-class="site-mobile-screenshot border" image="ui/layout/layout-sketch-intro.svg" caption="Major elements in the layout: image, row, row, and text block" width="50%" %}
  • @@ -83,7 +83,7 @@ a column of text, a star icon, and a number. Its first child, the column, contains two lines of text. That first column might need more space. -{% include docs/app-figure.liquid image="ui/layout/layout-sketch-title-block.svg" caption="Title section with text blocks and an icon" -%} +{% include docs/app-figure.md image="ui/layout/layout-sketch-title-block.svg" caption="Title section with text blocks and an icon" -%}
  • @@ -92,7 +92,7 @@ That first column might need more space. Row 2, the **Button** section, has three children: each child contains a column which then contains an icon and text. -{% include docs/app-figure.liquid image="ui/layout/layout-sketch-button-block.svg" caption="The Button section with three labeled buttons" width="50%" %} +{% include docs/app-figure.md image="ui/layout/layout-sketch-button-block.svg" caption="The Button section with three labeled buttons" width="50%" %} @@ -167,7 +167,7 @@ the following layout. -{% include docs/app-figure.liquid image="ui/layout/layout-sketch-title-block-unlabeled.svg" caption="The Title section as sketch and prototype UI" %} +{% include docs/app-figure.md image="ui/layout/layout-sketch-title-block-unlabeled.svg" caption="The Title section as sketch and prototype UI" %} ### Add the `TitleSection` Widget @@ -309,7 +309,7 @@ In this section, add the buttons that will add functionality to your app. The **Button** section contains three columns that use the same layout: an icon over a row of text. -{% include docs/app-figure.liquid image="ui/layout/layout-sketch-button-block-unlabeled.svg" caption="The Button section as sketch and prototype UI" %} +{% include docs/app-figure.md image="ui/layout/layout-sketch-button-block-unlabeled.svg" caption="The Button section as sketch and prototype UI" %} Plan to distribute these columns in one row so each takes the same amount of space. Paint all text and icons with the primary color. @@ -477,7 +477,7 @@ Add the button section to the `children` list. In this section, add the text description to this app. -{% include docs/app-figure.liquid image="ui/layout/layout-sketch-add-text-block.svg" caption="The text block as sketch and prototype UI" %} +{% include docs/app-figure.md image="ui/layout/layout-sketch-add-text-block.svg" caption="The text block as sketch and prototype UI" %} @@ -640,7 +640,7 @@ Set the `image` property to the path of the image you added in That's it! When you hot reload the app, your app should look like this. -{% include docs/app-figure.liquid img-class="site-mobile-screenshot border" image="ui/layout/layout-demo-app.png" caption="The finished app" width="50%" %} +{% include docs/app-figure.md img-class="site-mobile-screenshot border" image="ui/layout/layout-demo-app.png" caption="The finished app" width="50%" %} ## Resources From 59585cd999e65d974b9ec9e1fb2d551f1e2f0f73 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Sat, 4 May 2024 01:27:15 +0900 Subject: [PATCH 039/109] Minor current version updates (#10496) --- src/_data/site.yml | 12 ++++++------ src/content/add-to-app/android/project-setup.md | 2 -- src/content/get-started/codelab-web.md | 13 ++++++------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/_data/site.yml b/src/_data/site.yml index cbe51c8acb..e75a2d691c 100644 --- a/src/_data/site.yml +++ b/src/_data/site.yml @@ -94,12 +94,12 @@ targetmin: ## Software current versions appnow: - flutter: '3.19.3' - vscode: '1.86' - android_studio: '2023.1' - android_sdk: '34.0.0' - intellij: '2023.3' + flutter: '3.19.6' + vscode: '1.89' + android_studio: '2023.3' + android_sdk: '34.0.5' + intellij: '2024.1' powershell: 5.1 xcode: '15' ios: '17' - cocoapods: '1.13' + cocoapods: '1.15' diff --git a/src/content/add-to-app/android/project-setup.md b/src/content/add-to-app/android/project-setup.md index d8dd6f878c..f24c8e3d72 100644 --- a/src/content/add-to-app/android/project-setup.md +++ b/src/content/add-to-app/android/project-setup.md @@ -65,8 +65,6 @@ in the same IDE. You can also use IntelliJ Flutter plugin functionality like Dart code completion, hot reload, and widget inspector. -Android Studio supports add-to-app flows on Android Studio 2022.2 or later -with the [Flutter plugin][] for IntelliJ. To build your app, the Android Studio plugin configures your Android project to add your Flutter module as a dependency. diff --git a/src/content/get-started/codelab-web.md b/src/content/get-started/codelab-web.md index f07222ce41..1f99cf76e9 100644 --- a/src/content/get-started/codelab-web.md +++ b/src/content/get-started/codelab-web.md @@ -75,13 +75,12 @@ make sure that you have Flutter installed correctly. ```console $ flutter doctor Doctor summary (to see all details, run flutter doctor -v): -[✓] Flutter (Channel master, 3.4.0-19.0.pre.254, on macOS 12.6 21G115 - darwin-arm64, locale en) -[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0) -[✓] Xcode - develop for iOS and macOS (Xcode 14.0) +[✓] Flutter (Channel stable, {{site.appnow.flutter}}, on macOS darwin-arm64, locale en) +[✓] Android toolchain - develop for Android devices (Android SDK version {{site.appnow.android_sdk}}) +[✓] Xcode - develop for iOS and macOS (Xcode {{site.appnow.xcode}}) [✓] Chrome - develop for the web -[✓] Android Studio (version 2021.2) -[✓] VS Code (version 1.71.1) +[✓] Android Studio (version {{site.appnow.android_studio}}) +[✓] VS Code (version {{site.appnow.vscode}}) [✓] Connected device (4 available) [✓] HTTP Host Availability @@ -475,7 +474,7 @@ void _updateFormProgress() { } ``` -This method updates the `_formProgress` field based on the +This method updates the `_formProgress` field based on the number of non-empty text fields. From 515ba6837ec239b38e6fa67870026978fd30a67e Mon Sep 17 00:00:00 2001 From: Nils Reichardt Date: Sat, 4 May 2024 03:34:21 +0200 Subject: [PATCH 040/109] Replace `list-certificates` and `create-certificates` with `certificates list` and `certificates create` (#10505) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ `app-storec-connect list-certificates` and `app-store-connect create-certificates` are deprecated, see: https://github.com/codemagic-ci-cd/cli-tools/blob/0bed134d36130ae0408fe973bd5fcd982f98f251/CHANGELOG.md?plain=1#L90 _Issues fixed by this PR (if any):_ ## 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. --- src/content/deployment/macos.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/deployment/macos.md b/src/content/deployment/macos.md index ab4008294d..5ba98ac1b2 100644 --- a/src/content/deployment/macos.md +++ b/src/content/deployment/macos.md @@ -287,7 +287,7 @@ If you do not have a Mac Installer Distribution certificate, you can create a new certificate by executing the following: ```bash -app-store-connect create-certificate \ +app-store-connect certificates create \ --type MAC_INSTALLER_DISTRIBUTION \ --certificate-key=@file:/path/to/cert_key \ --save @@ -301,7 +301,7 @@ Use `cert_key` of the private key you created earlier. Fetch the Mac Installer Distribution certificates: ```bash -app-store-connect list-certificates \ +app-store-connect certificates list \ --type MAC_INSTALLER_DISTRIBUTION \ --certificate-key=@file:/path/to/cert_key \ --save From b8d25c558725be1d82433ef2e559361219f2851b Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Sat, 4 May 2024 11:10:04 +0900 Subject: [PATCH 041/109] Migrate and cleanup layout doc docregions (#10498) Contributes to https://github.com/flutter/website/issues/10384 --- examples/basics/lib/main.dart | 4 +- examples/layout/base/lib/cupertino.dart | 4 +- examples/layout/base/lib/main.dart | 4 +- examples/layout/card_and_stack/lib/main.dart | 8 ++-- .../layout/lakes/interactive/lib/main.dart | 19 +++++---- examples/layout/lakes/step2/lib/main.dart | 8 ++-- examples/layout/lakes/step3/lib/main.dart | 28 ++++++------- examples/layout/lakes/step4/lib/main.dart | 16 ++++---- examples/layout/lakes/step5/lib/main.dart | 16 ++++---- examples/layout/lakes/step6/lib/main.dart | 35 ++++++++-------- examples/layout/non_material/lib/main.dart | 3 +- examples/layout/pavlova/lib/main.dart | 8 ++-- examples/layout/row_column/lib/main.dart | 8 ++-- .../lib/pages/focus_examples_page.dart | 4 +- src/content/ui/interactivity/index.md | 41 +++---------------- src/content/ui/layout/index.md | 22 +++++----- .../responsive/building-adaptive-apps.md | 2 +- src/content/ui/layout/tutorial.md | 30 +++++++------- 18 files changed, 117 insertions(+), 143 deletions(-) diff --git a/examples/basics/lib/main.dart b/examples/basics/lib/main.dart index ee2f68d14b..87c91bcd5d 100644 --- a/examples/basics/lib/main.dart +++ b/examples/basics/lib/main.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; void main() => runApp(const MyApp()); -// #docregion MyApp +// #docregion my-app class MyApp extends StatelessWidget { const MyApp({super.key}); @@ -35,4 +35,4 @@ class MyApp extends StatelessWidget { ); } } -// #enddocregion MyApp +// #enddocregion my-app diff --git a/examples/layout/base/lib/cupertino.dart b/examples/layout/base/lib/cupertino.dart index 478aa9bd48..4781916754 100644 --- a/examples/layout/base/lib/cupertino.dart +++ b/examples/layout/base/lib/cupertino.dart @@ -4,7 +4,7 @@ void main() { runApp(const MyApp()); } -// #docregion MyApp +// #docregion my-app class MyApp extends StatelessWidget { const MyApp({super.key}); @@ -33,4 +33,4 @@ class MyApp extends StatelessWidget { ); } } -// #docregion MyApp +// #enddocregion my-app diff --git a/examples/layout/base/lib/main.dart b/examples/layout/base/lib/main.dart index 0394b52917..35355a2e7c 100644 --- a/examples/layout/base/lib/main.dart +++ b/examples/layout/base/lib/main.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; void main() => runApp(const MyApp()); -// #docregion MyApp +// #docregion my-app class MyApp extends StatelessWidget { const MyApp({super.key}); @@ -32,4 +32,4 @@ class MyApp extends StatelessWidget { } } -// #enddocregion all +// #enddocregion my-app, all diff --git a/examples/layout/card_and_stack/lib/main.dart b/examples/layout/card_and_stack/lib/main.dart index 422b0ebe8d..952cdcbb1b 100644 --- a/examples/layout/card_and_stack/lib/main.dart +++ b/examples/layout/card_and_stack/lib/main.dart @@ -24,7 +24,7 @@ class MyApp extends StatelessWidget { ); } - // #docregion Card + // #docregion card Widget _buildCard() { return SizedBox( height: 210, @@ -65,9 +65,9 @@ class MyApp extends StatelessWidget { ), ); } - // #enddocregion Card + // #enddocregion card - // #docregion Stack + // #docregion stack Widget _buildStack() { return Stack( alignment: const Alignment(0.6, 0.6), @@ -92,5 +92,5 @@ class MyApp extends StatelessWidget { ], ); } -// #enddocregion Stack +// #enddocregion stack } diff --git a/examples/layout/lakes/interactive/lib/main.dart b/examples/layout/lakes/interactive/lib/main.dart index 592cc569c6..abdee3ac7e 100644 --- a/examples/layout/lakes/interactive/lib/main.dart +++ b/examples/layout/lakes/interactive/lib/main.dart @@ -192,24 +192,24 @@ class ImageSection extends StatelessWidget { } } -// #docregion FavoriteWidget +// #docregion favorite-widget class FavoriteWidget extends StatefulWidget { const FavoriteWidget({super.key}); @override State createState() => _FavoriteWidgetState(); } -// #enddocregion FavoriteWidget +// #enddocregion favorite-widget -// #docregion _FavoriteWidgetState, _FavoriteWidgetState-fields, _FavoriteWidgetState-build +// #docregion favorite-state, favorite-state-fields, favorite-state-build class _FavoriteWidgetState extends State { - // #enddocregion _FavoriteWidgetState-build + // #enddocregion favorite-state-build bool _isFavorited = true; int _favoriteCount = 41; - // #enddocregion _FavoriteWidgetState-fields + // #enddocregion favorite-state-fields - // #docregion _toggleFavorite + // #docregion toggle-favorite void _toggleFavorite() { setState(() { if (_isFavorited) { @@ -222,9 +222,9 @@ class _FavoriteWidgetState extends State { }); } - // #enddocregion _toggleFavorite + // #enddocregion toggle-favorite - // #docregion _FavoriteWidgetState-build + // #docregion favorite-state-build @override Widget build(BuildContext context) { return Row( @@ -251,5 +251,6 @@ class _FavoriteWidgetState extends State { ], ); } -// #docregion _FavoriteWidgetState-fields + // #docregion favorite-state-build } +// #enddocregion favorite-state, favorite-state-fields, favorite-state-build diff --git a/examples/layout/lakes/step2/lib/main.dart b/examples/layout/lakes/step2/lib/main.dart index dcc29dabd5..ec5d7e0a08 100644 --- a/examples/layout/lakes/step2/lib/main.dart +++ b/examples/layout/lakes/step2/lib/main.dart @@ -14,7 +14,7 @@ class MyApp extends StatelessWidget { appBar: AppBar( title: const Text(appTitle), ), - // #docregion addWidget + // #docregion add-widget body: const SingleChildScrollView( child: Column( children: [ @@ -25,13 +25,13 @@ class MyApp extends StatelessWidget { ], ), ), - // #enddocregion addWidget + // #enddocregion add-widget ), ); } } -// #docregion titleSection +// #docregion title-section class TitleSection extends StatelessWidget { const TitleSection({ super.key, @@ -83,4 +83,4 @@ class TitleSection extends StatelessWidget { ); } } -// #enddocregion titleSection +// #enddocregion title-section diff --git a/examples/layout/lakes/step3/lib/main.dart b/examples/layout/lakes/step3/lib/main.dart index f96b9a3f83..d2cee11dae 100644 --- a/examples/layout/lakes/step3/lib/main.dart +++ b/examples/layout/lakes/step3/lib/main.dart @@ -14,7 +14,7 @@ class MyApp extends StatelessWidget { appBar: AppBar( title: const Text(appTitle), ), - // #docregion addWidget + // #docregion add-widget body: const SingleChildScrollView( child: Column( children: [ @@ -26,7 +26,7 @@ class MyApp extends StatelessWidget { ], ), ), - // #enddocregion addWidget + // #enddocregion add-widget ), ); } @@ -84,17 +84,17 @@ class TitleSection extends StatelessWidget { } } -// #docregion ButtonStart -// #docregion ButtonSection -// #docregion ButtonWithText +// #docregion button-start +// #docregion button-section +// #docregion button-with-text class ButtonSection extends StatelessWidget { const ButtonSection({super.key}); -// #enddocregion ButtonWithText +// #enddocregion button-with-text @override Widget build(BuildContext context) { final Color color = Theme.of(context).primaryColor; -// #enddocregion ButtonStart +// #enddocregion button-start return SizedBox( child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, @@ -117,11 +117,11 @@ class ButtonSection extends StatelessWidget { ], ), ); -// #docregion ButtonStart +// #docregion button-start } -// #docregion ButtonWithText +// #docregion button-with-text } -// #enddocregion ButtonStart +// #enddocregion button-start class ButtonWithText extends StatelessWidget { const ButtonWithText({ @@ -138,7 +138,7 @@ class ButtonWithText extends StatelessWidget { @override Widget build(BuildContext context) { return Column( -// #enddocregion ButtonSection +// #enddocregion button-section mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -155,9 +155,9 @@ class ButtonWithText extends StatelessWidget { ), ), ], -// #docregion ButtonSection +// #docregion button-section ); } -// #enddocregion ButtonWithText +// #enddocregion button-with-text } -// #enddocregion ButtonSection +// #enddocregion button-section diff --git a/examples/layout/lakes/step4/lib/main.dart b/examples/layout/lakes/step4/lib/main.dart index 65c55b33d5..ba5837b134 100644 --- a/examples/layout/lakes/step4/lib/main.dart +++ b/examples/layout/lakes/step4/lib/main.dart @@ -2,13 +2,13 @@ import 'package:flutter/material.dart'; void main() => runApp(const MyApp()); -// #docregion TextAdd +// #docregion text-add class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { -// #enddocregion TextAdd + // #enddocregion text-add const String appTitle = 'Flutter layout demo'; return MaterialApp( title: appTitle, @@ -16,8 +16,8 @@ class MyApp extends StatelessWidget { appBar: AppBar( title: const Text(appTitle), ), - // #docregion addWidget - // #docregion TextAdd + // #docregion add-widget + // #docregion text-add body: const SingleChildScrollView( child: Column( children: [ @@ -39,12 +39,12 @@ class MyApp extends StatelessWidget { ], ), ), - // #enddocregion addWidget + // #enddocregion add-widget ), ); } } -// #enddocregion TextAdd +// #enddocregion text-add class TitleSection extends StatelessWidget { const TitleSection({ @@ -164,7 +164,7 @@ class ButtonWithText extends StatelessWidget { } } -// #docregion TextSection +// #docregion text-section class TextSection extends StatelessWidget { const TextSection({ super.key, @@ -184,4 +184,4 @@ class TextSection extends StatelessWidget { ); } } -// #enddocregion TextSection +// #enddocregion text-section diff --git a/examples/layout/lakes/step5/lib/main.dart b/examples/layout/lakes/step5/lib/main.dart index 74ce3a971f..371a05e634 100644 --- a/examples/layout/lakes/step5/lib/main.dart +++ b/examples/layout/lakes/step5/lib/main.dart @@ -14,7 +14,7 @@ class MyApp extends StatelessWidget { appBar: AppBar( title: const Text(appTitle), ), - // #docregion addWidget + // #docregion add-widget body: const SingleChildScrollView( child: Column( children: [ @@ -39,7 +39,7 @@ class MyApp extends StatelessWidget { ], ), ), - // #enddocregion addWidget + // #enddocregion add-widget ), ); } @@ -86,12 +86,12 @@ class TitleSection extends StatelessWidget { ), ), /*3*/ - // #docregion Icon + // #docregion icon Icon( Icons.star, color: Colors.red[500], ), - // #enddocregion Icon + // #enddocregion icon const Text('41'), ], ), @@ -185,7 +185,7 @@ class TextSection extends StatelessWidget { } } -// #docregion ImageSection +// #docregion image-section class ImageSection extends StatelessWidget { const ImageSection({super.key, required this.image}); @@ -193,14 +193,14 @@ class ImageSection extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion Image-asset + // #docregion image-asset return Image.asset( image, width: 600, height: 240, fit: BoxFit.cover, ); - // #enddocregion Image-asset + // #enddocregion image-asset } } -// #enddocregion ImageSection +// #enddocregion image-section diff --git a/examples/layout/lakes/step6/lib/main.dart b/examples/layout/lakes/step6/lib/main.dart index be149b16da..33d11b1b96 100644 --- a/examples/layout/lakes/step6/lib/main.dart +++ b/examples/layout/lakes/step6/lib/main.dart @@ -14,7 +14,7 @@ class MyApp extends StatelessWidget { appBar: AppBar( title: const Text(appTitle), ), - // #docregion addWidget + // #docregion add-widget body: const SingleChildScrollView( child: Column( children: [ @@ -39,7 +39,7 @@ class MyApp extends StatelessWidget { ], ), ), - // #enddocregion addWidget + // #enddocregion add-widget ), ); } @@ -86,12 +86,12 @@ class TitleSection extends StatelessWidget { ), ), /*3*/ - // #docregion Icon + // #docregion icon Icon( Icons.star, color: Colors.red[500], ), - // #enddocregion Icon + // #enddocregion icon const Text('41'), ], ), @@ -185,7 +185,7 @@ class TextSection extends StatelessWidget { } } -// #docregion ImageSection +// #docregion image-asset class ImageSection extends StatelessWidget { const ImageSection({super.key, required this.image}); @@ -193,36 +193,36 @@ class ImageSection extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion Image-asset + // #docregion image-asset return Image.asset( image, width: 600, height: 240, fit: BoxFit.cover, ); - // #enddocregion Image-asset + // #enddocregion image-asset } } -// #enddocregion ImageSection +// #enddocregion image-section -// #docregion FavoriteWidget +// #docregion favorite-widget class FavoriteWidget extends StatefulWidget { const FavoriteWidget({super.key}); @override State createState() => _FavoriteWidgetState(); } -// #enddocregion FavoriteWidget +// #enddocregion favorite-widget -// #docregion _FavoriteWidgetState, _FavoriteWidgetState-fields, _FavoriteWidgetState-build +// #docregion favorite-state, favorite-state-fields, favorite-state-build class _FavoriteWidgetState extends State { - // #enddocregion _FavoriteWidgetState-build + // #enddocregion favorite-state-build bool _isFavorited = true; int _favoriteCount = 41; - // #enddocregion _FavoriteWidgetState-fields + // #enddocregion favorite-state-fields - // #docregion _toggleFavorite + // #docregion toggle-favorite void _toggleFavorite() { setState(() { if (_isFavorited) { @@ -235,9 +235,9 @@ class _FavoriteWidgetState extends State { }); } - // #enddocregion _toggleFavorite + // #enddocregion toggle-favorite - // #docregion _FavoriteWidgetState-build + // #docregion favorite-state-build @override Widget build(BuildContext context) { return Row( @@ -264,5 +264,6 @@ class _FavoriteWidgetState extends State { ], ); } -// #docregion _FavoriteWidgetState-fields + // #docregion favorite-state-fields } +// #enddocregion favorite-state, favorite-state-fields, favorite-state-build diff --git a/examples/layout/non_material/lib/main.dart b/examples/layout/non_material/lib/main.dart index a3a40a85ee..eb90765c1c 100644 --- a/examples/layout/non_material/lib/main.dart +++ b/examples/layout/non_material/lib/main.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; void main() => runApp(const MyApp()); -// #docregion MyApp +// #docregion my-app class MyApp extends StatelessWidget { const MyApp({super.key}); @@ -28,3 +28,4 @@ class MyApp extends StatelessWidget { ); } } +// #enddocregion my-app diff --git a/examples/layout/pavlova/lib/main.dart b/examples/layout/pavlova/lib/main.dart index 93e57f12cd..e6e8394876 100644 --- a/examples/layout/pavlova/lib/main.dart +++ b/examples/layout/pavlova/lib/main.dart @@ -75,7 +75,7 @@ class MyApp extends StatelessWidget { ); // #enddocregion ratings - // #docregion iconList + // #docregion icon-list const descTextStyle = TextStyle( color: Colors.black, fontWeight: FontWeight.w800, @@ -119,9 +119,9 @@ class MyApp extends StatelessWidget { ), ), ); - // #enddocregion iconList + // #enddocregion icon-list - // #docregion leftColumn + // #docregion left-column final leftColumn = Container( padding: const EdgeInsets.fromLTRB(20, 30, 20, 20), child: Column( @@ -133,7 +133,7 @@ class MyApp extends StatelessWidget { ], ), ); - // #enddocregion leftColumn + // #enddocregion left-column final mainImage = Image.asset( 'images/pavlova.jpg', diff --git a/examples/layout/row_column/lib/main.dart b/examples/layout/row_column/lib/main.dart index fd22335fbe..dd5f504b7a 100644 --- a/examples/layout/row_column/lib/main.dart +++ b/examples/layout/row_column/lib/main.dart @@ -24,7 +24,7 @@ class MyApp extends StatelessWidget { } Widget buildRow() => - // #docregion Row + // #docregion row Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ @@ -33,10 +33,10 @@ class MyApp extends StatelessWidget { Image.asset('images/pic3.jpg'), ], ); - // #enddocregion Row + // #enddocregion row Widget buildColumn() => - // #docregion Column + // #docregion column Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ @@ -45,5 +45,5 @@ class MyApp extends StatelessWidget { Image.asset('images/pic3.jpg'), ], ); - // #enddocregion Column + // #enddocregion column } diff --git a/examples/ui/layout/adaptive_app_demos/lib/pages/focus_examples_page.dart b/examples/ui/layout/adaptive_app_demos/lib/pages/focus_examples_page.dart index 539c65d385..3452967bf3 100644 --- a/examples/ui/layout/adaptive_app_demos/lib/pages/focus_examples_page.dart +++ b/examples/ui/layout/adaptive_app_demos/lib/pages/focus_examples_page.dart @@ -75,7 +75,7 @@ class BasicActionDetector extends StatefulWidget { State createState() => _BasicActionDetectorState(); } -// #docregion action-detector-state +// #docregion focusable-action-detector class _BasicActionDetectorState extends State { bool _hasFocus = false; @override @@ -106,7 +106,7 @@ class _BasicActionDetectorState extends State { ); } } -// #enddocregion action-detector-state +// #enddocregion focusable-action-detector /// Uses [FocusableActionDetector] class ClickableActionDetector extends StatefulWidget { diff --git a/src/content/ui/interactivity/index.md b/src/content/ui/interactivity/index.md index 98f4c4d160..6ecbd57567 100644 --- a/src/content/ui/interactivity/index.md +++ b/src/content/ui/interactivity/index.md @@ -149,7 +149,7 @@ which you'll implement in the next step. - + ```dart class FavoriteWidget extends StatefulWidget { const FavoriteWidget({super.key}); @@ -177,14 +177,11 @@ red star, indicating that the lake has "favorite" status, along with 41 likes. These values are stored in the `_isFavorited` and `_favoriteCount` fields: - + ```dart class _FavoriteWidgetState extends State { [!bool _isFavorited = true;!] [!int _favoriteCount = 41;!] - - // ··· -} ``` The class also defines a `build()` method, @@ -194,37 +191,11 @@ because it has an `onPressed` property that defines the callback function (`_toggleFavorite`) for handling a tap. You'll define the callback function next. - + ```dart class _FavoriteWidgetState extends State { - // ··· - @override - Widget [!build!](BuildContext context) { - return Row( - mainAxisSize: MainAxisSize.min, - children: [ - Container( - padding: const EdgeInsets.all(0), - child: IconButton( - padding: const EdgeInsets.all(0), - alignment: Alignment.center, - [!icon: (_isFavorited!] - ? const Icon(Icons.star) - : const Icon(Icons.star_border)), - color: Colors.red[500], - [!onPressed: _toggleFavorite,!] - ), - ), - SizedBox( - width: 18, - child: SizedBox( - [!child: Text('$_favoriteCount'),!] - ), - ), - ], - ); - } -} + bool _isFavorited = true; + int _favoriteCount = 41; ``` :::tip @@ -245,7 +216,7 @@ UI between these two states: * A `star` icon and the number 41 * A `star_border` icon and the number 40 - + ```dart void _toggleFavorite() { setState(() { diff --git a/src/content/ui/layout/index.md b/src/content/ui/layout/index.md index 741e8f791a..6348edf66a 100644 --- a/src/content/ui/layout/index.md +++ b/src/content/ui/layout/index.md @@ -99,7 +99,7 @@ Text('Hello World'), Create an [`Image`][] widget: - + ```dart return Image.asset( image, @@ -109,7 +109,7 @@ return Image.asset( Create an [`Icon`][] widget: - + ```dart Icon( Icons.star, @@ -152,7 +152,7 @@ Then you can add the `Center` widget directly to the `body` property for the home page. - + ```dart class MyApp extends StatelessWidget { const MyApp({super.key}); @@ -205,7 +205,7 @@ You need to set these yourself. To learn what other UI components you can add, check out the [Cupertino library][]. - + ```dart class MyApp extends StatelessWidget { const MyApp({super.key}); @@ -257,7 +257,7 @@ For a non-Material app, you can add the `Center` widget to the app's `build()` method: - + ```dart class MyApp extends StatelessWidget { const MyApp({super.key}); @@ -396,7 +396,7 @@ space evenly between, before, and after each image.
    - + ```dart [!Row!]( mainAxisAlignment: MainAxisAlignment.spaceEvenly, @@ -425,7 +425,7 @@ space evenly between, above, and below each image.
    - + ```dart [!Column!]( mainAxisAlignment: MainAxisAlignment.spaceEvenly, @@ -630,7 +630,7 @@ as you can see in its widget tree: The `iconList` variable defines the icons row: - + ```dart const descTextStyle = TextStyle( color: Colors.black, @@ -680,7 +680,7 @@ final [!iconList!] = DefaultTextStyle.merge( The `leftColumn` variable contains the ratings and icons rows, as well as the title and text that describes the Pavlova: - + ```dart final [!leftColumn!] = Container( padding: const EdgeInsets.fromLTRB(20, 30, 20, 20), @@ -1055,7 +1055,7 @@ or partially overlap the base widget.
    - + ```dart Widget _buildStack() { return [!Stack!]( @@ -1139,7 +1139,7 @@ Specifying an unsupported value disables the drop shadow entirely.
    - + ```dart Widget _buildCard() { return SizedBox( diff --git a/src/content/ui/layout/responsive/building-adaptive-apps.md b/src/content/ui/layout/responsive/building-adaptive-apps.md index 92576d4a49..6d4ca58052 100644 --- a/src/content/ui/layout/responsive/building-adaptive-apps.md +++ b/src/content/ui/layout/responsive/building-adaptive-apps.md @@ -543,7 +543,7 @@ of [`Actions`][], [`Shortcuts`][], [`MouseRegion`][], and and key bindings, and provides callbacks for handling focus and hover highlights. - + ```dart class _BasicActionDetectorState extends State { bool _hasFocus = false; diff --git a/src/content/ui/layout/tutorial.md b/src/content/ui/layout/tutorial.md index d70224a1eb..0369e67c40 100644 --- a/src/content/ui/layout/tutorial.md +++ b/src/content/ui/layout/tutorial.md @@ -173,7 +173,7 @@ the following layout. Add the following code after the `MyApp` class. - + ```dart class TitleSection extends StatelessWidget { const TitleSection({ @@ -319,7 +319,7 @@ amount of space. Paint all text and icons with the primary color. Add the following code after the `TitleSection` widget to contain the code to build the row of buttons. - + ```dart class ButtonSection extends StatelessWidget { const ButtonSection({super.key}); @@ -344,7 +344,7 @@ is wrapped with a `Padding` widget. Add the following code after the `ButtonSection` class. - + ```dart class ButtonSection extends StatelessWidget { const ButtonSection({super.key}); @@ -399,7 +399,7 @@ Add the following code into the `ButtonSection` widget. This value, then, tells Flutter to arrange the free space in equal amounts before, between, and after each column along the `Row`. - + ```dart class ButtonSection extends StatelessWidget { const ButtonSection({super.key}); @@ -459,10 +459,10 @@ Add the button section to the `children` list. - + ```diff2html ---- step2/lib/main.dart (addWidget) -+++ step3/lib/main.dart (addWidget) +--- step2/lib/main.dart (add-widget) ++++ step3/lib/main.dart (add-widget) @@ -5,6 +5,7 @@ name: 'Oeschinen Lake Campground', location: 'Kandersteg, Switzerland', @@ -485,7 +485,7 @@ In this section, add the text description to this app. Add the following code as a separate widget after the `ButtonSection` widget. - + ```dart class TextSection extends StatelessWidget { const TextSection({ @@ -519,10 +519,10 @@ Add a new `TextSection` widget as a child after the `ButtonSection`. When adding the `TextSection` widget, set its `description` property to the text of the location description. - + ```diff2html ---- step3/lib/main.dart (addWidget) -+++ step4/lib/main.dart (addWidget) +--- step3/lib/main.dart (add-widget) ++++ step4/lib/main.dart (add-widget) @@ -6,6 +6,16 @@ location: 'Kandersteg, Switzerland', ), @@ -591,7 +591,7 @@ display the image. Define the following `ImageSection` widget after the other declarations. - + ```dart class ImageSection extends StatelessWidget { const ImageSection({super.key, required this.image}); @@ -620,10 +620,10 @@ Add an `ImageSection` widget as the first child in the `children` list. Set the `image` property to the path of the image you added in [Configure your app to use supplied images](#configure-your-app-to-use-supplied-images). - + ```diff2html ---- step4/lib/main.dart (addWidget) -+++ step5/lib/main.dart (addWidget) +--- step4/lib/main.dart (add-widget) ++++ step5/lib/main.dart (add-widget) @@ -1,6 +1,9 @@ body: const SingleChildScrollView( child: Column( From 824c72b1121db96d165a9ac5a44679cce1cfe62c Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Sat, 4 May 2024 14:27:08 +0900 Subject: [PATCH 042/109] Continue migration from `include` to `render` (#10508) The `include` syntax we're using is supported as a fallback for migration, and [`render`](https://liquidjs.com/tags/render.html) is the appropriate replacement tag. Its included content doesn't inherit its parents scope, helping prevent mistakes and potentially improving incremental rebuilds. Also remove some unused includes. --- src/_includes/docs/help-link.md | 2 +- .../docs/install/compiler/android.md | 4 ++-- .../docs/install/deprecated/android-setup.md | 8 +++---- .../install/deprecated/get-sdk-chromeos.md | 2 +- .../docs/install/deprecated/get-sdk-linux.md | 2 +- .../docs/install/deprecated/get-sdk-mac.md | 2 +- .../docs/install/deprecated/get-sdk-win.md | 8 +++---- .../deprecated/windows-desktop-setup.md | 2 +- .../docs/install/devices/android-emulator.md | 2 +- .../docs/install/devices/android-physical.md | 2 +- src/_includes/docs/install/flutter-doctor.md | 2 +- .../docs/install/flutter/download.md | 2 +- src/_includes/docs/install/flutter/vscode.md | 2 +- src/_includes/docs/install/reqs/add-web.md | 2 +- src/_includes/docs/install/reqs/linux/base.md | 4 ++-- .../docs/install/reqs/linux/software.md | 2 +- .../docs/install/reqs/linux/unset-path.md | 2 +- src/_includes/docs/install/reqs/macos/base.md | 4 ++-- .../docs/install/reqs/windows/base.md | 4 ++-- .../docs/install/reqs/windows/set-path.md | 4 ++-- .../docs/install/reqs/windows/unset-path.md | 2 +- .../docs/install/test-drive/restart-vscode.md | 4 ---- src/_includes/docs/run-profile.md | 22 ------------------- src/_includes/snackbar.html | 8 +++---- src/_layouts/default.html | 2 +- src/content/codelabs/implicit-animations.md | 8 +++---- src/content/community/china/index.md | 2 +- .../get-started/install/chromeos/index.md | 2 +- src/content/get-started/install/index.md | 2 +- .../get-started/install/linux/index.md | 2 +- .../get-started/install/macos/index.md | 2 +- .../get-started/install/windows/index.md | 2 +- src/content/perf/best-practices.md | 2 +- src/content/perf/rendering-performance.md | 2 +- src/content/perf/shader.md | 2 +- src/content/perf/ui-performance.md | 2 +- src/content/release/archive.md | 2 +- src/content/testing/code-debugging.md | 10 ++++----- src/content/testing/native-debugging.md | 22 +++++++++---------- 39 files changed, 68 insertions(+), 94 deletions(-) delete mode 100644 src/_includes/docs/install/test-drive/restart-vscode.md delete mode 100644 src/_includes/docs/run-profile.md diff --git a/src/_includes/docs/help-link.md b/src/_includes/docs/help-link.md index 526ec00e8c..9ef239dcec 100644 --- a/src/_includes/docs/help-link.md +++ b/src/_includes/docs/help-link.md @@ -1,5 +1,5 @@

    - + help Help diff --git a/src/_includes/docs/install/compiler/android.md b/src/_includes/docs/install/compiler/android.md index a1cf670f72..d8d5054c76 100644 --- a/src/_includes/docs/install/compiler/android.md +++ b/src/_includes/docs/install/compiler/android.md @@ -15,7 +15,7 @@ ### Configure the Android toolchain in Android Studio -{% include docs/help-link.md location='android-studio' section='#android-setup' %} +{% render docs/help-link.md, location:'android-studio', section:'#android-setup' %} To create Android apps with Flutter, verify that the following Android components have been installed. @@ -166,7 +166,7 @@ Otherwise, you can skip to the [next section][check-dev]. ### Agree to Android licenses -{% include docs/help-link.md location='android-licenses' section='#android-setup' %} +{% render docs/help-link.md, location:'android-licenses', section:'#android-setup' %} Before you can use Flutter and after you install all prerequisites, agree to the licenses of the Android SDK platform. diff --git a/src/_includes/docs/install/deprecated/android-setup.md b/src/_includes/docs/install/deprecated/android-setup.md index 457b3a08c4..5341ea0b75 100644 --- a/src/_includes/docs/install/deprecated/android-setup.md +++ b/src/_includes/docs/install/deprecated/android-setup.md @@ -8,7 +8,7 @@ Flutter apps in a number of editors; a later step discusses that. ### Install Android Studio -{% include docs/install/deprecated/help-link.md location='android-studio' section='#android-setup' %} +{% render docs/help-link.md, location:'android-studio', section:'#android-setup' %} 1. Download and install [Android Studio]({{site.android-dev}}/studio). 1. Start Android Studio, and go through the 'Android Studio Setup Wizard'. @@ -22,7 +22,7 @@ Flutter apps in a number of editors; a later step discusses that. ### Set up your Android device -{% include docs/install/deprecated/help-link.md location='android-device' section='#android-setup' %} +{% render docs/help-link.md, location:'android-device', section:'#android-setup' %} To prepare to run and test your Flutter app on an Android device, you need an Android device running Android 5.0 (API level 21) or higher. @@ -46,7 +46,7 @@ you need an Android device running Android 5.0 (API level 21) or higher. ### Set up the Android emulator -{% include docs/install/deprecated/help-link.md location='android-emulator' section='#android-setup' %} +{% render docs/help-link.md, location:'android-emulator', section:'#android-setup' %} To prepare to run and test your Flutter app on the Android emulator, follow these steps: @@ -79,7 +79,7 @@ follow these steps: ### Agree to Android Licenses -{% include docs/install/deprecated/help-link.md location='android-licenses' section='#android-setup' %} +{% render docs/help-link.md, location:'android-licenses', section:'#android-setup' %} Before you can use Flutter, you must agree to the licenses of the Android SDK platform. This step should be done after diff --git a/src/_includes/docs/install/deprecated/get-sdk-chromeos.md b/src/_includes/docs/install/deprecated/get-sdk-chromeos.md index 3330a3d1e9..63fedf22ed 100644 --- a/src/_includes/docs/install/deprecated/get-sdk-chromeos.md +++ b/src/_includes/docs/install/deprecated/get-sdk-chromeos.md @@ -1,6 +1,6 @@ ## Get the Flutter SDK {:#get-sdk} -{% include docs/china-notice.md %} +{% render docs/china-notice.md %} 1. Install the core development tools needed for Flutter: diff --git a/src/_includes/docs/install/deprecated/get-sdk-linux.md b/src/_includes/docs/install/deprecated/get-sdk-linux.md index dfb9319ad8..f4961371d5 100644 --- a/src/_includes/docs/install/deprecated/get-sdk-linux.md +++ b/src/_includes/docs/install/deprecated/get-sdk-linux.md @@ -1,6 +1,6 @@ ## Get the Flutter SDK {:#get-sdk} -{% include docs/china-notice.md %} +{% render docs/china-notice.md %} To install the Flutter SDK on your Linux system, use one of the following methods. diff --git a/src/_includes/docs/install/deprecated/get-sdk-mac.md b/src/_includes/docs/install/deprecated/get-sdk-mac.md index a71e7975a0..c0b4c2f2b1 100644 --- a/src/_includes/docs/install/deprecated/get-sdk-mac.md +++ b/src/_includes/docs/install/deprecated/get-sdk-mac.md @@ -1,6 +1,6 @@ ## Get the Flutter SDK {:#get-sdk} -{% include docs/china-notice.md %} +{% render docs/china-notice.md %} 1. Download the following installation bundle to get the latest {{site.sdk.channel}} release of the Flutter SDK: diff --git a/src/_includes/docs/install/deprecated/get-sdk-win.md b/src/_includes/docs/install/deprecated/get-sdk-win.md index 9964799071..1aa91d5f1d 100644 --- a/src/_includes/docs/install/deprecated/get-sdk-win.md +++ b/src/_includes/docs/install/deprecated/get-sdk-win.md @@ -1,8 +1,8 @@ ## Get the Flutter SDK -{% include docs/china-notice.md %} +{% render docs/china-notice.md %} -{% include docs/install/deprecated/help-link.md location='win-get-sdk' %} +{% render docs/help-link.md, location:'win-get-sdk' %} 1. Download the following installation bundle to get the latest {{site.sdk.channel}} release of the Flutter SDK: @@ -30,7 +30,7 @@ You are now ready to run Flutter commands in the Flutter Console. ### Update your path -{% include docs/install/deprecated/help-link.md location='win-path' section='#unable-to-find-the-flutter-command' %} +{% render docs/help-link.md, location:'win-path', section:'#unable-to-find-the-flutter-command' %} If you wish to run Flutter commands in the regular Windows console, take these steps to add Flutter to the `PATH` environment variable: @@ -51,7 +51,7 @@ for these changes to take effect. ### Run `flutter doctor` -{% include docs/install/deprecated/help-link.md location='win-doctor' %} +{% render docs/help-link.md, location:'win-doctor' %} From a console window that has the Flutter directory in the path (see above), run the following command to see if there diff --git a/src/_includes/docs/install/deprecated/windows-desktop-setup.md b/src/_includes/docs/install/deprecated/windows-desktop-setup.md index ea8c330ae2..0a176cc230 100644 --- a/src/_includes/docs/install/deprecated/windows-desktop-setup.md +++ b/src/_includes/docs/install/deprecated/windows-desktop-setup.md @@ -4,7 +4,7 @@ ### Additional Windows requirements -{% include docs/install/deprecated/help-link.md location='win-desktop' %} +{% render docs/help-link.md, location:'win-desktop' %} For Windows desktop development, you need the following in addition to the Flutter SDK: diff --git a/src/_includes/docs/install/devices/android-emulator.md b/src/_includes/docs/install/devices/android-emulator.md index 151dfd669e..e4a823d575 100644 --- a/src/_includes/docs/install/devices/android-emulator.md +++ b/src/_includes/docs/install/devices/android-emulator.md @@ -1,6 +1,6 @@ #### Set up the Android emulator -{% include docs/help-link.md location='android-emulator' section='#android-setup' %} +{% render docs/help-link.md, location:'android-emulator', section:'#android-setup' %} {% case include.devos %} {% when 'Windows','Linux' -%} diff --git a/src/_includes/docs/install/devices/android-physical.md b/src/_includes/docs/install/devices/android-physical.md index bade78cdf6..c48ad54454 100644 --- a/src/_includes/docs/install/devices/android-physical.md +++ b/src/_includes/docs/install/devices/android-physical.md @@ -1,6 +1,6 @@ #### Set up your target Android device -{% include docs/help-link.md location='android-device' section='#android-setup' %} +{% render docs/help-link.md, location:'android-device', section:'#android-setup' %} To configure your Flutter app to run on a physical Android device, you need an Android device running {{site.targetmin.android}} or later. diff --git a/src/_includes/docs/install/flutter-doctor.md b/src/_includes/docs/install/flutter-doctor.md index 6c11b9a3a9..96ccf9a24c 100644 --- a/src/_includes/docs/install/flutter-doctor.md +++ b/src/_includes/docs/install/flutter-doctor.md @@ -1,7 +1,7 @@ ## Check your development setup -{% include docs/help-link.md location='win-doctor' %} +{% render docs/help-link.md, location:'win-doctor' %} {% assign compiler = include.compiler %} diff --git a/src/_includes/docs/install/flutter/download.md b/src/_includes/docs/install/flutter/download.md index ae299df3f7..910044b2c5 100644 --- a/src/_includes/docs/install/flutter/download.md +++ b/src/_includes/docs/install/flutter/download.md @@ -81,7 +81,7 @@ then extract the SDK. Consider creating a directory at {{diroptions}}. {% if include.os == "Windows" -%} - {% include docs/install/admonitions/install-paths.md %} + {% render docs/install/admonitions/install-paths.md %} {% endif %} 1. Extract the zip file into the directory you want to store the Flutter SDK. diff --git a/src/_includes/docs/install/flutter/vscode.md b/src/_includes/docs/install/flutter/vscode.md index 05709b7950..9363ddc8ce 100644 --- a/src/_includes/docs/install/flutter/vscode.md +++ b/src/_includes/docs/install/flutter/vscode.md @@ -48,7 +48,7 @@ you have installed [Visual Studio Code][] {% if include.os == "Windows" -%} Consider `%USERPROFILE%` or `C:\dev`. - {% include docs/install/admonitions/install-paths.md %} + {% render docs/install/admonitions/install-paths.md %} {% else -%} Consider `~/development/` {% endif %} diff --git a/src/_includes/docs/install/reqs/add-web.md b/src/_includes/docs/install/reqs/add-web.md index 9a0e8259e2..8eaa7fcc19 100644 --- a/src/_includes/docs/install/reqs/add-web.md +++ b/src/_includes/docs/install/reqs/add-web.md @@ -5,6 +5,6 @@ 1. Download and install the {{include.devos}} version of [Google Chrome][] to debug JavaScript code for web apps. -{% if include.devos == 'Linux' %}{% include docs/install/accordions/install-chrome-from-cli.md %}{% endif %} +{% if include.devos == 'Linux' %}{% render docs/install/accordions/install-chrome-from-cli.md %}{% endif %} [Google Chrome]: https://www.google.com/chrome/dr/download/ diff --git a/src/_includes/docs/install/reqs/linux/base.md b/src/_includes/docs/install/reqs/linux/base.md index 1896407632..1ed2592a57 100644 --- a/src/_includes/docs/install/reqs/linux/base.md +++ b/src/_includes/docs/install/reqs/linux/base.md @@ -1,5 +1,5 @@ -{% include docs/install/admonitions/install-in-order.md %} +{% render docs/install/admonitions/install-in-order.md %} ## Verify system requirements @@ -55,7 +55,7 @@ Flutter supports {{supported-os}}. {% include docs/install/reqs/linux/software.md target=include.target os=include.os %} -{% include docs/install/reqs/flutter-sdk/flutter-doctor-precedence.md %} +{% render docs/install/reqs/flutter-sdk/flutter-doctor-precedence.md %} The developers of the preceding software provide support for those products. To troubleshoot installation issues, consult that product's documentation. diff --git a/src/_includes/docs/install/reqs/linux/software.md b/src/_includes/docs/install/reqs/linux/software.md index 429214a95e..b066cb1fb8 100644 --- a/src/_includes/docs/install/reqs/linux/software.md +++ b/src/_includes/docs/install/reqs/linux/software.md @@ -54,7 +54,7 @@ To develop Flutter on {{include.os}}: 1. Install [Google Chrome][] to debug JavaScript code for web apps. -{% include docs/install/accordions/install-chrome-from-cli.md %} +{% render docs/install/accordions/install-chrome-from-cli.md %} {% endcase -%} diff --git a/src/_includes/docs/install/reqs/linux/unset-path.md b/src/_includes/docs/install/reqs/linux/unset-path.md index 96ea8d54c5..dbe8a30130 100644 --- a/src/_includes/docs/install/reqs/linux/unset-path.md +++ b/src/_includes/docs/install/reqs/linux/unset-path.md @@ -4,7 +4,7 @@ To remove Flutter commands from {{include.terminal}}, remove Flutter from the `PATH` environment variable. -{% include docs/install/reqs/windows/open-envvars.md %} +{% render docs/install/reqs/windows/open-envvars.md %} 1. Under **User variables for (username)** section, look for the **Path** entry. diff --git a/src/_includes/docs/install/reqs/macos/base.md b/src/_includes/docs/install/reqs/macos/base.md index 6f6ac0c8c6..b9d3296e9a 100644 --- a/src/_includes/docs/install/reqs/macos/base.md +++ b/src/_includes/docs/install/reqs/macos/base.md @@ -7,7 +7,7 @@ {% assign v-target = include.target %} {% endcase %} -{% include docs/install/admonitions/install-in-order.md %} +{% render docs/install/admonitions/install-in-order.md %} ## Verify system requirements @@ -56,7 +56,7 @@ Download and install the following packages. The developers of the preceding software provide support for those products. To troubleshoot installation issues, consult that product's documentation. -{% include docs/install/reqs/flutter-sdk/flutter-doctor-precedence.md %} +{% render docs/install/reqs/flutter-sdk/flutter-doctor-precedence.md %} #### Text editor or integrated development environment diff --git a/src/_includes/docs/install/reqs/windows/base.md b/src/_includes/docs/install/reqs/windows/base.md index a7db453279..63a8538a04 100644 --- a/src/_includes/docs/install/reqs/windows/base.md +++ b/src/_includes/docs/install/reqs/windows/base.md @@ -1,5 +1,5 @@ -{% include docs/install/admonitions/install-in-order.md %} +{% render docs/install/admonitions/install-in-order.md %} ## Verify system requirements @@ -47,7 +47,7 @@ Download and install the Windows version of the following packages: The developers of the preceding software provide support for those products. To troubleshoot installation issues, consult that product's documentation. -{% include docs/install/reqs/flutter-sdk/flutter-doctor-precedence.md %} +{% render docs/install/reqs/flutter-sdk/flutter-doctor-precedence.md %} ## Configure a text editor or IDE diff --git a/src/_includes/docs/install/reqs/windows/set-path.md b/src/_includes/docs/install/reqs/windows/set-path.md index 1063aceaf9..e5798ffa8b 100644 --- a/src/_includes/docs/install/reqs/windows/set-path.md +++ b/src/_includes/docs/install/reqs/windows/set-path.md @@ -1,14 +1,14 @@ ### Update your Windows PATH variable {:.no_toc} -{% include docs/help-link.md location='win-path' section='#unable-to-find-the-flutter-command' %} +{% render docs/help-link.md, location:'win-path', section:'#unable-to-find-the-flutter-command' %} To run Flutter commands in {{include.terminal}}, add Flutter to the `PATH` environment variable. This section presumes that you installed the Flutter SDK in `%USERPROFILE%\dev\flutter`. -{% include docs/install/reqs/windows/open-envvars.md %} +{% render docs/install/reqs/windows/open-envvars.md %} 1. In the **User variables for (username)** section, look for the **Path** entry. diff --git a/src/_includes/docs/install/reqs/windows/unset-path.md b/src/_includes/docs/install/reqs/windows/unset-path.md index d6f47784dc..45b317e755 100644 --- a/src/_includes/docs/install/reqs/windows/unset-path.md +++ b/src/_includes/docs/install/reqs/windows/unset-path.md @@ -4,7 +4,7 @@ To remove Flutter commands from {{include.terminal}}, remove Flutter to the `PATH` environment variable. -{% include docs/install/reqs/windows/open-envvars.md %} +{% render docs/install/reqs/windows/open-envvars.md %} 1. Under **User variables for (username)** section, look for the **Path** entry. diff --git a/src/_includes/docs/install/test-drive/restart-vscode.md b/src/_includes/docs/install/test-drive/restart-vscode.md deleted file mode 100644 index 9569f35f42..0000000000 --- a/src/_includes/docs/install/test-drive/restart-vscode.md +++ /dev/null @@ -1,4 +0,0 @@ -:::warning -If VS Code was running during your initial Flutter setup, -you might need to restart it for VS Code's Flutter plugin to detect the Flutter SDK. -::: diff --git a/src/_includes/docs/run-profile.md b/src/_includes/docs/run-profile.md deleted file mode 100644 index c506be48be..0000000000 --- a/src/_includes/docs/run-profile.md +++ /dev/null @@ -1,22 +0,0 @@ -## Profile or release runs - -:::important -Do _not_ test the performance of your app with debug and -hot reload enabled. -::: - -So far you've been running your app in *debug* mode. Debug -mode trades performance for useful developer features such -as hot reload and step debugging. It's not unexpected to -see slow performance and janky animations in debug mode. -Once you are ready to analyze performance or release your -app, you'll want to use Flutter's "profile" or "release" -build modes. For more details, see [Flutter's build modes][]. - -:::important -If you're concerned about the package size of your app, -see [Measuring your app's size][]. -::: - -[Flutter's build modes]: /testing/build-modes -[Measuring your app's size]: /perf/app-size diff --git a/src/_includes/snackbar.html b/src/_includes/snackbar.html index de2b2a390c..13df1a82af 100644 --- a/src/_includes/snackbar.html +++ b/src/_includes/snackbar.html @@ -1,10 +1,10 @@ -

    +
    - {{ include.label }} + {{label}}
    - {% if include.action -%} - + {% if action -%} + {% endif -%}
    diff --git a/src/_layouts/default.html b/src/_layouts/default.html index 079fce947a..704e4bf628 100644 --- a/src/_layouts/default.html +++ b/src/_layouts/default.html @@ -31,7 +31,7 @@
    {% if deprecated %} - {% include snackbar.html class="snackbar--dismissible" label="This page is deprecated and its content may be out of date." action="Dismiss" %} + {% render snackbar.html, class:"snackbar--dismissible", label:"This page is deprecated and its content may be out of date.", action:"Dismiss" %} {% endif %} {% include next-prev-nav.html prev=prev next=next %} diff --git a/src/content/codelabs/implicit-animations.md b/src/content/codelabs/implicit-animations.md index 17402b6029..99353e69bb 100644 --- a/src/content/codelabs/implicit-animations.md +++ b/src/content/codelabs/implicit-animations.md @@ -63,7 +63,7 @@ consists of a [Material App][] home screen containing: To view the example, Click **Run**: -{% include docs/implicit-animations/fade-in-starter-code.md %} +{% render docs/implicit-animations/fade-in-starter-code.md %} ### Animate opacity with AnimatedOpacity widget @@ -200,7 +200,7 @@ The `AnimatedOpacity` widget manages everything in between. Here's the example with the completed changes you've made. Run this example then click **Show details** to trigger the animation. -{% include docs/implicit-animations/fade-in-complete.md %} +{% render docs/implicit-animations/fade-in-complete.md %} ### Putting it all together @@ -242,7 +242,7 @@ It starts with a [Material App][] home screen that contains: To start the example, click **Run**. -{% include docs/implicit-animations/shape-shifting-starter-code.md %} +{% render docs/implicit-animations/shape-shifting-starter-code.md %} ### Animate color, borderRadius, and margin with AnimatedContainer @@ -378,7 +378,7 @@ Run the code and click **Change** to trigger the animation. Each time you click **Change**, the shape animates to its new values for `margin`, `borderRadius`, and `color`. -{% include docs/implicit-animations/shape-shifting-complete.md %} +{% render docs/implicit-animations/shape-shifting-complete.md %} ### Using animation curves diff --git a/src/content/community/china/index.md b/src/content/community/china/index.md index b85b7361bf..6f7594dd34 100644 --- a/src/content/community/china/index.md +++ b/src/content/community/china/index.md @@ -8,7 +8,7 @@ os-list: [Windows, macOS, Linux, ChromeOS] {% assign flutter-sdk = 'flutter_opsys_v3.13.0-stable.' %} {% capture sdk-path -%}flutter_infra_release/releases/stable/opsys/{{flutter-sdk}}{%- endcapture %} -{% include docs/china-notice-cn.md %} +{% render docs/china-notice-cn.md %} To speed the download and installation of Flutter in China, consider using a [mirror site][] or _mirror_. diff --git a/src/content/get-started/install/chromeos/index.md b/src/content/get-started/install/chromeos/index.md index 863430d851..27e69189ec 100644 --- a/src/content/get-started/install/chromeos/index.md +++ b/src/content/get-started/install/chromeos/index.md @@ -40,4 +40,4 @@ to run your first Flutter app. You can set up additional platforms later. _If you don't have a preference, choose **{{rec-target}}**._ -{% include docs/china-notice.md %} +{% render docs/china-notice.md %} diff --git a/src/content/get-started/install/index.md b/src/content/get-started/install/index.md index afee9e000e..d870dbb6fe 100644 --- a/src/content/get-started/install/index.md +++ b/src/content/get-started/install/index.md @@ -21,4 +21,4 @@ os-list: [Windows, macOS, Linux, ChromeOS] {% endfor %}
    -{% include docs/china-notice.md %} +{% render docs/china-notice.md %} diff --git a/src/content/get-started/install/linux/index.md b/src/content/get-started/install/linux/index.md index 2efd4afc72..16d60500bb 100644 --- a/src/content/get-started/install/linux/index.md +++ b/src/content/get-started/install/linux/index.md @@ -42,4 +42,4 @@ to run your first Flutter app. You can set up additional platforms later. _If you don't have a preference, choose **{{rec-target}}**._ -{% include docs/china-notice.md %} +{% render docs/china-notice.md %} diff --git a/src/content/get-started/install/macos/index.md b/src/content/get-started/install/macos/index.md index e9e97c25d6..894437cfd4 100644 --- a/src/content/get-started/install/macos/index.md +++ b/src/content/get-started/install/macos/index.md @@ -55,4 +55,4 @@ to run your first Flutter app. You can set up additional platforms later. _If you don't have a preference, choose **{{rec-target}}**._ -{% include docs/china-notice.md %} +{% render docs/china-notice.md %} diff --git a/src/content/get-started/install/windows/index.md b/src/content/get-started/install/windows/index.md index 5ffd935af6..a986c972b8 100644 --- a/src/content/get-started/install/windows/index.md +++ b/src/content/get-started/install/windows/index.md @@ -49,4 +49,4 @@ to run your first Flutter app. You can set up additional platforms later. _If you don't have a preference, choose **{{rec-target}}**._ -{% include docs/china-notice.md %} +{% render docs/china-notice.md %} diff --git a/src/content/perf/best-practices.md b/src/content/perf/best-practices.md index c1a4cf8977..2208d889d2 100644 --- a/src/content/perf/best-practices.md +++ b/src/content/perf/best-practices.md @@ -4,7 +4,7 @@ short-title: Best practices description: How to ensure that your Flutter app is performant. --- -{% include docs/performance.md %} +{% render docs/performance.md %} Generally, Flutter applications are performant by default, so you only need to avoid common pitfalls to get excellent diff --git a/src/content/perf/rendering-performance.md b/src/content/perf/rendering-performance.md index bd7b814440..199b367839 100644 --- a/src/content/perf/rendering-performance.md +++ b/src/content/perf/rendering-performance.md @@ -3,7 +3,7 @@ title: Improving rendering performance description: How to measure and evaluate your app's rendering performance. --- -{% include docs/performance.md %} +{% render docs/performance.md %} Rendering animations in your app is one of the most cited topics of interest when it comes to measuring performance. diff --git a/src/content/perf/shader.md b/src/content/perf/shader.md index 795c5bf52b..135010d678 100644 --- a/src/content/perf/shader.md +++ b/src/content/perf/shader.md @@ -4,7 +4,7 @@ short-title: Shader jank description: What is shader jank and how to minimize it. --- -{% include docs/performance.md %} +{% render docs/performance.md %} If the animations on your mobile app appear to be janky, but only on the first run, diff --git a/src/content/perf/ui-performance.md b/src/content/perf/ui-performance.md index 213409a20c..88c0c684f1 100644 --- a/src/content/perf/ui-performance.md +++ b/src/content/perf/ui-performance.md @@ -4,7 +4,7 @@ subtitle: Where to look when your Flutter app drops frames in the UI. description: Diagnosing UI performance issues in Flutter. --- -{% include docs/performance.md %} +{% render docs/performance.md %} :::secondary What you'll learn * Flutter aims to provide 60 frames per second (fps) performance, diff --git a/src/content/release/archive.md b/src/content/release/archive.md index 44509df830..884b8a5053 100644 --- a/src/content/release/archive.md +++ b/src/content/release/archive.md @@ -16,7 +16,7 @@ The {{site.sdk.channel | capitalize }} channel contains the most stable Flutter builds. To learn more, check out [Flutter's channels][]. -{% include docs/china-notice.md %} +{% render docs/china-notice.md %} To learn what's new in the major Flutter releases, check out the [release notes][] page. diff --git a/src/content/testing/code-debugging.md b/src/content/testing/code-debugging.md index 48f815a577..9278b492eb 100644 --- a/src/content/testing/code-debugging.md +++ b/src/content/testing/code-debugging.md @@ -193,7 +193,7 @@ the root of the widget tree. It returns a "flattened" tree.
    Expand to view the widget tree for Example 4 -{% include docs/testing/trees/widget-tree.md -%} +{% render docs/testing/trees/widget-tree.md -%}
    @@ -267,7 +267,7 @@ The constraints flow down the tree and the sizes flow back up.
    Expand to view the render tree for Example 5 -{% include docs/testing/trees/render-tree.md -%} +{% render docs/testing/trees/render-tree.md -%}
    @@ -369,7 +369,7 @@ class AppHome extends StatelessWidget {
    Expand to view the output of layer tree for Example 6 -{% include docs/testing/trees/layer-tree.md -%} +{% render docs/testing/trees/layer-tree.md -%}
    @@ -464,7 +464,7 @@ class AppHome extends StatelessWidget {
    Expand to view the focus tree for Example 7 -{% include docs/testing/trees/focus-tree.md -%} +{% render docs/testing/trees/focus-tree.md -%}
    @@ -524,7 +524,7 @@ class AppHome extends StatelessWidget {
    Expand to view the semantic tree for Example 8 -{% include docs/testing/trees/semantic-tree.md -%} +{% render docs/testing/trees/semantic-tree.md -%}
    diff --git a/src/content/testing/native-debugging.md b/src/content/testing/native-debugging.md index 7cb7238313..438e98eed6 100644 --- a/src/content/testing/native-debugging.md +++ b/src/content/testing/native-debugging.md @@ -176,17 +176,17 @@ You can step in, out, and over Dart statements, hot reload, or resume the app.
    -| Icon | Action | Default keyboard shortcut | -|------------------------------------------------------|-----------------------|-------------------------------------------------------| -| {% include docs/vscode-flutter-bar/play.md %} | Start or Resume | F5 | -| {% include docs/vscode-flutter-bar/pause.md %} | Pause | F6 | -| {% include docs/vscode-flutter-bar/step-over.md %} | Step Over | F10 | -| {% include docs/vscode-flutter-bar/step-into.md %} | Step Into | F11 | -| {% include docs/vscode-flutter-bar/step-out.md %} | Step Out | Shift + F11 | -| {% include docs/vscode-flutter-bar/hot-reload.md %} | Hot Reload | Ctrl + F5 | -| {% include docs/vscode-flutter-bar/hot-restart.md %} | Hot Restart | Shift + Special + F5 | -| {% include docs/vscode-flutter-bar/stop.md %} | Stop | Shift + F5 | -| {% include docs/vscode-flutter-bar/inspector.md %} | Open Widget Inspector | | +| Icon | Action | Default keyboard shortcut | +|-----------------------------------------------------|-----------------------|-------------------------------------------------------| +| {% render docs/vscode-flutter-bar/play.md %} | Start or Resume | F5 | +| {% render docs/vscode-flutter-bar/pause.md %} | Pause | F6 | +| {% render docs/vscode-flutter-bar/step-over.md %} | Step Over | F10 | +| {% render docs/vscode-flutter-bar/step-into.md %} | Step Into | F11 | +| {% render docs/vscode-flutter-bar/step-out.md %} | Step Out | Shift + F11 | +| {% render docs/vscode-flutter-bar/hot-reload.md %} | Hot Reload | Ctrl + F5 | +| {% render docs/vscode-flutter-bar/hot-restart.md %} | Hot Restart | Shift + Special + F5 | +| {% render docs/vscode-flutter-bar/stop.md %} | Stop | Shift + F5 | +| {% render docs/vscode-flutter-bar/inspector.md %} | Open Widget Inspector | | {:.table .table-striped} From f5fba236660aa44fb76b5439fd7581e9147a2351 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Sun, 5 May 2024 12:34:05 -0500 Subject: [PATCH 043/109] Break up examples/development to match newer IA (#10507) --- .github/dependabot.yml | 8 +-- .../json/analysis_options.yaml | 0 .../data-and-backend/json/lib/extras.dart | 0 .../json/lib/manual/main.dart | 0 .../json/lib/manual/user.dart | 0 .../json/lib/nested/address.dart | 0 .../json/lib/nested/address.g.dart | 0 .../json/lib/nested/main.dart | 0 .../json/lib/nested/user.dart | 0 .../json/lib/nested/user.g.dart | 0 .../json/lib/serializable/main.dart | 0 .../json/lib/serializable/user.dart | 0 .../json/lib/serializable/user.g.dart | 0 .../data-and-backend/json/pubspec.yaml | 2 +- .../plugin_api_migration/pubspec.yaml | 50 ------------------- .../isolates/analysis_options.yaml | 0 .../lib/isolate_binary_messenger.dart | 0 .../concurrency/isolates/lib/main.dart | 0 .../concurrency/isolates/pubspec.yaml | 0 .../ffi}/analysis_options.yaml | 0 .../ffi}/lib/c_interop.dart | 0 .../platform_integration/ffi/pubspec.yaml | 23 +++++++++ .../pigeon}/analysis_options.yaml | 0 .../pigeon}/lib/generated_pigeon.dart | 0 .../pigeon}/lib/pigeon_source.dart | 0 .../pigeon}/lib/use_pigeon.dart | 0 .../pigeon}/pubspec.yaml | 4 +- .../platform_channels}/analysis_options.yaml | 0 .../lib/platform_channels.dart | 0 .../platform_channels/pubspec.yaml | 24 +++++++++ .../platform_views/analysis_options.yaml | 5 ++ .../lib}/native_view_example_1.dart | 0 .../lib}/native_view_example_2.dart | 0 .../lib}/native_view_example_3.dart | 0 .../platform_views/pubspec.yaml | 22 ++++++++ .../analysis_options.yaml | 5 ++ .../plugin_api_migration/lib/css_colors.dart | 0 .../plugin_api_migration/lib/test.dart | 0 .../lib/url_launcher.dart | 0 .../plugin_api_migration/pubspec.yaml | 28 +++++++++++ examples/tools/analysis_options.yaml | 5 ++ .../tools/lib/hot-reload/after.dart | 0 .../tools/lib/hot-reload/before.dart | 0 .../tools/lib/hot-reload/foo_const.dart | 0 .../tools/lib/hot-reload/getter.dart | 0 examples/{development => }/tools/pubspec.yaml | 2 +- .../data-and-backend/serialization/json.md | 2 +- .../packages-and-plugins/using-packages.md | 2 +- src/content/perf/isolates.md | 2 +- .../platform-integration/android/c-interop.md | 2 +- .../android/platform-views.md | 16 +++--- .../platform-integration/ios/c-interop.md | 2 +- .../ios/platform-views.md | 8 +-- .../platform-integration/macos/c-interop.md | 2 +- .../platform-integration/platform-channels.md | 18 ++++--- .../breaking-changes/plugin-api-migration.md | 2 +- src/content/tools/hot-reload.md | 2 +- 57 files changed, 150 insertions(+), 86 deletions(-) rename examples/{development => }/data-and-backend/json/analysis_options.yaml (100%) rename examples/{development => }/data-and-backend/json/lib/extras.dart (100%) rename examples/{development => }/data-and-backend/json/lib/manual/main.dart (100%) rename examples/{development => }/data-and-backend/json/lib/manual/user.dart (100%) rename examples/{development => }/data-and-backend/json/lib/nested/address.dart (100%) rename examples/{development => }/data-and-backend/json/lib/nested/address.g.dart (100%) rename examples/{development => }/data-and-backend/json/lib/nested/main.dart (100%) rename examples/{development => }/data-and-backend/json/lib/nested/user.dart (100%) rename examples/{development => }/data-and-backend/json/lib/nested/user.g.dart (100%) rename examples/{development => }/data-and-backend/json/lib/serializable/main.dart (100%) rename examples/{development => }/data-and-backend/json/lib/serializable/user.dart (100%) rename examples/{development => }/data-and-backend/json/lib/serializable/user.g.dart (100%) rename examples/{development => }/data-and-backend/json/pubspec.yaml (88%) delete mode 100644 examples/development/plugin_api_migration/pubspec.yaml rename examples/{development => perf}/concurrency/isolates/analysis_options.yaml (100%) rename examples/{development => perf}/concurrency/isolates/lib/isolate_binary_messenger.dart (100%) rename examples/{development => perf}/concurrency/isolates/lib/main.dart (100%) rename examples/{development => perf}/concurrency/isolates/pubspec.yaml (100%) rename examples/{development/platform_integration => platform_integration/ffi}/analysis_options.yaml (100%) rename examples/{development/platform_integration => platform_integration/ffi}/lib/c_interop.dart (100%) create mode 100644 examples/platform_integration/ffi/pubspec.yaml rename examples/{development/plugin_api_migration => platform_integration/pigeon}/analysis_options.yaml (100%) rename examples/{development/platform_integration => platform_integration/pigeon}/lib/generated_pigeon.dart (100%) rename examples/{development/platform_integration => platform_integration/pigeon}/lib/pigeon_source.dart (100%) rename examples/{development/platform_integration => platform_integration/pigeon}/lib/use_pigeon.dart (100%) rename examples/{development/platform_integration => platform_integration/pigeon}/pubspec.yaml (73%) rename examples/{development/tools => platform_integration/platform_channels}/analysis_options.yaml (100%) rename examples/{development/platform_integration => platform_integration/platform_channels}/lib/platform_channels.dart (100%) create mode 100644 examples/platform_integration/platform_channels/pubspec.yaml create mode 100644 examples/platform_integration/platform_views/analysis_options.yaml rename examples/{development/platform_integration/lib/platform_views => platform_integration/platform_views/lib}/native_view_example_1.dart (100%) rename examples/{development/platform_integration/lib/platform_views => platform_integration/platform_views/lib}/native_view_example_2.dart (100%) rename examples/{development/platform_integration/lib/platform_views => platform_integration/platform_views/lib}/native_view_example_3.dart (100%) create mode 100644 examples/platform_integration/platform_views/pubspec.yaml create mode 100644 examples/platform_integration/plugin_api_migration/analysis_options.yaml rename examples/{development => platform_integration}/plugin_api_migration/lib/css_colors.dart (100%) rename examples/{development => platform_integration}/plugin_api_migration/lib/test.dart (100%) rename examples/{development => platform_integration}/plugin_api_migration/lib/url_launcher.dart (100%) create mode 100644 examples/platform_integration/plugin_api_migration/pubspec.yaml create mode 100644 examples/tools/analysis_options.yaml rename examples/{development => }/tools/lib/hot-reload/after.dart (100%) rename examples/{development => }/tools/lib/hot-reload/before.dart (100%) rename examples/{development => }/tools/lib/hot-reload/foo_const.dart (100%) rename examples/{development => }/tools/lib/hot-reload/getter.dart (100%) rename examples/{development => }/tools/pubspec.yaml (90%) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 5dedd56fcb..ccf28b77d6 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -703,7 +703,7 @@ updates: - "lang.dart" - package-ecosystem: "pub" versioning-strategy: "increase-if-necessary" - directory: "/examples/development/data-and-backend/json" + directory: "/examples/data-and-backend/json" schedule: interval: "daily" labels: @@ -711,7 +711,7 @@ updates: - "lang.dart" - package-ecosystem: "pub" versioning-strategy: "increase-if-necessary" - directory: "/examples/development/platform_integration" + directory: "/examples/platform_integration" schedule: interval: "daily" labels: @@ -719,7 +719,7 @@ updates: - "lang.dart" - package-ecosystem: "pub" versioning-strategy: "increase-if-necessary" - directory: "/examples/development/plugin_api_migration" + directory: "/examples/platform_integration/plugin_api_migration" schedule: interval: "daily" labels: @@ -727,7 +727,7 @@ updates: - "lang.dart" - package-ecosystem: "pub" versioning-strategy: "increase-if-necessary" - directory: "/examples/development/tools" + directory: "/examples/tools" schedule: interval: "daily" labels: diff --git a/examples/development/data-and-backend/json/analysis_options.yaml b/examples/data-and-backend/json/analysis_options.yaml similarity index 100% rename from examples/development/data-and-backend/json/analysis_options.yaml rename to examples/data-and-backend/json/analysis_options.yaml diff --git a/examples/development/data-and-backend/json/lib/extras.dart b/examples/data-and-backend/json/lib/extras.dart similarity index 100% rename from examples/development/data-and-backend/json/lib/extras.dart rename to examples/data-and-backend/json/lib/extras.dart diff --git a/examples/development/data-and-backend/json/lib/manual/main.dart b/examples/data-and-backend/json/lib/manual/main.dart similarity index 100% rename from examples/development/data-and-backend/json/lib/manual/main.dart rename to examples/data-and-backend/json/lib/manual/main.dart diff --git a/examples/development/data-and-backend/json/lib/manual/user.dart b/examples/data-and-backend/json/lib/manual/user.dart similarity index 100% rename from examples/development/data-and-backend/json/lib/manual/user.dart rename to examples/data-and-backend/json/lib/manual/user.dart diff --git a/examples/development/data-and-backend/json/lib/nested/address.dart b/examples/data-and-backend/json/lib/nested/address.dart similarity index 100% rename from examples/development/data-and-backend/json/lib/nested/address.dart rename to examples/data-and-backend/json/lib/nested/address.dart diff --git a/examples/development/data-and-backend/json/lib/nested/address.g.dart b/examples/data-and-backend/json/lib/nested/address.g.dart similarity index 100% rename from examples/development/data-and-backend/json/lib/nested/address.g.dart rename to examples/data-and-backend/json/lib/nested/address.g.dart diff --git a/examples/development/data-and-backend/json/lib/nested/main.dart b/examples/data-and-backend/json/lib/nested/main.dart similarity index 100% rename from examples/development/data-and-backend/json/lib/nested/main.dart rename to examples/data-and-backend/json/lib/nested/main.dart diff --git a/examples/development/data-and-backend/json/lib/nested/user.dart b/examples/data-and-backend/json/lib/nested/user.dart similarity index 100% rename from examples/development/data-and-backend/json/lib/nested/user.dart rename to examples/data-and-backend/json/lib/nested/user.dart diff --git a/examples/development/data-and-backend/json/lib/nested/user.g.dart b/examples/data-and-backend/json/lib/nested/user.g.dart similarity index 100% rename from examples/development/data-and-backend/json/lib/nested/user.g.dart rename to examples/data-and-backend/json/lib/nested/user.g.dart diff --git a/examples/development/data-and-backend/json/lib/serializable/main.dart b/examples/data-and-backend/json/lib/serializable/main.dart similarity index 100% rename from examples/development/data-and-backend/json/lib/serializable/main.dart rename to examples/data-and-backend/json/lib/serializable/main.dart diff --git a/examples/development/data-and-backend/json/lib/serializable/user.dart b/examples/data-and-backend/json/lib/serializable/user.dart similarity index 100% rename from examples/development/data-and-backend/json/lib/serializable/user.dart rename to examples/data-and-backend/json/lib/serializable/user.dart diff --git a/examples/development/data-and-backend/json/lib/serializable/user.g.dart b/examples/data-and-backend/json/lib/serializable/user.g.dart similarity index 100% rename from examples/development/data-and-backend/json/lib/serializable/user.g.dart rename to examples/data-and-backend/json/lib/serializable/user.g.dart diff --git a/examples/development/data-and-backend/json/pubspec.yaml b/examples/data-and-backend/json/pubspec.yaml similarity index 88% rename from examples/development/data-and-backend/json/pubspec.yaml rename to examples/data-and-backend/json/pubspec.yaml index 6d010d7996..854e556bc2 100644 --- a/examples/development/data-and-backend/json/pubspec.yaml +++ b/examples/data-and-backend/json/pubspec.yaml @@ -12,6 +12,6 @@ dependencies: dev_dependencies: example_utils: - path: ../../../example_utils + path: ../../example_utils build_runner: ^2.4.8 json_serializable: ^6.7.1 diff --git a/examples/development/plugin_api_migration/pubspec.yaml b/examples/development/plugin_api_migration/pubspec.yaml deleted file mode 100644 index b428478456..0000000000 --- a/examples/development/plugin_api_migration/pubspec.yaml +++ /dev/null @@ -1,50 +0,0 @@ -name: plugin_api_migration -description: A new Flutter project. - -# The following line prevents the package from being accidentally published to -# pub.dev using `flutter pub publish`. This is preferred for private packages. -publish_to: none # Remove this line if you wish to publish to pub.dev - -# The following defines the version and build number for your application. -# A version number is three numbers separated by dots, like 1.2.43 -# followed by an optional build number separated by a +. -# Both the version and the builder number may be overridden in flutter -# build by specifying --build-name and --build-number, respectively. -# In Android, build-name is used as versionName while build-number used as versionCode. -# Read more about Android versioning at https://developer.android.com/studio/publish/versioning -# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. -# Read more about iOS versioning at -# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.0+1 - -environment: - sdk: ^3.3.0 - -# Dependencies specify other packages that your package needs in order to work. -# To automatically upgrade your package dependencies to the latest versions -# consider running `flutter pub upgrade --major-versions`. Alternatively, -# dependencies can be manually updated by changing the version numbers below to -# the latest version available on pub.dev. To see which dependencies have newer -# versions available, run `flutter pub outdated`. -dependencies: - flutter: - sdk: flutter - css_colors: ^1.1.4 - url_launcher: ^6.2.4 - battery: ^2.0.3 - flutter_test: - sdk: flutter - path: ^1.9.0 - integration_test: - sdk: flutter - - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^1.0.6 - -dev_dependencies: - example_utils: - path: ../../example_utils - -flutter: - uses-material-design: true diff --git a/examples/development/concurrency/isolates/analysis_options.yaml b/examples/perf/concurrency/isolates/analysis_options.yaml similarity index 100% rename from examples/development/concurrency/isolates/analysis_options.yaml rename to examples/perf/concurrency/isolates/analysis_options.yaml diff --git a/examples/development/concurrency/isolates/lib/isolate_binary_messenger.dart b/examples/perf/concurrency/isolates/lib/isolate_binary_messenger.dart similarity index 100% rename from examples/development/concurrency/isolates/lib/isolate_binary_messenger.dart rename to examples/perf/concurrency/isolates/lib/isolate_binary_messenger.dart diff --git a/examples/development/concurrency/isolates/lib/main.dart b/examples/perf/concurrency/isolates/lib/main.dart similarity index 100% rename from examples/development/concurrency/isolates/lib/main.dart rename to examples/perf/concurrency/isolates/lib/main.dart diff --git a/examples/development/concurrency/isolates/pubspec.yaml b/examples/perf/concurrency/isolates/pubspec.yaml similarity index 100% rename from examples/development/concurrency/isolates/pubspec.yaml rename to examples/perf/concurrency/isolates/pubspec.yaml diff --git a/examples/development/platform_integration/analysis_options.yaml b/examples/platform_integration/ffi/analysis_options.yaml similarity index 100% rename from examples/development/platform_integration/analysis_options.yaml rename to examples/platform_integration/ffi/analysis_options.yaml diff --git a/examples/development/platform_integration/lib/c_interop.dart b/examples/platform_integration/ffi/lib/c_interop.dart similarity index 100% rename from examples/development/platform_integration/lib/c_interop.dart rename to examples/platform_integration/ffi/lib/c_interop.dart diff --git a/examples/platform_integration/ffi/pubspec.yaml b/examples/platform_integration/ffi/pubspec.yaml new file mode 100644 index 0000000000..a6428af62a --- /dev/null +++ b/examples/platform_integration/ffi/pubspec.yaml @@ -0,0 +1,23 @@ +name: ffi_examples +description: >- + Examples showcasing how to use Dart's FFI support for platform integration. + +publish_to: none + +version: 1.0.0+1 + +environment: + sdk: ^3.3.0 + +dependencies: + flutter: + sdk: flutter + +dev_dependencies: + example_utils: + path: ../../example_utils + flutter_test: + sdk: flutter + +flutter: + uses-material-design: true diff --git a/examples/development/plugin_api_migration/analysis_options.yaml b/examples/platform_integration/pigeon/analysis_options.yaml similarity index 100% rename from examples/development/plugin_api_migration/analysis_options.yaml rename to examples/platform_integration/pigeon/analysis_options.yaml diff --git a/examples/development/platform_integration/lib/generated_pigeon.dart b/examples/platform_integration/pigeon/lib/generated_pigeon.dart similarity index 100% rename from examples/development/platform_integration/lib/generated_pigeon.dart rename to examples/platform_integration/pigeon/lib/generated_pigeon.dart diff --git a/examples/development/platform_integration/lib/pigeon_source.dart b/examples/platform_integration/pigeon/lib/pigeon_source.dart similarity index 100% rename from examples/development/platform_integration/lib/pigeon_source.dart rename to examples/platform_integration/pigeon/lib/pigeon_source.dart diff --git a/examples/development/platform_integration/lib/use_pigeon.dart b/examples/platform_integration/pigeon/lib/use_pigeon.dart similarity index 100% rename from examples/development/platform_integration/lib/use_pigeon.dart rename to examples/platform_integration/pigeon/lib/use_pigeon.dart diff --git a/examples/development/platform_integration/pubspec.yaml b/examples/platform_integration/pigeon/pubspec.yaml similarity index 73% rename from examples/development/platform_integration/pubspec.yaml rename to examples/platform_integration/pigeon/pubspec.yaml index aa1d2e5619..20e2655037 100644 --- a/examples/development/platform_integration/pubspec.yaml +++ b/examples/platform_integration/pigeon/pubspec.yaml @@ -1,5 +1,5 @@ -name: platform_integration -description: Examples for documenting platform integration. +name: pigeon_examples +description: Examples showing how to use pigeon for platform integration. publish_to: none diff --git a/examples/development/tools/analysis_options.yaml b/examples/platform_integration/platform_channels/analysis_options.yaml similarity index 100% rename from examples/development/tools/analysis_options.yaml rename to examples/platform_integration/platform_channels/analysis_options.yaml diff --git a/examples/development/platform_integration/lib/platform_channels.dart b/examples/platform_integration/platform_channels/lib/platform_channels.dart similarity index 100% rename from examples/development/platform_integration/lib/platform_channels.dart rename to examples/platform_integration/platform_channels/lib/platform_channels.dart diff --git a/examples/platform_integration/platform_channels/pubspec.yaml b/examples/platform_integration/platform_channels/pubspec.yaml new file mode 100644 index 0000000000..2b9fe5cae5 --- /dev/null +++ b/examples/platform_integration/platform_channels/pubspec.yaml @@ -0,0 +1,24 @@ +name: platform_channels_examples +description: >- + Examples showcasing how to use platform channels to + communicate with the underlying native platforms. + +publish_to: none + +version: 1.0.0+1 + +environment: + sdk: ^3.3.0 + +dependencies: + flutter: + sdk: flutter + +dev_dependencies: + example_utils: + path: ../../example_utils + flutter_test: + sdk: flutter + +flutter: + uses-material-design: true diff --git a/examples/platform_integration/platform_views/analysis_options.yaml b/examples/platform_integration/platform_views/analysis_options.yaml new file mode 100644 index 0000000000..eee60e0f5a --- /dev/null +++ b/examples/platform_integration/platform_views/analysis_options.yaml @@ -0,0 +1,5 @@ +# Take our settings from the example_utils analysis_options.yaml file. +# If necessary for a particular example, this file can also include +# overrides for individual lints. + +include: package:example_utils/analysis.yaml diff --git a/examples/development/platform_integration/lib/platform_views/native_view_example_1.dart b/examples/platform_integration/platform_views/lib/native_view_example_1.dart similarity index 100% rename from examples/development/platform_integration/lib/platform_views/native_view_example_1.dart rename to examples/platform_integration/platform_views/lib/native_view_example_1.dart diff --git a/examples/development/platform_integration/lib/platform_views/native_view_example_2.dart b/examples/platform_integration/platform_views/lib/native_view_example_2.dart similarity index 100% rename from examples/development/platform_integration/lib/platform_views/native_view_example_2.dart rename to examples/platform_integration/platform_views/lib/native_view_example_2.dart diff --git a/examples/development/platform_integration/lib/platform_views/native_view_example_3.dart b/examples/platform_integration/platform_views/lib/native_view_example_3.dart similarity index 100% rename from examples/development/platform_integration/lib/platform_views/native_view_example_3.dart rename to examples/platform_integration/platform_views/lib/native_view_example_3.dart diff --git a/examples/platform_integration/platform_views/pubspec.yaml b/examples/platform_integration/platform_views/pubspec.yaml new file mode 100644 index 0000000000..c3d5a6348d --- /dev/null +++ b/examples/platform_integration/platform_views/pubspec.yaml @@ -0,0 +1,22 @@ +name: platform_views_examples +description: Examples showcasing Flutter's support for platform views. + +publish_to: none + +version: 1.0.0+1 + +environment: + sdk: ^3.3.0 + +dependencies: + flutter: + sdk: flutter + +dev_dependencies: + example_utils: + path: ../../example_utils + flutter_test: + sdk: flutter + +flutter: + uses-material-design: true diff --git a/examples/platform_integration/plugin_api_migration/analysis_options.yaml b/examples/platform_integration/plugin_api_migration/analysis_options.yaml new file mode 100644 index 0000000000..eee60e0f5a --- /dev/null +++ b/examples/platform_integration/plugin_api_migration/analysis_options.yaml @@ -0,0 +1,5 @@ +# Take our settings from the example_utils analysis_options.yaml file. +# If necessary for a particular example, this file can also include +# overrides for individual lints. + +include: package:example_utils/analysis.yaml diff --git a/examples/development/plugin_api_migration/lib/css_colors.dart b/examples/platform_integration/plugin_api_migration/lib/css_colors.dart similarity index 100% rename from examples/development/plugin_api_migration/lib/css_colors.dart rename to examples/platform_integration/plugin_api_migration/lib/css_colors.dart diff --git a/examples/development/plugin_api_migration/lib/test.dart b/examples/platform_integration/plugin_api_migration/lib/test.dart similarity index 100% rename from examples/development/plugin_api_migration/lib/test.dart rename to examples/platform_integration/plugin_api_migration/lib/test.dart diff --git a/examples/development/plugin_api_migration/lib/url_launcher.dart b/examples/platform_integration/plugin_api_migration/lib/url_launcher.dart similarity index 100% rename from examples/development/plugin_api_migration/lib/url_launcher.dart rename to examples/platform_integration/plugin_api_migration/lib/url_launcher.dart diff --git a/examples/platform_integration/plugin_api_migration/pubspec.yaml b/examples/platform_integration/plugin_api_migration/pubspec.yaml new file mode 100644 index 0000000000..63cf79926d --- /dev/null +++ b/examples/platform_integration/plugin_api_migration/pubspec.yaml @@ -0,0 +1,28 @@ +name: plugin_api_migration +description: A new Flutter project. + +publish_to: none + +version: 1.0.0+1 + +environment: + sdk: ^3.3.0 + +dependencies: + flutter: + sdk: flutter + css_colors: ^1.1.4 + url_launcher: ^6.2.4 + battery: ^2.0.3 + flutter_test: + sdk: flutter + path: ^1.9.0 + integration_test: + sdk: flutter + +dev_dependencies: + example_utils: + path: ../../example_utils + +flutter: + uses-material-design: true diff --git a/examples/tools/analysis_options.yaml b/examples/tools/analysis_options.yaml new file mode 100644 index 0000000000..eee60e0f5a --- /dev/null +++ b/examples/tools/analysis_options.yaml @@ -0,0 +1,5 @@ +# Take our settings from the example_utils analysis_options.yaml file. +# If necessary for a particular example, this file can also include +# overrides for individual lints. + +include: package:example_utils/analysis.yaml diff --git a/examples/development/tools/lib/hot-reload/after.dart b/examples/tools/lib/hot-reload/after.dart similarity index 100% rename from examples/development/tools/lib/hot-reload/after.dart rename to examples/tools/lib/hot-reload/after.dart diff --git a/examples/development/tools/lib/hot-reload/before.dart b/examples/tools/lib/hot-reload/before.dart similarity index 100% rename from examples/development/tools/lib/hot-reload/before.dart rename to examples/tools/lib/hot-reload/before.dart diff --git a/examples/development/tools/lib/hot-reload/foo_const.dart b/examples/tools/lib/hot-reload/foo_const.dart similarity index 100% rename from examples/development/tools/lib/hot-reload/foo_const.dart rename to examples/tools/lib/hot-reload/foo_const.dart diff --git a/examples/development/tools/lib/hot-reload/getter.dart b/examples/tools/lib/hot-reload/getter.dart similarity index 100% rename from examples/development/tools/lib/hot-reload/getter.dart rename to examples/tools/lib/hot-reload/getter.dart diff --git a/examples/development/tools/pubspec.yaml b/examples/tools/pubspec.yaml similarity index 90% rename from examples/development/tools/pubspec.yaml rename to examples/tools/pubspec.yaml index 870b59483d..9e71c01e6f 100644 --- a/examples/development/tools/pubspec.yaml +++ b/examples/tools/pubspec.yaml @@ -15,7 +15,7 @@ dependencies: dev_dependencies: example_utils: - path: ../../example_utils + path: ../example_utils flutter_test: sdk: flutter diff --git a/src/content/data-and-backend/serialization/json.md b/src/content/data-and-backend/serialization/json.md index 16922869d7..cd8ee95563 100644 --- a/src/content/data-and-backend/serialization/json.md +++ b/src/content/data-and-backend/serialization/json.md @@ -4,7 +4,7 @@ short-title: JSON description: How to use JSON with Flutter. --- - + It is hard to think of a mobile app that doesn't need to communicate with a web server or easily store structured data at some point. When making diff --git a/src/content/packages-and-plugins/using-packages.md b/src/content/packages-and-plugins/using-packages.md index 4c756b452e..ab27a80320 100644 --- a/src/content/packages-and-plugins/using-packages.md +++ b/src/content/packages-and-plugins/using-packages.md @@ -3,7 +3,7 @@ title: Using packages description: How to use packages in your Flutter app. --- - + Flutter supports using shared packages contributed by other developers to the Flutter and Dart ecosystems. This allows quickly building diff --git a/src/content/perf/isolates.md b/src/content/perf/isolates.md index 5d2f8637a0..2cdbfb9b63 100644 --- a/src/content/perf/isolates.md +++ b/src/content/perf/isolates.md @@ -3,7 +3,7 @@ title: Concurrency and isolates description: Multithreading in Flutter using Dart isolates. --- - + All Dart code runs in [isolates]({{site.dart-site}}/language/concurrency), which are similar to threads, diff --git a/src/content/platform-integration/android/c-interop.md b/src/content/platform-integration/android/c-interop.md index 5b2571c88e..222a9f32bb 100644 --- a/src/content/platform-integration/android/c-interop.md +++ b/src/content/platform-integration/android/c-interop.md @@ -3,7 +3,7 @@ title: "Binding to native Android code using dart:ffi" description: "To use C code in your Flutter program, use the dart:ffi library." --- - + Flutter mobile and desktop apps can use the [dart:ffi][] library to call native C APIs. diff --git a/src/content/platform-integration/android/platform-views.md b/src/content/platform-integration/android/platform-views.md index 66cf36a685..c0a6e8aff7 100644 --- a/src/content/platform-integration/android/platform-views.md +++ b/src/content/platform-integration/android/platform-views.md @@ -4,7 +4,7 @@ short-title: Android platform-views description: Learn how to host native Android views in your Flutter app with Platform Views. --- - + Platform views allow you to embed native views in a Flutter app, so you can apply transforms, clips, and opacity to the native view @@ -65,8 +65,8 @@ for example `native_view_example.dart`, use the following instructions: 1. Add the following imports: - - + + ```dart import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; @@ -76,8 +76,8 @@ use the following instructions: ``` 2. Implement a `build()` method: - - + + ```dart Widget build(BuildContext context) { // This is used in the platform side to register the view. @@ -129,8 +129,8 @@ for example `native_view_example.dart`, use the following instructions: 1. Add the following imports: - - + + ```dart import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -138,7 +138,7 @@ use the following instructions: 2. Implement a `build()` method: - + ```dart Widget build(BuildContext context) { // This is used in the platform side to register the view. diff --git a/src/content/platform-integration/ios/c-interop.md b/src/content/platform-integration/ios/c-interop.md index 376b619544..e080d63b61 100644 --- a/src/content/platform-integration/ios/c-interop.md +++ b/src/content/platform-integration/ios/c-interop.md @@ -3,7 +3,7 @@ title: "Binding to native iOS code using dart:ffi" description: "To use C code in your Flutter program, use the dart:ffi library." --- - + Flutter mobile and desktop apps can use the [dart:ffi][] library to call native C APIs. diff --git a/src/content/platform-integration/ios/platform-views.md b/src/content/platform-integration/ios/platform-views.md index 714828f36d..6d3c302a40 100644 --- a/src/content/platform-integration/ios/platform-views.md +++ b/src/content/platform-integration/ios/platform-views.md @@ -4,7 +4,7 @@ short-title: iOS platform-views description: Learn how to host native iOS views in your Flutter app with Platform Views. --- - + Platform views allow you to embed native views in a Flutter app, so you can apply transforms, clips, and opacity to the native view @@ -46,7 +46,7 @@ shown in `native_view_example.dart`: Add the following imports: - + ```dart import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; @@ -58,7 +58,7 @@ import 'package:flutter/services.dart'; Implement a `build()` method: - + ```dart Widget build(BuildContext context) { // This is used in the platform side to register the view. @@ -354,7 +354,7 @@ When implementing the `build()` method in Dart, you can use [`defaultTargetPlatform`][] to detect the platform, and decide which widget to use: - + ```dart Widget build(BuildContext context) { // This is used in the platform side to register the view. diff --git a/src/content/platform-integration/macos/c-interop.md b/src/content/platform-integration/macos/c-interop.md index 6776e6cb89..6538ecdc09 100644 --- a/src/content/platform-integration/macos/c-interop.md +++ b/src/content/platform-integration/macos/c-interop.md @@ -3,7 +3,7 @@ title: "Binding to native macOS code using dart:ffi" description: "To use C code in your Flutter program, use the dart:ffi library." --- - + Flutter mobile and desktop apps can use the [dart:ffi][] library to call native C APIs. diff --git a/src/content/platform-integration/platform-channels.md b/src/content/platform-integration/platform-channels.md index 71893cfae7..a6039252ad 100644 --- a/src/content/platform-integration/platform-channels.md +++ b/src/content/platform-integration/platform-channels.md @@ -4,7 +4,7 @@ short-title: Platform-specific code description: Learn how to write custom platform-specific code in your app. --- - + This guide describes how to write custom platform-specific code. Some platform-specific functionality is available @@ -272,13 +272,14 @@ All channel names used in a single app must be unique; prefix the channel name with a unique 'domain prefix', for example: `samples.flutter.dev/battery`. - + ```dart import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; ``` - + + ```dart class _MyHomePageState extends State { static const platform = MethodChannel('samples.flutter.dev/battery'); @@ -296,7 +297,7 @@ so wrap the `invokeMethod` call in a try-catch statement. Use the returned result to update the user interface state in `_batteryLevel` inside `setState`. - + ```dart // Get battery level. String _batteryLevel = 'Unknown battery level.'; @@ -320,7 +321,7 @@ Finally, replace the `build` method from the template to contain a small user interface that displays the battery state in a string, and a button for refreshing the value. - + ```dart @override Widget build(BuildContext context) { @@ -979,7 +980,8 @@ it displays 'Battery level not available'. For this example you need to install the `upower` developer headers. This is likely available from your distribution, for example with: -```sh + +```console sudo apt install libupower-glib-dev ``` @@ -1139,7 +1141,7 @@ and Swift (with Objective-C interop). **Pigeon file:** - + ```dart import 'package:pigeon/pigeon.dart'; @@ -1164,7 +1166,7 @@ abstract class Api { **Dart usage:** - + ```dart import 'generated_pigeon.dart'; diff --git a/src/content/release/breaking-changes/plugin-api-migration.md b/src/content/release/breaking-changes/plugin-api-migration.md index 94f56c2463..607ee9c942 100644 --- a/src/content/release/breaking-changes/plugin-api-migration.md +++ b/src/content/release/breaking-changes/plugin-api-migration.md @@ -3,7 +3,7 @@ title: Supporting the new Android plugins APIs description: How to update a plugin using the old APIs to support the new APIs. --- - + :::note New plugins and all plugins that are compatible with Flutter 2 (March 2021) can ignore this page. diff --git a/src/content/tools/hot-reload.md b/src/content/tools/hot-reload.md index df2c0a07cd..387e12ecf4 100644 --- a/src/content/tools/hot-reload.md +++ b/src/content/tools/hot-reload.md @@ -3,7 +3,7 @@ title: Hot reload description: Speed up development using Flutter's hot reload feature. --- - + Flutter's hot reload feature helps you quickly and easily experiment, build UIs, add features, and fix bugs. From ee1dcfd285c0518a9573aa2c77898fdfd72d5c64 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Sun, 5 May 2024 18:02:56 -0500 Subject: [PATCH 044/109] Standardize docregion ID format in get-started examples (#10510) Contributes to https://github.com/flutter/website/issues/10384 --- .../get-started/codelab_web/lib/step1.dart | 16 +-- .../get-started/codelab_web/lib/step2.dart | 16 +-- .../get-started/codelab_web/lib/step3.dart | 8 +- .../flutter-for/android_devs/lib/async.dart | 4 +- .../flutter-for/android_devs/lib/custom.dart | 8 +- .../flutter-for/android_devs/lib/events.dart | 12 +-- .../flutter-for/android_devs/lib/form.dart | 4 +- .../flutter-for/android_devs/lib/images.dart | 8 +- .../flutter-for/android_devs/lib/intent.dart | 16 +-- .../android_devs/lib/isolates.dart | 4 +- .../flutter-for/android_devs/lib/layout.dart | 20 ++-- .../lib/localization_examples.dart | 4 +- .../android_devs/lib/string_examples.dart | 8 +- .../flutter-for/android_devs/lib/text.dart | 4 +- .../android_devs/lib/text_widget.dart | 8 +- .../flutter-for/android_devs/lib/theme.dart | 4 +- .../flutter-for/ios_devs/lib/async.dart | 4 +- .../flutter-for/ios_devs/lib/canvas.dart | 8 +- .../ios_devs/lib/cupertino_themes.dart | 8 +- .../flutter-for/ios_devs/lib/custom.dart | 8 +- .../flutter-for/ios_devs/lib/events.dart | 12 +-- .../flutter-for/ios_devs/lib/form.dart | 8 +- .../flutter-for/ios_devs/lib/grid.dart | 4 +- .../flutter-for/ios_devs/lib/image.dart | 42 -------- .../flutter-for/ios_devs/lib/images.dart | 8 +- .../flutter-for/ios_devs/lib/intent.dart | 16 +-- .../flutter-for/ios_devs/lib/isolates.dart | 4 +- .../flutter-for/ios_devs/lib/layout.dart | 20 ++-- .../flutter-for/ios_devs/lib/list.dart | 4 +- .../flutter-for/ios_devs/lib/navigation.dart | 12 +-- .../flutter-for/ios_devs/lib/openapp.dart | 4 +- .../flutter-for/ios_devs/lib/popback.dart | 4 +- .../flutter-for/ios_devs/lib/progress.dart | 4 +- .../flutter-for/ios_devs/lib/scroll.dart | 4 +- .../ios_devs/lib/simple_animation.dart | 4 +- .../flutter-for/ios_devs/lib/state.dart | 4 +- .../ios_devs/lib/string_examples.dart | 8 +- .../ios_devs/lib/stylingbutton.dart | 8 +- .../flutter-for/ios_devs/lib/text.dart | 4 +- .../flutter-for/ios_devs/lib/text_button.dart | 4 +- .../flutter-for/ios_devs/lib/text_widget.dart | 8 +- .../flutter-for/ios_devs/lib/theme.dart | 4 +- .../react_native_devs/lib/best_practices.dart | 8 +- .../react_native_devs/lib/components.dart | 4 +- .../react_native_devs/lib/examples.dart | 100 +++++++++--------- .../react_native_devs/lib/imports.dart | 4 +- .../react_native_devs/lib/layouts.dart | 8 +- .../react_native_devs/lib/main.dart | 24 ++--- .../react_native_devs/lib/navigation.dart | 24 ++--- .../react_native_devs/lib/stateful.dart | 8 +- .../flutter-for/web_devs/lib/main.dart | 68 ++++++------ .../xamarin_devs/lib/custom_button.dart | 8 +- .../flutter-for/xamarin_devs/lib/data.dart | 4 +- .../xamarin_devs/lib/gestures.dart | 12 +-- .../flutter-for/xamarin_devs/lib/images.dart | 8 +- .../xamarin_devs/lib/input_decoration.dart | 4 +- .../xamarin_devs/lib/isolates.dart | 4 +- .../flutter-for/xamarin_devs/lib/layouts.dart | 24 ++--- .../flutter-for/xamarin_devs/lib/main.dart | 8 +- .../xamarin_devs/lib/navigation.dart | 12 +-- .../flutter-for/xamarin_devs/lib/padding.dart | 4 +- .../flutter-for/xamarin_devs/lib/page.dart | 12 +-- .../flutter-for/xamarin_devs/lib/strings.dart | 16 +-- .../flutter-for/xamarin_devs/lib/theme.dart | 4 +- .../flutter-for/xamarin_devs/lib/views.dart | 8 +- src/content/get-started/codelab-web.md | 20 ++-- .../get-started/flutter-for/android-devs.md | 50 ++++----- .../flutter-for/react-native-devs.md | 86 +++++++-------- .../get-started/flutter-for/swiftui-devs.md | 34 +++--- .../get-started/flutter-for/uikit-devs.md | 52 ++++----- .../get-started/flutter-for/web-devs.md | 2 +- .../flutter-for/xamarin-forms-devs.md | 68 ++++++------ 72 files changed, 504 insertions(+), 546 deletions(-) delete mode 100644 examples/get-started/flutter-for/ios_devs/lib/image.dart diff --git a/examples/get-started/codelab_web/lib/step1.dart b/examples/get-started/codelab_web/lib/step1.dart index 8cbbed5aeb..26087177a5 100644 --- a/examples/get-started/codelab_web/lib/step1.dart +++ b/examples/get-started/codelab_web/lib/step1.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -// #docregion WelcomeScreen +// #docregion welcome-screen class WelcomeScreen extends StatelessWidget { const WelcomeScreen({super.key}); @@ -16,7 +16,7 @@ class WelcomeScreen extends StatelessWidget { ); } } -// #enddocregion WelcomeScreen +// #enddocregion welcome-screen void main() => runApp(const SignUpApp()); @@ -28,9 +28,9 @@ class SignUpApp extends StatelessWidget { return MaterialApp( routes: { '/': (context) => const SignUpScreen(), - // #docregion WelcomeRoute + // #docregion welcome-route '/welcome': (context) => const WelcomeScreen(), - // #enddocregion WelcomeRoute + // #enddocregion welcome-route }, ); } @@ -69,11 +69,11 @@ class _SignUpFormState extends State { double _formProgress = 0; - // #docregion showWelcomeScreen + // #docregion show-welcome-screen void _showWelcomeScreen() { Navigator.of(context).pushNamed('/welcome'); } - // #enddocregion showWelcomeScreen + // #enddocregion show-welcome-screen @override Widget build(BuildContext context) { @@ -117,9 +117,9 @@ class _SignUpFormState extends State { : Colors.blue; }), ), - // #docregion onPressed + // #docregion on-pressed onPressed: _showWelcomeScreen, - // #enddocregion onPressed + // #enddocregion on-pressed child: const Text('Sign up'), ), ], diff --git a/examples/get-started/codelab_web/lib/step2.dart b/examples/get-started/codelab_web/lib/step2.dart index cac38a6399..85a465d950 100644 --- a/examples/get-started/codelab_web/lib/step2.dart +++ b/examples/get-started/codelab_web/lib/step2.dart @@ -69,7 +69,7 @@ class _SignUpFormState extends State { Navigator.of(context).pushNamed('/welcome'); } - // #docregion updateFormProgress + // #docregion update-form-progress void _updateFormProgress() { var progress = 0.0; final controllers = [ @@ -78,27 +78,27 @@ class _SignUpFormState extends State { _usernameTextController ]; - // #docregion forLoop + // #docregion for-loop for (final controller in controllers) { if (controller.value.text.isNotEmpty) { progress += 1 / controllers.length; } } - // #enddocregion forLoop + // #enddocregion for-loop setState(() { _formProgress = progress; }); } - // #enddocregion updateFormProgress + // #enddocregion update-form-progress @override Widget build(BuildContext context) { - // #docregion onChanged + // #docregion on-changed return Form( onChanged: _updateFormProgress, // NEW child: Column( - // #enddocregion onChanged + // #enddocregion on-changed mainAxisSize: MainAxisSize.min, children: [ LinearProgressIndicator(value: _formProgress), @@ -124,7 +124,7 @@ class _SignUpFormState extends State { decoration: const InputDecoration(hintText: 'Username'), ), ), - // #docregion onPressed + // #docregion on-pressed TextButton( style: ButtonStyle( foregroundColor: MaterialStateProperty.resolveWith((states) { @@ -144,7 +144,7 @@ class _SignUpFormState extends State { // #enddocregion ternary child: const Text('Sign up'), ), - // #enddocregion onPressed + // #enddocregion on-pressed ], ), ); diff --git a/examples/get-started/codelab_web/lib/step3.dart b/examples/get-started/codelab_web/lib/step3.dart index 711b4b98b1..1c0cca0c93 100644 --- a/examples/get-started/codelab_web/lib/step3.dart +++ b/examples/get-started/codelab_web/lib/step3.dart @@ -92,14 +92,14 @@ class _SignUpFormState extends State { Widget build(BuildContext context) { return Form( onChanged: _updateFormProgress, - // #docregion UseAnimatedProgressIndicator + // #docregion use-animated-progress-indicator child: Column( mainAxisSize: MainAxisSize.min, children: [ AnimatedProgressIndicator(value: _formProgress), // NEW Text('Sign up', style: Theme.of(context).textTheme.headlineMedium), Padding( - // #enddocregion UseAnimatedProgressIndicator + // #enddocregion use-animated-progress-indicator padding: const EdgeInsets.all(8), child: TextFormField( controller: _firstNameTextController, @@ -143,7 +143,7 @@ class _SignUpFormState extends State { } } -// #docregion AnimatedProgressIndicator +// #docregion animated-progress-indicator class AnimatedProgressIndicator extends StatefulWidget { final double value; @@ -209,4 +209,4 @@ class _AnimatedProgressIndicatorState extends State ); } } -// #enddocregion AnimatedProgressIndicator +// #enddocregion animated-progress-indicator diff --git a/examples/get-started/flutter-for/android_devs/lib/async.dart b/examples/get-started/flutter-for/android_devs/lib/async.dart index 3464d01e9e..9a875f39fe 100644 --- a/examples/get-started/flutter-for/android_devs/lib/async.dart +++ b/examples/get-started/flutter-for/android_devs/lib/async.dart @@ -59,7 +59,7 @@ class _SampleAppPageState extends State { ); } - // #docregion loadData + // #docregion load-data Future loadData() async { var dataURL = Uri.parse('https://jsonplaceholder.typicode.com/posts'); http.Response response = await http.get(dataURL); @@ -67,5 +67,5 @@ class _SampleAppPageState extends State { widgets = jsonDecode(response.body); }); } - // #enddocregion loadData + // #enddocregion load-data } diff --git a/examples/get-started/flutter-for/android_devs/lib/custom.dart b/examples/get-started/flutter-for/android_devs/lib/custom.dart index ee4aa13c32..b76f4b0123 100644 --- a/examples/get-started/flutter-for/android_devs/lib/custom.dart +++ b/examples/get-started/flutter-for/android_devs/lib/custom.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -// #docregion CustomButton +// #docregion custom-button class CustomButton extends StatelessWidget { final String label; @@ -14,17 +14,17 @@ class CustomButton extends StatelessWidget { ); } } -// #enddocregion CustomButton +// #enddocregion custom-button class MyWidget extends StatelessWidget { const MyWidget({super.key}); - // #docregion UseCustomButton + // #docregion use-custom-button @override Widget build(BuildContext context) { return const Center( child: CustomButton('Hello'), ); } - // #enddocregion UseCustomButton + // #enddocregion use-custom-button } diff --git a/examples/get-started/flutter-for/android_devs/lib/events.dart b/examples/get-started/flutter-for/android_devs/lib/events.dart index b29d1c2c7e..23dd2989f2 100644 --- a/examples/get-started/flutter-for/android_devs/lib/events.dart +++ b/examples/get-started/flutter-for/android_devs/lib/events.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; class MyButton extends StatelessWidget { const MyButton({super.key}); - // #docregion onPressed + // #docregion on-pressed @override Widget build(BuildContext context) { return ElevatedButton( @@ -15,10 +15,10 @@ class MyButton extends StatelessWidget { child: const Text('Button'), ); } - // #enddocregion onPressed + // #enddocregion on-pressed } -// #docregion onTap +// #docregion on-tap class SampleTapApp extends StatelessWidget { const SampleTapApp({super.key}); @@ -38,9 +38,9 @@ class SampleTapApp extends StatelessWidget { ); } } -// #enddocregion onTap +// #enddocregion on-tap -// #docregion SampleApp +// #docregion sample-app class SampleApp extends StatefulWidget { const SampleApp({super.key}); @@ -89,4 +89,4 @@ class _SampleAppState extends State ); } } -// #enddocregion SampleApp +// #enddocregion sample-app diff --git a/examples/get-started/flutter-for/android_devs/lib/form.dart b/examples/get-started/flutter-for/android_devs/lib/form.dart index fec930a4db..5bd866b6f0 100644 --- a/examples/get-started/flutter-for/android_devs/lib/form.dart +++ b/examples/get-started/flutter-for/android_devs/lib/form.dart @@ -5,12 +5,12 @@ class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion InputHint + // #docregion input-hint return const Center( child: TextField( decoration: InputDecoration(hintText: 'This is a hint'), ), ); - // #enddocregion InputHint + // #enddocregion input-hint } } diff --git a/examples/get-started/flutter-for/android_devs/lib/images.dart b/examples/get-started/flutter-for/android_devs/lib/images.dart index 62a166f1d7..a2c43c1696 100644 --- a/examples/get-started/flutter-for/android_devs/lib/images.dart +++ b/examples/get-started/flutter-for/android_devs/lib/images.dart @@ -7,9 +7,9 @@ class MyWidget extends StatelessWidget { Widget build(BuildContext context) { return const Image( image: - // #docregion AssetImage + // #docregion asset-image AssetImage('images/my_icon.jpeg') - // #enddocregion AssetImage + // #enddocregion asset-image ); } } @@ -17,10 +17,10 @@ class MyWidget extends StatelessWidget { class ImageExample extends StatelessWidget { const ImageExample({super.key}); - // #docregion Imageasset + // #docregion image-asset @override Widget build(BuildContext context) { return Image.asset('images/my_image.png'); } - // #enddocregion Imageasset + // #enddocregion image-asset } diff --git a/examples/get-started/flutter-for/android_devs/lib/intent.dart b/examples/get-started/flutter-for/android_devs/lib/intent.dart index 4ed631b25b..cb2d44a103 100644 --- a/examples/get-started/flutter-for/android_devs/lib/intent.dart +++ b/examples/get-started/flutter-for/android_devs/lib/intent.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -// #docregion Map +// #docregion map void main() { runApp(MaterialApp( home: const MyAppHome(), // Becomes the route named '/'. @@ -11,7 +11,7 @@ void main() { }, )); } -// #enddocregion Map +// #enddocregion map class MyAppHome extends StatefulWidget { const MyAppHome({super.key}); @@ -32,23 +32,23 @@ class MyPage extends StatelessWidget { final String title; void navigate(BuildContext context) { - // #docregion Push + // #docregion push Navigator.of(context).pushNamed('/b'); - // #enddocregion Push + // #enddocregion push } Object? push(BuildContext context) async { - // #docregion PushAwait + // #docregion push-await Object? coordinates = await Navigator.of(context).pushNamed('/location'); - // #enddocregion PushAwait + // #enddocregion push-await return coordinates; } void pop(BuildContext context) { - // #docregion Pop + // #docregion pop Navigator.of(context).pop({'lat': 43.821757, 'long': -79.226392}); - // #enddocregion Pop + // #enddocregion pop } @override diff --git a/examples/get-started/flutter-for/android_devs/lib/isolates.dart b/examples/get-started/flutter-for/android_devs/lib/isolates.dart index b38074c855..2a13297fec 100644 --- a/examples/get-started/flutter-for/android_devs/lib/isolates.dart +++ b/examples/get-started/flutter-for/android_devs/lib/isolates.dart @@ -79,7 +79,7 @@ class _SampleAppPageState extends State { ); } - // #docregion loadData + // #docregion load-data Future loadData() async { ReceivePort receivePort = ReceivePort(); await Isolate.spawn(dataLoader, receivePort.sendPort); @@ -121,5 +121,5 @@ class _SampleAppPageState extends State { port.send([msg, response.sendPort]); return response.first; } - // #enddocregion loadData + // #enddocregion load-data } diff --git a/examples/get-started/flutter-for/android_devs/lib/layout.dart b/examples/get-started/flutter-for/android_devs/lib/layout.dart index 27d3fdcdef..b898d72cd3 100644 --- a/examples/get-started/flutter-for/android_devs/lib/layout.dart +++ b/examples/get-started/flutter-for/android_devs/lib/layout.dart @@ -1,4 +1,4 @@ -// #docregion ToggleWidget +// #docregion toggle-widget import 'package:flutter/material.dart'; void main() { @@ -65,12 +65,12 @@ class _SampleAppPageState extends State { ); } } -// #enddocregion ToggleWidget +// #enddocregion toggle-widget class MyWidget extends StatelessWidget { const MyWidget({super.key}); - // #docregion SimpleWidget + // #docregion simple-widget @override Widget build(BuildContext context) { return Scaffold( @@ -88,13 +88,13 @@ class MyWidget extends StatelessWidget { ), ); } - // #enddocregion SimpleWidget + // #enddocregion simple-widget } class RowExample extends StatelessWidget { const RowExample({super.key}); - // #docregion Row + // #docregion row @override Widget build(BuildContext context) { return const Row( @@ -107,13 +107,13 @@ class RowExample extends StatelessWidget { ], ); } - // #enddocregion Row + // #enddocregion row } class ColumnExample extends StatelessWidget { const ColumnExample({super.key}); - // #docregion Column + // #docregion column @override Widget build(BuildContext context) { return const Column( @@ -126,13 +126,13 @@ class ColumnExample extends StatelessWidget { ], ); } - // #enddocregion Column + // #enddocregion column } class ListViewExample extends StatelessWidget { const ListViewExample({super.key}); - // #docregion ListView + // #docregion list-view @override Widget build(BuildContext context) { return ListView( @@ -144,5 +144,5 @@ class ListViewExample extends StatelessWidget { ], ); } - // #enddocregion ListView + // #enddocregion list-view } diff --git a/examples/get-started/flutter-for/android_devs/lib/localization_examples.dart b/examples/get-started/flutter-for/android_devs/lib/localization_examples.dart index 028704f957..a693824727 100644 --- a/examples/get-started/flutter-for/android_devs/lib/localization_examples.dart +++ b/examples/get-started/flutter-for/android_devs/lib/localization_examples.dart @@ -7,8 +7,8 @@ class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return - // #docregion AccessString + // #docregion access-string Text(AppLocalizations.of(context)!.hello('John')); - // #enddocregion AccessString + // #enddocregion access-string } } diff --git a/examples/get-started/flutter-for/android_devs/lib/string_examples.dart b/examples/get-started/flutter-for/android_devs/lib/string_examples.dart index dd429641c2..04f4b18607 100644 --- a/examples/get-started/flutter-for/android_devs/lib/string_examples.dart +++ b/examples/get-started/flutter-for/android_devs/lib/string_examples.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; -// #docregion Strings +// #docregion strings class Strings { static String welcomeMessage = 'Welcome To Flutter'; } -// #enddocregion Strings +// #enddocregion strings class MyWidget extends StatelessWidget { const MyWidget({super.key}); @@ -12,8 +12,8 @@ class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return - // #docregion AccessString + // #docregion access-string Text(Strings.welcomeMessage); - // #enddocregion AccessString + // #enddocregion access-string } } diff --git a/examples/get-started/flutter-for/android_devs/lib/text.dart b/examples/get-started/flutter-for/android_devs/lib/text.dart index a9678035f7..811164bab4 100644 --- a/examples/get-started/flutter-for/android_devs/lib/text.dart +++ b/examples/get-started/flutter-for/android_devs/lib/text.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; class MyWidget extends StatelessWidget { const MyWidget({super.key}); - // #docregion CustomFont + // #docregion custom-font @override Widget build(BuildContext context) { return Scaffold( @@ -18,5 +18,5 @@ class MyWidget extends StatelessWidget { ), ); } - // #enddocregion CustomFont + // #enddocregion custom-font } diff --git a/examples/get-started/flutter-for/android_devs/lib/text_widget.dart b/examples/get-started/flutter-for/android_devs/lib/text_widget.dart index a58f543cfc..4c277591f9 100644 --- a/examples/get-started/flutter-for/android_devs/lib/text_widget.dart +++ b/examples/get-started/flutter-for/android_devs/lib/text_widget.dart @@ -1,4 +1,4 @@ -// #docregion StatefulWidget +// #docregion stateful-widget import 'package:flutter/material.dart'; void main() { @@ -53,18 +53,18 @@ class _SampleAppPageState extends State { ); } } -// #enddocregion StatefulWidget +// #enddocregion stateful-widget class MyWidget extends StatelessWidget { const MyWidget({super.key}); @override Widget build(BuildContext context) { - // #docregion TextWidget + // #docregion text-widget return const Text( 'I like Flutter!', style: TextStyle(fontWeight: FontWeight.bold), ); - // #enddocregion TextWidget + // #enddocregion text-widget } } diff --git a/examples/get-started/flutter-for/android_devs/lib/theme.dart b/examples/get-started/flutter-for/android_devs/lib/theme.dart index 0db4a6bcb6..adc4f10efc 100644 --- a/examples/get-started/flutter-for/android_devs/lib/theme.dart +++ b/examples/get-started/flutter-for/android_devs/lib/theme.dart @@ -1,4 +1,4 @@ -// #docregion Theme +// #docregion theme import 'package:flutter/material.dart'; class SampleApp extends StatelessWidget { @@ -17,7 +17,7 @@ class SampleApp extends StatelessWidget { ); } } -// #enddocregion Theme +// #enddocregion theme class SampleAppPage extends StatelessWidget { const SampleAppPage({super.key}); diff --git a/examples/get-started/flutter-for/ios_devs/lib/async.dart b/examples/get-started/flutter-for/ios_devs/lib/async.dart index cb05b3eb7f..5b2198c8cb 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/async.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/async.dart @@ -35,7 +35,7 @@ class _SampleAppPageState extends State { loadData(); } - // #docregion loadData + // #docregion load-data Future loadData() async { final Uri dataURL = Uri.parse('https://jsonplaceholder.typicode.com/posts'); final http.Response response = await http.get(dataURL); @@ -43,7 +43,7 @@ class _SampleAppPageState extends State { data = jsonDecode(response.body); }); } - // #enddocregion loadData + // #enddocregion load-data Widget getRow(int index) { return Padding( diff --git a/examples/get-started/flutter-for/ios_devs/lib/canvas.dart b/examples/get-started/flutter-for/ios_devs/lib/canvas.dart index 3921f636bc..96f01fdc40 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/canvas.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/canvas.dart @@ -31,17 +31,17 @@ class SignatureState extends State { }, onPanEnd: (details) => _points.add(null), child: - // #docregion CustomPaint + // #docregion custom-paint CustomPaint( painter: SignaturePainter(_points), size: Size.infinite, ), - // #enddocregion CustomPaint + // #enddocregion custom-paint ); } } -// #docregion CustomPainter +// #docregion custom-painter class SignaturePainter extends CustomPainter { SignaturePainter(this.points); @@ -64,4 +64,4 @@ class SignaturePainter extends CustomPainter { bool shouldRepaint(SignaturePainter oldDelegate) => oldDelegate.points != points; } -// #enddocregion CustomPainter +// #enddocregion custom-painter diff --git a/examples/get-started/flutter-for/ios_devs/lib/cupertino_themes.dart b/examples/get-started/flutter-for/ios_devs/lib/cupertino_themes.dart index 64776aee98..813efd082c 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/cupertino_themes.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/cupertino_themes.dart @@ -14,14 +14,14 @@ class App extends StatelessWidget { @override Widget build(BuildContext context) { return const - // #docregion Theme + // #docregion theme CupertinoApp( theme: CupertinoThemeData( brightness: Brightness.dark, ), home: HomePage(), ); - // #enddocregion Theme + // #enddocregion theme } } @@ -38,7 +38,7 @@ class HomePage extends StatelessWidget { ), child: Center( child: - // #docregion StylingTextExample + // #docregion styling-text Text( 'Hello, world!', style: TextStyle( @@ -47,7 +47,7 @@ class HomePage extends StatelessWidget { color: CupertinoColors.systemYellow, ), ), - // #enddocregion StylingTextExample + // #enddocregion styling-text ), ); } diff --git a/examples/get-started/flutter-for/ios_devs/lib/custom.dart b/examples/get-started/flutter-for/ios_devs/lib/custom.dart index 415eb14e0b..8d58f42edf 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/custom.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/custom.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -// #docregion CustomButton +// #docregion custom-button class CustomButton extends StatelessWidget { const CustomButton(this.label, {super.key}); @@ -14,17 +14,17 @@ class CustomButton extends StatelessWidget { ); } } -// #enddocregion CustomButton +// #enddocregion custom-button class MyWidget extends StatelessWidget { const MyWidget({super.key}); - // #docregion UseCustomButton + // #docregion use-custom-button @override Widget build(BuildContext context) { return const Center( child: CustomButton('Hello'), ); } - // #enddocregion UseCustomButton + // #enddocregion use-custom-button } diff --git a/examples/get-started/flutter-for/ios_devs/lib/events.dart b/examples/get-started/flutter-for/ios_devs/lib/events.dart index 41486e5890..3882a5b795 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/events.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/events.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; class MyButton extends StatelessWidget { const MyButton({super.key}); - // #docregion onPressed + // #docregion on-pressed @override Widget build(BuildContext context) { return ElevatedButton( @@ -14,10 +14,10 @@ class MyButton extends StatelessWidget { child: const Text('Button'), ); } - // #enddocregion onPressed + // #enddocregion on-pressed } -// #docregion onTap +// #docregion on-tap class SampleTapApp extends StatelessWidget { const SampleTapApp({super.key}); @@ -37,9 +37,9 @@ class SampleTapApp extends StatelessWidget { ); } } -// #enddocregion onTap +// #enddocregion on-tap -// #docregion SampleApp +// #docregion sample-app class SampleApp extends StatefulWidget { const SampleApp({super.key}); @@ -88,4 +88,4 @@ class _SampleAppState extends State ); } } -// #enddocregion SampleApp +// #enddocregion sample-app diff --git a/examples/get-started/flutter-for/ios_devs/lib/form.dart b/examples/get-started/flutter-for/ios_devs/lib/form.dart index 7ef1c8c87a..cf229dbca8 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/form.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/form.dart @@ -5,13 +5,13 @@ class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion InputHint + // #docregion input-hint return const Center( child: TextField( decoration: InputDecoration(hintText: 'This is a hint'), ), ); - // #enddocregion InputHint + // #enddocregion input-hint } } @@ -22,7 +22,7 @@ class MyForm extends StatefulWidget { State createState() => _MyFormState(); } -// #docregion MyFormState +// #docregion my-form-state class _MyFormState extends State { // Create a text controller and use it to retrieve the current value. // of the TextField! @@ -64,4 +64,4 @@ class _MyFormState extends State { ); } } -// #enddocregion MyFormState +// #enddocregion my-form-state diff --git a/examples/get-started/flutter-for/ios_devs/lib/grid.dart b/examples/get-started/flutter-for/ios_devs/lib/grid.dart index ce2bc92231..5e502d6483 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/grid.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/grid.dart @@ -20,7 +20,7 @@ class App extends StatelessWidget { } } -// #docregion GridExample +// #docregion grid-example const widgets = [ Text('Row 1'), Icon(CupertinoIcons.arrow_down_square), @@ -47,4 +47,4 @@ class HomePage extends StatelessWidget { ); } } -// #enddocregion GridExample +// #enddocregion grid-example diff --git a/examples/get-started/flutter-for/ios_devs/lib/image.dart b/examples/get-started/flutter-for/ios_devs/lib/image.dart deleted file mode 100644 index 535f0ec95e..0000000000 --- a/examples/get-started/flutter-for/ios_devs/lib/image.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:flutter/cupertino.dart'; - -void main() { - runApp( - const App(), - ); -} - -class App extends StatelessWidget { - const App({ - super.key, - }); - - @override - Widget build(BuildContext context) { - return const CupertinoApp( - theme: CupertinoThemeData(brightness: Brightness.dark), - debugShowCheckedModeBanner: false, - home: HomePage(), - ); - } -} - -class HomePage extends StatelessWidget { - const HomePage({super.key}); - - @override - Widget build(BuildContext context) { - return CupertinoPageScaffold( - child: Center( - child: - // docregion Image - Image.asset( - 'images/Blueberries.jpg', - width: 200, - height: 200, - ), - // enddocregion Image - ), - ); - } -} diff --git a/examples/get-started/flutter-for/ios_devs/lib/images.dart b/examples/get-started/flutter-for/ios_devs/lib/images.dart index 619f172b9c..23e10aa51a 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/images.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/images.dart @@ -7,9 +7,9 @@ class MyWidget extends StatelessWidget { Widget build(BuildContext context) { return const Image( image: - // #docregion AssetImage + // #docregion asset-image AssetImage('images/a_dot_burr.jpeg') - // #enddocregion AssetImage + // #enddocregion asset-image ); } } @@ -17,10 +17,10 @@ class MyWidget extends StatelessWidget { class ImageExample extends StatelessWidget { const ImageExample({super.key}); - // #docregion Imageasset + // #docregion image-asset @override Widget build(BuildContext context) { return Image.asset('images/my_image.png'); } - // #enddocregion Imageasset + // #enddocregion image-asset } diff --git a/examples/get-started/flutter-for/ios_devs/lib/intent.dart b/examples/get-started/flutter-for/ios_devs/lib/intent.dart index 8f2fd559b6..e34f87b804 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/intent.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/intent.dart @@ -1,6 +1,6 @@ import 'package:flutter/cupertino.dart'; -// #docregion Map +// #docregion map void main() { runApp( CupertinoApp( @@ -13,7 +13,7 @@ void main() { ), ); } -// #enddocregion Map +// #enddocregion map class MyAppHome extends StatefulWidget { const MyAppHome({super.key}); @@ -34,23 +34,23 @@ class MyPage extends StatelessWidget { final String title; void navigate(BuildContext context) { - // #docregion Push + // #docregion push Navigator.of(context).pushNamed('/b'); - // #enddocregion Push + // #enddocregion push } Object? push(BuildContext context) async { - // #docregion PushAwait + // #docregion push-await Object? coordinates = await Navigator.of(context).pushNamed('/location'); - // #enddocregion PushAwait + // #enddocregion push-await return coordinates; } void pop(BuildContext context) { - // #docregion Pop + // #docregion pop Navigator.of(context).pop({'lat': 43.821757, 'long': -79.226392}); - // #enddocregion Pop + // #enddocregion pop } @override diff --git a/examples/get-started/flutter-for/ios_devs/lib/isolates.dart b/examples/get-started/flutter-for/ios_devs/lib/isolates.dart index c63c1fea5e..d75c4abde7 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/isolates.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/isolates.dart @@ -39,7 +39,7 @@ class _SampleAppPageState extends State { bool get showLoadingDialog => data.isEmpty; - // #docregion loadData + // #docregion load-data Future loadData() async { final ReceivePort receivePort = ReceivePort(); await Isolate.spawn(dataLoader, receivePort.sendPort); @@ -81,7 +81,7 @@ class _SampleAppPageState extends State { port.send([msg, response.sendPort]); return response.first as Future>>; } - // #enddocregion loadData + // #enddocregion load-data Widget getBody() { bool showLoadingDialog = data.isEmpty; diff --git a/examples/get-started/flutter-for/ios_devs/lib/layout.dart b/examples/get-started/flutter-for/ios_devs/lib/layout.dart index daf9874880..26809ebcb4 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/layout.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/layout.dart @@ -5,7 +5,7 @@ void main() { runApp(const SampleApp()); } -// #docregion ToggleWidget +// #docregion toggle-widget class SampleApp extends StatelessWidget { // This widget is the root of your application. const SampleApp({super.key}); @@ -64,12 +64,12 @@ class _SampleAppPageState extends State { ); } } -// #enddocregion ToggleWidget +// #enddocregion toggle-widget class MyWidget extends StatelessWidget { const MyWidget({super.key}); - // #docregion SimpleWidget + // #docregion simple-widget @override Widget build(BuildContext context) { return Scaffold( @@ -83,13 +83,13 @@ class MyWidget extends StatelessWidget { ), ); } - // #enddocregion SimpleWidget + // #enddocregion simple-widget } class RowExample extends StatelessWidget { const RowExample({super.key}); - // #docregion Row + // #docregion row @override Widget build(BuildContext context) { return const Row( @@ -102,13 +102,13 @@ class RowExample extends StatelessWidget { ], ); } - // #enddocregion Row + // #enddocregion row } class ColumnExample extends StatelessWidget { const ColumnExample({super.key}); - // #docregion Column + // #docregion column @override Widget build(BuildContext context) { return const Column( @@ -121,13 +121,13 @@ class ColumnExample extends StatelessWidget { ], ); } - // #enddocregion Column + // #enddocregion column } class ListViewExample extends StatelessWidget { const ListViewExample({super.key}); - // #docregion ListView + // #docregion list-view @override Widget build(BuildContext context) { return ListView( @@ -139,5 +139,5 @@ class ListViewExample extends StatelessWidget { ], ); } - // #enddocregion ListView + // #enddocregion list-view } diff --git a/examples/get-started/flutter-for/ios_devs/lib/list.dart b/examples/get-started/flutter-for/ios_devs/lib/list.dart index 76cf4a0f02..09e30cbaab 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/list.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/list.dart @@ -20,7 +20,7 @@ class App extends StatelessWidget { } } -// #docregion SimpleList +// #docregion simple-list class Person { String name; Person(this.name); @@ -49,4 +49,4 @@ class HomePage extends StatelessWidget { ); } } -// #enddocregion SimpleList +// #enddocregion simple-list diff --git a/examples/get-started/flutter-for/ios_devs/lib/navigation.dart b/examples/get-started/flutter-for/ios_devs/lib/navigation.dart index 94f783f86d..cfebee5b68 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/navigation.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/navigation.dart @@ -7,7 +7,7 @@ void main() { ); } -// #docregion Routes +// #docregion routes // Defines the route name as a constant // so that it's reusable. const detailsPageRouteName = '/details'; @@ -29,7 +29,7 @@ class App extends StatelessWidget { ); } } -// #enddocregion Routes +// #enddocregion routes // Create a class that holds each person's data. @immutable @@ -67,7 +67,7 @@ class HomePage extends StatelessWidget { ), child: Material( child: - // #docregion ListView + // #docregion list-view ListView.builder( itemCount: mockPersons.length, itemBuilder: (context, index) { @@ -92,13 +92,13 @@ class HomePage extends StatelessWidget { ); }, ), - // #enddocregion ListView + // #enddocregion list-view ), ); } } -// #docregion DetailsPage +// #docregion details-page class DetailsPage extends StatelessWidget { const DetailsPage({super.key}); @@ -116,4 +116,4 @@ class DetailsPage extends StatelessWidget { ); } } -// #enddocregion DetailsPage +// #enddocregion details-page diff --git a/examples/get-started/flutter-for/ios_devs/lib/openapp.dart b/examples/get-started/flutter-for/ios_devs/lib/openapp.dart index 8d5324ffbf..f95585f93c 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/openapp.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/openapp.dart @@ -31,7 +31,7 @@ class HomePage extends StatelessWidget { child: SafeArea( child: Center( child: - // #docregion OpenAppExample + // #docregion open-app-example CupertinoButton( onPressed: () async { await launchUrl( @@ -42,7 +42,7 @@ class HomePage extends StatelessWidget { 'Open website', ), ), - // #enddocregion OpenAppExample + // #enddocregion open-app-example ), ), ); diff --git a/examples/get-started/flutter-for/ios_devs/lib/popback.dart b/examples/get-started/flutter-for/ios_devs/lib/popback.dart index 24e1bc2cf5..d9629266a7 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/popback.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/popback.dart @@ -122,7 +122,7 @@ class DetailsPage extends StatelessWidget { title: Text(person.name), subtitle: Text(age), ), - // #docregion PopBackExample + // #docregion pop-back TextButton( onPressed: () { // This code allows the @@ -131,7 +131,7 @@ class DetailsPage extends StatelessWidget { }, child: const Text('Pop back'), ), - // #enddocregion PopBackExample + // #enddocregion pop-back ], ), ), diff --git a/examples/get-started/flutter-for/ios_devs/lib/progress.dart b/examples/get-started/flutter-for/ios_devs/lib/progress.dart index 95b989f230..6fe7570027 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/progress.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/progress.dart @@ -37,7 +37,7 @@ class _SampleAppPageState extends State { bool get showLoadingDialog => data.isEmpty; - // #docregion loadData + // #docregion load-data Future loadData() async { final Uri dataURL = Uri.parse('https://jsonplaceholder.typicode.com/posts'); final http.Response response = await http.get(dataURL); @@ -45,7 +45,7 @@ class _SampleAppPageState extends State { data = jsonDecode(response.body); }); } - // #enddocregion loadData + // #enddocregion load-data Widget getBody() { if (showLoadingDialog) { diff --git a/examples/get-started/flutter-for/ios_devs/lib/scroll.dart b/examples/get-started/flutter-for/ios_devs/lib/scroll.dart index 9ae0490bdf..e41083b1cc 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/scroll.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/scroll.dart @@ -81,7 +81,7 @@ class HomePage extends StatelessWidget { // inside a scroll view of type // SingleChildScrollView (equivalent of a ScrollView in SwiftUI). body: - // #docregion ScrollExample + // #docregion scroll-example SingleChildScrollView( child: Column( children: mockPersons @@ -93,7 +93,7 @@ class HomePage extends StatelessWidget { .toList(), ), ), - // #enddocregion ScrollExample + // #enddocregion scroll-example ); } } diff --git a/examples/get-started/flutter-for/ios_devs/lib/simple_animation.dart b/examples/get-started/flutter-for/ios_devs/lib/simple_animation.dart index 3f94e4dac3..01bd5586bb 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/simple_animation.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/simple_animation.dart @@ -28,7 +28,7 @@ class _MyHomePageState extends State { return Scaffold( body: Center( child: - // #docregion AnimatedButton + // #docregion animated-button AnimatedRotation( duration: const Duration(seconds: 1), turns: turns, @@ -41,7 +41,7 @@ class _MyHomePageState extends State { }, child: const Text('Tap me!')), ), - // #enddocregion AnimatedButton + // #enddocregion animated-button ), ); } diff --git a/examples/get-started/flutter-for/ios_devs/lib/state.dart b/examples/get-started/flutter-for/ios_devs/lib/state.dart index 71f6148b16..bcbe8b9da6 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/state.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/state.dart @@ -14,7 +14,7 @@ class MyApp extends StatelessWidget { } } -// #docregion State +// #docregion state class MyHomePage extends StatefulWidget { const MyHomePage({super.key}); @override @@ -44,4 +44,4 @@ class _MyHomePageState extends State { ); } } -// #enddocregion State +// #enddocregion state diff --git a/examples/get-started/flutter-for/ios_devs/lib/string_examples.dart b/examples/get-started/flutter-for/ios_devs/lib/string_examples.dart index eaab638e67..c5e3d82db7 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/string_examples.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/string_examples.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; -// #docregion Strings +// #docregion strings class Strings { static const String welcomeMessage = 'Welcome To Flutter'; } -// #enddocregion Strings +// #enddocregion strings class MyWidget extends StatelessWidget { const MyWidget({super.key}); @@ -12,8 +12,8 @@ class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return - // #docregion AccessString + // #docregion access-string const Text(Strings.welcomeMessage); - // #enddocregion AccessString + // #enddocregion access-string } } diff --git a/examples/get-started/flutter-for/ios_devs/lib/stylingbutton.dart b/examples/get-started/flutter-for/ios_devs/lib/stylingbutton.dart index 5363ce3338..7a35f82749 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/stylingbutton.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/stylingbutton.dart @@ -31,7 +31,7 @@ class HomePage extends StatelessWidget { return CupertinoPageScaffold( navigationBar: const CupertinoNavigationBar( middle: - // #docregion CustomFont + // #docregion custom-font Text( 'Cupertino', style: TextStyle( @@ -39,10 +39,10 @@ class HomePage extends StatelessWidget { fontFamily: 'BungeeSpice', ), ) - // #enddocregion CustomFont + // #enddocregion custom-font ), child: Center( - // #docregion StylingButtonExample + // #docregion styling-button child: CupertinoButton( color: CupertinoColors.systemYellow, onPressed: () {}, @@ -56,7 +56,7 @@ class HomePage extends StatelessWidget { ), ), ), - // #enddocregion StylingButtonExample + // #enddocregion styling-button ), ); } diff --git a/examples/get-started/flutter-for/ios_devs/lib/text.dart b/examples/get-started/flutter-for/ios_devs/lib/text.dart index a9678035f7..811164bab4 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/text.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/text.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; class MyWidget extends StatelessWidget { const MyWidget({super.key}); - // #docregion CustomFont + // #docregion custom-font @override Widget build(BuildContext context) { return Scaffold( @@ -18,5 +18,5 @@ class MyWidget extends StatelessWidget { ), ); } - // #enddocregion CustomFont + // #enddocregion custom-font } diff --git a/examples/get-started/flutter-for/ios_devs/lib/text_button.dart b/examples/get-started/flutter-for/ios_devs/lib/text_button.dart index c76b688990..73c9072846 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/text_button.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/text_button.dart @@ -24,14 +24,14 @@ class HomePage extends StatelessWidget { return Scaffold( body: Center( child: - // #docregion textbutton + // #docregion text-button CupertinoButton( onPressed: () { // This closure is called when your button is tapped. }, child: const Text('Do something'), ) - // #enddocregion textbutton + // #enddocregion text-button ), ); } diff --git a/examples/get-started/flutter-for/ios_devs/lib/text_widget.dart b/examples/get-started/flutter-for/ios_devs/lib/text_widget.dart index 85f857c250..bfaa73ac21 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/text_widget.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/text_widget.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -// #docregion StatefulWidget +// #docregion stateful-widget class SampleApp extends StatelessWidget { // This widget is the root of your application. @@ -46,18 +46,18 @@ class _SampleAppPageState extends State { ); } } -// #enddocregion StatefulWidget +// #enddocregion stateful-widget class MyWidget extends StatelessWidget { const MyWidget({super.key}); @override Widget build(BuildContext context) { - // #docregion TextWidget + // #docregion text-widget return const Text( 'I like Flutter!', style: TextStyle(fontWeight: FontWeight.bold), ); - // #enddocregion TextWidget + // #enddocregion text-widget } } diff --git a/examples/get-started/flutter-for/ios_devs/lib/theme.dart b/examples/get-started/flutter-for/ios_devs/lib/theme.dart index 565392ea0f..5b4245a700 100644 --- a/examples/get-started/flutter-for/ios_devs/lib/theme.dart +++ b/examples/get-started/flutter-for/ios_devs/lib/theme.dart @@ -1,4 +1,4 @@ -// #docregion Theme +// #docregion theme import 'package:flutter/material.dart'; class SampleApp extends StatelessWidget { @@ -16,7 +16,7 @@ class SampleApp extends StatelessWidget { ); } } -// #enddocregion Theme +// #enddocregion theme class SampleAppPage extends StatelessWidget { const SampleAppPage({super.key}); diff --git a/examples/get-started/flutter-for/react_native_devs/lib/best_practices.dart b/examples/get-started/flutter-for/react_native_devs/lib/best_practices.dart index accaf7ea31..e45060af4a 100644 --- a/examples/get-started/flutter-for/react_native_devs/lib/best_practices.dart +++ b/examples/get-started/flutter-for/react_native_devs/lib/best_practices.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -// #docregion CreateState +// #docregion create-state class MyStatefulWidget extends StatefulWidget { const MyStatefulWidget({ super.key, @@ -18,9 +18,9 @@ class _MyStatefulWidgetState extends State { return const Text('Hello World!'); } } -// #enddocregion CreateState +// #enddocregion create-state -// #docregion UseStatefulWidget +// #docregion use-stateful-widget class MyStatelessWidget extends StatelessWidget { // This widget is the root of your application. const MyStatelessWidget({super.key}); @@ -33,4 +33,4 @@ class MyStatelessWidget extends StatelessWidget { ); } } -// #enddocregion UseStatefulWidget +// #enddocregion use-stateful-widget diff --git a/examples/get-started/flutter-for/react_native_devs/lib/components.dart b/examples/get-started/flutter-for/react_native_devs/lib/components.dart index ce2879fdd4..a182b009b3 100644 --- a/examples/get-started/flutter-for/react_native_devs/lib/components.dart +++ b/examples/get-started/flutter-for/react_native_devs/lib/components.dart @@ -1,7 +1,7 @@ // ignore_for_file: avoid_print import 'package:flutter/material.dart'; -// #docregion Components +// #docregion components /// Flutter class CustomCard extends StatelessWidget { const CustomCard({ @@ -45,4 +45,4 @@ class UseCard extends StatelessWidget { ); } } -// #enddocregion Components +// #enddocregion components diff --git a/examples/get-started/flutter-for/react_native_devs/lib/examples.dart b/examples/get-started/flutter-for/react_native_devs/lib/examples.dart index 6e8b3cf57d..2dd5bc6f28 100644 --- a/examples/get-started/flutter-for/react_native_devs/lib/examples.dart +++ b/examples/get-started/flutter-for/react_native_devs/lib/examples.dart @@ -1,32 +1,32 @@ // ignore_for_file: avoid_print import 'dart:convert'; -// #docregion ImportDartIO +// #docregion import-dart-io import 'dart:io'; -// #enddocregion ImportDartIO +// #enddocregion import-dart-io -// #docregion PackageImport +// #docregion package-import import 'package:flutter/material.dart'; -// #enddocregion PackageImport -// #docregion SharedPrefs +// #enddocregion package-import +// #docregion shared-prefs import 'package:shared_preferences/shared_preferences.dart'; -// #enddocregion SharedPrefs +// #enddocregion shared-prefs -// #docregion Main +// #docregion main // Dart void main() { print('Hello, this is the main function.'); } -// #enddocregion Main +// #enddocregion main class MyWidget extends StatelessWidget { const MyWidget({super.key}); @override Widget build(BuildContext context) { - // #docregion ImageAsset + // #docregion image-asset return Image.asset('assets/background.png'); - // #enddocregion ImageAsset + // #enddocregion image-asset } } @@ -35,9 +35,9 @@ class NetworkImage extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion ImageNetwork + // #docregion image-network return Image.network('https://docs.flutter.dev/assets/images/docs/owl.jpg'); - // #enddocregion ImageNetwork + // #enddocregion image-network } } @@ -46,7 +46,7 @@ class ListViewExample extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion ListView + // #docregion list-view var data = [ 'Hello', 'World', @@ -57,11 +57,11 @@ class ListViewExample extends StatelessWidget { return Text(data[index]); }, ); - // #enddocregion ListView + // #enddocregion list-view } } -// #docregion CustomPaint +// #docregion custom-paint class MyCanvasPainter extends CustomPainter { const MyCanvasPainter(); @@ -91,14 +91,14 @@ class MyCanvasWidget extends StatelessWidget { ); } } -// #enddocregion CustomPaint +// #enddocregion custom-paint class TextStyleExample extends StatelessWidget { const TextStyleExample({super.key}); @override Widget build(BuildContext context) { - // #docregion TextStyle + // #docregion text-style const TextStyle textStyle = TextStyle( color: Colors.cyan, fontSize: 32, @@ -120,7 +120,7 @@ class TextStyleExample extends StatelessWidget { ], ), ); - // #enddocregion TextStyle + // #enddocregion text-style } } @@ -129,13 +129,13 @@ class IconExample extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion Icon + // #docregion icon return const Icon(Icons.lightbulb_outline, color: Colors.redAccent); - // #enddocregion Icon + // #enddocregion icon } } -// #docregion Swatch +// #docregion swatch class SampleApp extends StatelessWidget { const SampleApp({super.key}); @@ -151,12 +151,12 @@ class SampleApp extends StatelessWidget { ); } } -// #enddocregion Swatch +// #enddocregion swatch class ThemeExample extends StatelessWidget { const ThemeExample({super.key}); - // #docregion Theme + // #docregion theme @override Widget build(BuildContext context) { return MaterialApp( @@ -167,7 +167,7 @@ class ThemeExample extends StatelessWidget { home: const StylingPage(), ); } - // #enddocregion Theme + // #enddocregion theme } class StylingPage extends StatelessWidget { @@ -193,7 +193,7 @@ class ThemeDataExample extends StatelessWidget { final Brightness brightness; - // #docregion ThemeData + // #docregion theme-data @override Widget build(BuildContext context) { return Theme( @@ -207,7 +207,7 @@ class ThemeDataExample extends StatelessWidget { ), ); } - // #enddocregion ThemeData + // #enddocregion theme-data } class SharedPrefsExample extends StatefulWidget { @@ -220,7 +220,7 @@ class SharedPrefsExample extends StatefulWidget { class _SharedPrefsExampleState extends State { int? _counter; - // #docregion SharedPrefsUpdate + // #docregion shared-prefs-update Future updateCounter() async { final prefs = await SharedPreferences.getInstance(); int? counter = prefs.getInt('counter'); @@ -231,7 +231,7 @@ class _SharedPrefsExampleState extends State { _counter = counter; }); } - // #enddocregion SharedPrefsUpdate + // #enddocregion shared-prefs-update @override Widget build(BuildContext context) { @@ -242,7 +242,7 @@ class _SharedPrefsExampleState extends State { class DrawerExample extends StatelessWidget { const DrawerExample({super.key}); - // #docregion Drawer + // #docregion drawer @override Widget build(BuildContext context) { return Drawer( @@ -256,13 +256,13 @@ class DrawerExample extends StatelessWidget { ), ); } - // #enddocregion Drawer + // #enddocregion drawer } class ScaffoldExample extends StatelessWidget { const ScaffoldExample({super.key}); - // #docregion Scaffold + // #docregion scaffold @override Widget build(BuildContext context) { return Scaffold( @@ -280,13 +280,13 @@ class ScaffoldExample extends StatelessWidget { body: Container(), ); } - // #enddocregion Scaffold + // #enddocregion scaffold } class GestureDetectorExample extends StatelessWidget { const GestureDetectorExample({super.key}); - // #docregion GestureDetector + // #docregion gesture-detector @override Widget build(BuildContext context) { return GestureDetector( @@ -314,7 +314,7 @@ class GestureDetectorExample extends StatelessWidget { }, ); } - // #enddocregion GestureDetector + // #enddocregion gesture-detector } class HttpExample extends StatefulWidget { @@ -326,7 +326,7 @@ class HttpExample extends StatefulWidget { class _HttpExampleState extends State { String _ipAddress = ''; - // #docregion HTTP + // #docregion http final url = Uri.parse('https://httpbin.org/ip'); final httpClient = HttpClient(); @@ -339,7 +339,7 @@ class _HttpExampleState extends State { _ipAddress = ip; }); } - // #enddocregion HTTP + // #enddocregion http @override Widget build(BuildContext context) { @@ -355,7 +355,7 @@ class TextEditingExample extends StatefulWidget { } class _TextEditingExampleState extends State { - // #docregion TextEditingController + // #docregion text-editing-controller final TextEditingController _controller = TextEditingController(); @override @@ -383,7 +383,7 @@ class _TextEditingExampleState extends State { ), ]); } - // #enddocregion TextEditingController + // #enddocregion text-editing-controller } class FormExample extends StatefulWidget { @@ -398,7 +398,7 @@ class _FormExampleState extends State { String? _email = ''; final String _password = ''; - // #docregion FormSubmit + // #docregion form-submit void _submit() { final form = formKey.currentState; if (form != null && form.validate()) { @@ -413,9 +413,9 @@ class _FormExampleState extends State { ); } } - // #enddocregion FormSubmit + // #enddocregion form-submit - // #docregion FormState + // #docregion form-state @override Widget build(BuildContext context) { return Form( @@ -445,14 +445,14 @@ class _FormExampleState extends State { ), ); } - // #enddocregion FormState + // #enddocregion form-state } class PlatformExample extends StatelessWidget { const PlatformExample({super.key}); String whichPlatform(BuildContext context) { - // #docregion Platform + // #docregion platform final platform = Theme.of(context).platform; if (platform == TargetPlatform.iOS) { return 'iOS'; @@ -464,7 +464,7 @@ class PlatformExample extends StatelessWidget { return 'fuchsia'; } return 'not recognized '; - // #enddocregion Platform + // #enddocregion platform } @override @@ -473,14 +473,14 @@ class PlatformExample extends StatelessWidget { } } -class DismissableWidgets extends StatefulWidget { - const DismissableWidgets({super.key}); +class DismissibleWidgets extends StatefulWidget { + const DismissibleWidgets({super.key}); @override - State createState() => _DismissableWidgetsState(); + State createState() => _DismissibleWidgetsState(); } -class _DismissableWidgetsState extends State { +class _DismissibleWidgetsState extends State { final List cards = [ const Card( child: Text('Hello!'), @@ -492,7 +492,7 @@ class _DismissableWidgetsState extends State { @override Widget build(BuildContext context) { - // #docregion Dismissable + // #docregion dismissible return Dismissible( key: Key(widget.key.toString()), onDismissed: (dismissDirection) { @@ -502,6 +502,6 @@ class _DismissableWidgetsState extends State { //... ), ); - // #enddocregion Dismissable + // #enddocregion dismissible } } diff --git a/examples/get-started/flutter-for/react_native_devs/lib/imports.dart b/examples/get-started/flutter-for/react_native_devs/lib/imports.dart index 9b99349162..b6a6f33c08 100644 --- a/examples/get-started/flutter-for/react_native_devs/lib/imports.dart +++ b/examples/get-started/flutter-for/react_native_devs/lib/imports.dart @@ -1,8 +1,8 @@ // ignore_for_file: unused_import -// #docregion Imports +// #docregion imports import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:my_widgets/my_widgets.dart'; -// #enddocregion Imports +// #enddocregion imports diff --git a/examples/get-started/flutter-for/react_native_devs/lib/layouts.dart b/examples/get-started/flutter-for/react_native_devs/lib/layouts.dart index 4119622585..ce3b4677eb 100644 --- a/examples/get-started/flutter-for/react_native_devs/lib/layouts.dart +++ b/examples/get-started/flutter-for/react_native_devs/lib/layouts.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; class ColumnExample extends StatelessWidget { const ColumnExample({super.key}); - // #docregion Column + // #docregion column @override Widget build(BuildContext context) { return Center( @@ -27,14 +27,14 @@ class ColumnExample extends StatelessWidget { ], ), ); - // #enddocregion Column + // #enddocregion column } } class StackExample extends StatelessWidget { const StackExample({super.key}); - // #docregion Stack + // #docregion stack @override Widget build(BuildContext context) { return Stack( @@ -51,6 +51,6 @@ class StackExample extends StatelessWidget { ), ], ); - // #enddocregion Stack + // #enddocregion stack } } diff --git a/examples/get-started/flutter-for/react_native_devs/lib/main.dart b/examples/get-started/flutter-for/react_native_devs/lib/main.dart index 5f6ff858f6..a6df7f3c11 100644 --- a/examples/get-started/flutter-for/react_native_devs/lib/main.dart +++ b/examples/get-started/flutter-for/react_native_devs/lib/main.dart @@ -1,49 +1,49 @@ // ignore_for_file: avoid_print, unused_local_variable, prefer_typing_uninitialized_variables -// #docregion Main +// #docregion main /// Dart void main() {} -// #enddocregion Main +// #enddocregion main void printCode() { - // #docregion Print + // #docregion print /// Dart print('Hello world!'); - // #enddocregion Print + // #enddocregion print } void variableCode() { - // #docregion Variables + // #docregion variables /// Dart /// Both variables are acceptable. String name = 'dart'; // Explicitly typed as a [String]. var otherName = 'Dart'; // Inferred [String] type. - // #enddocregion Variables + // #enddocregion variables } void nullCode() { - // #docregion Null + // #docregion null // Dart var name; // == null; raises a linter warning int? x; // == null - // #enddocregion Null + // #enddocregion null } void trueExample() { - // #docregion True + // #docregion true /// Dart var myNull; var zero = 0; if (zero == 0) { print('use "== 0" to check zero'); } - // #enddocregion True + // #enddocregion true } -// #docregion Function +// #docregion function /// Dart /// You can explicitly define the return type. bool fn() { return true; } -// #enddocregion Function +// #enddocregion function diff --git a/examples/get-started/flutter-for/react_native_devs/lib/navigation.dart b/examples/get-started/flutter-for/react_native_devs/lib/navigation.dart index c410120baf..57e8b75d74 100644 --- a/examples/get-started/flutter-for/react_native_devs/lib/navigation.dart +++ b/examples/get-started/flutter-for/react_native_devs/lib/navigation.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -// #docregion Navigator +// #docregion navigator class NavigationApp extends StatelessWidget { // This widget is the root of your application. const NavigationApp({super.key}); @@ -17,7 +17,7 @@ class NavigationApp extends StatelessWidget { ); } } -// #enddocregion Navigator +// #enddocregion navigator class UsualNavScreen extends StatelessWidget { const UsualNavScreen({super.key}); @@ -32,20 +32,20 @@ class DrawerNavScreen extends StatelessWidget { const DrawerNavScreen({super.key}); void navigateRoute(BuildContext context) { - // #docregion PushNamed + // #docregion push-named Navigator.of(context).pushNamed('/a'); - // #enddocregion PushNamed + // #enddocregion push-named } void pushNavigator(BuildContext context) { - // #docregion NavigatorPush + // #docregion navigator-push Navigator.push( context, MaterialPageRoute( builder: (context) => const UsualNavScreen(), ), ); - // #enddocregion NavigatorPush + // #enddocregion navigator-push } @override @@ -61,7 +61,7 @@ class MyApp extends StatefulWidget { State createState() => _MyAppState(); } -// #docregion TabNav +// #docregion tab-nav class _MyAppState extends State with SingleTickerProviderStateMixin { late TabController controller = TabController(length: 2, vsync: this); @@ -76,7 +76,7 @@ class _MyAppState extends State with SingleTickerProviderStateMixin { ); } } -// #enddocregion TabNav +// #enddocregion tab-nav class NavigationHomePage extends StatefulWidget { const NavigationHomePage({super.key}); @@ -85,7 +85,7 @@ class NavigationHomePage extends StatefulWidget { State createState() => _NavigationHomePageState(); } -// #docregion NavigationHomePageState +// #docregion navigation-home-page-state class _NavigationHomePageState extends State with SingleTickerProviderStateMixin { late TabController controller = TabController(length: 2, vsync: this); @@ -113,7 +113,7 @@ class _NavigationHomePageState extends State )); } } -// #enddocregion NavigationHomePageState +// #enddocregion navigation-home-page-state class HomeScreen extends StatelessWidget { const HomeScreen({super.key}); @@ -136,7 +136,7 @@ class TabScreen extends StatelessWidget { class DrawerExample extends StatelessWidget { const DrawerExample({super.key}); - // #docregion Drawer + // #docregion drawer @override Widget build(BuildContext context) { return Drawer( @@ -150,5 +150,5 @@ class DrawerExample extends StatelessWidget { ), ); } - // #enddocregion Drawer + // #enddocregion drawer } diff --git a/examples/get-started/flutter-for/react_native_devs/lib/stateful.dart b/examples/get-started/flutter-for/react_native_devs/lib/stateful.dart index 2b6c89bc6b..64fd980693 100644 --- a/examples/get-started/flutter-for/react_native_devs/lib/stateful.dart +++ b/examples/get-started/flutter-for/react_native_devs/lib/stateful.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; -// #docregion StatefulWidget +// #docregion stateful-widget class MyStatefulWidget extends StatefulWidget { const MyStatefulWidget({ super.key, @@ -13,9 +13,9 @@ class MyStatefulWidget extends StatefulWidget { @override State createState() => _MyStatefulWidgetState(); } -// #enddocregion StatefulWidget +// #enddocregion stateful-widget -// #docregion StatefulWidgetState +// #docregion stateful-widget-state class _MyStatefulWidgetState extends State { bool showText = true; bool toggleState = true; @@ -65,4 +65,4 @@ class _MyStatefulWidgetState extends State { ); } } -// #enddocregion StatefulWidgetState +// #enddocregion stateful-widget-state diff --git a/examples/get-started/flutter-for/web_devs/lib/main.dart b/examples/get-started/flutter-for/web_devs/lib/main.dart index 5bc325e5e5..7e905632ee 100644 --- a/examples/get-started/flutter-for/web_devs/lib/main.dart +++ b/examples/get-started/flutter-for/web_devs/lib/main.dart @@ -1,17 +1,17 @@ import 'package:flutter/material.dart'; -// #docregion TextStyle +// #docregion text-style TextStyle bold24Roboto = const TextStyle( color: Colors.white, fontSize: 24, fontWeight: FontWeight.bold, ); -// #enddocregion TextStyle +// #enddocregion text-style class MyWidget extends StatelessWidget { MyWidget({super.key}); - // #docregion Container + // #docregion container final container = Container( // grey box width: 320, @@ -28,7 +28,7 @@ class MyWidget extends StatelessWidget { /*[[highlight]]*/ textAlign: TextAlign.center, /*[[/highlight]]*/ ), ); -// #enddocregion Container +// #enddocregion container @override Widget build(BuildContext context) { @@ -39,7 +39,7 @@ class MyWidget extends StatelessWidget { class Container2 extends StatelessWidget { Container2({super.key}); - // #docregion Container2 + // #docregion container-2 final container = Container( // grey box width: 320, @@ -51,7 +51,7 @@ class Container2 extends StatelessWidget { style: bold24Roboto, ), ); -// #enddocregion Container2 +// #enddocregion container-2 @override Widget build(BuildContext context) { @@ -62,7 +62,7 @@ class Container2 extends StatelessWidget { class Container3 extends StatelessWidget { Container3({super.key}); - // #docregion Container3 + // #docregion container-3 final container = Container( // grey box width: 320, @@ -76,7 +76,7 @@ class Container3 extends StatelessWidget { style: bold24Roboto, ), ); -// #enddocregion Container3 +// #enddocregion container-3 @override Widget build(BuildContext context) { @@ -87,7 +87,7 @@ class Container3 extends StatelessWidget { class CenterWidget extends StatelessWidget { CenterWidget({super.key}); - // #docregion Center + // #docregion center final container = Container( // grey box width: 320, @@ -100,7 +100,7 @@ class CenterWidget extends StatelessWidget { ), ), ); - // #enddocregion Center + // #enddocregion center @override Widget build(BuildContext context) { @@ -111,7 +111,7 @@ class CenterWidget extends StatelessWidget { class Nested extends StatelessWidget { Nested({super.key}); - // #docregion Nested + // #docregion nested final container = Container( // grey box /*[[highlight]]*/ width: 320, @@ -134,7 +134,7 @@ class Nested extends StatelessWidget { ), ), ); - // #enddocregion Nested + // #enddocregion nested @override Widget build(BuildContext context) { @@ -145,7 +145,7 @@ class Nested extends StatelessWidget { class Absolute extends StatelessWidget { Absolute({super.key}); - // #docregion Absolute + // #docregion absolute final container = Container( // grey box width: 320, @@ -172,7 +172,7 @@ class Absolute extends StatelessWidget { ], ), ); - // #enddocregion Absolute + // #enddocregion absolute @override Widget build(BuildContext context) { @@ -183,7 +183,7 @@ class Absolute extends StatelessWidget { class Rotating extends StatelessWidget { Rotating({super.key}); - // #docregion Rotating + // #docregion rotating final container = Container( // grey box width: 320, @@ -208,7 +208,7 @@ class Rotating extends StatelessWidget { ), ), ); - // #enddocregion Rotating + // #enddocregion rotating @override Widget build(BuildContext context) { @@ -219,7 +219,7 @@ class Rotating extends StatelessWidget { class Scaling extends StatelessWidget { Scaling({super.key}); - // #docregion Scaling + // #docregion scaling final container = Container( // grey box width: 320, @@ -244,7 +244,7 @@ class Scaling extends StatelessWidget { ), ), ); - // #enddocregion Scaling + // #enddocregion scaling @override Widget build(BuildContext context) { @@ -255,7 +255,7 @@ class Scaling extends StatelessWidget { class Gradient extends StatelessWidget { Gradient({super.key}); - // #docregion Gradient + // #docregion gradient final container = Container( // grey box width: 320, @@ -283,7 +283,7 @@ class Gradient extends StatelessWidget { ), ), ); - // #enddocregion Gradient + // #enddocregion gradient @override Widget build(BuildContext context) { @@ -294,7 +294,7 @@ class Gradient extends StatelessWidget { class HorizontalGradient extends StatelessWidget { HorizontalGradient({super.key}); - // #docregion HorizontalGradient + // #docregion horizontal-gradient final container = Container( // grey box width: 320, @@ -322,7 +322,7 @@ class HorizontalGradient extends StatelessWidget { ), ), ); - // #enddocregion HorizontalGradient + // #enddocregion horizontal-gradient @override Widget build(BuildContext context) { @@ -333,7 +333,7 @@ class HorizontalGradient extends StatelessWidget { class RoundCorners extends StatelessWidget { RoundCorners({super.key}); - // #docregion RoundCorners + // #docregion round-corners final container = Container( // grey box width: 320, @@ -356,7 +356,7 @@ class RoundCorners extends StatelessWidget { ), ), ); - // #enddocregion RoundCorners + // #enddocregion round-corners @override Widget build(BuildContext context) { @@ -367,7 +367,7 @@ class RoundCorners extends StatelessWidget { class BoxShadowExample extends StatelessWidget { BoxShadowExample({super.key}); - // #docregion BoxShadow + // #docregion box-shadow final container = Container( // grey box width: 320, @@ -402,7 +402,7 @@ class BoxShadowExample extends StatelessWidget { ), ), ); - // #enddocregion BoxShadow + // #enddocregion box-shadow @override Widget build(BuildContext context) { @@ -413,7 +413,7 @@ class BoxShadowExample extends StatelessWidget { class CircleExample extends StatelessWidget { CircleExample({super.key}); - // #docregion Circle + // #docregion circle final container = Container( // grey box width: 320, @@ -438,7 +438,7 @@ class CircleExample extends StatelessWidget { ), ), ); - // #enddocregion Circle + // #enddocregion circle @override Widget build(BuildContext context) { @@ -449,7 +449,7 @@ class CircleExample extends StatelessWidget { class TextSpacingExample extends StatelessWidget { TextSpacingExample({super.key}); - // #docregion TextSpacing + // #docregion text-spacing final container = Container( // grey box width: 320, @@ -474,7 +474,7 @@ class TextSpacingExample extends StatelessWidget { ), ), ); - // #enddocregion TextSpacing + // #enddocregion text-spacing @override Widget build(BuildContext context) { @@ -485,7 +485,7 @@ class TextSpacingExample extends StatelessWidget { class InlineFormattingExample extends StatelessWidget { InlineFormattingExample({super.key}); - // #docregion InlineFormatting + // #docregion inline-formatting final container = Container( // grey box width: 320, @@ -517,7 +517,7 @@ class InlineFormattingExample extends StatelessWidget { ), ), ); - // #enddocregion InlineFormatting + // #enddocregion inline-formatting @override Widget build(BuildContext context) { @@ -528,7 +528,7 @@ class InlineFormattingExample extends StatelessWidget { class TextExcerptsExample extends StatelessWidget { TextExcerptsExample({super.key}); - // #docregion TextExcerpt + // #docregion text-excerpt final container = Container( // grey box width: 320, @@ -550,7 +550,7 @@ class TextExcerptsExample extends StatelessWidget { ), ), ); - // #enddocregion TextExcerpt + // #enddocregion text-excerpt @override Widget build(BuildContext context) { diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/custom_button.dart b/examples/get-started/flutter-for/xamarin_devs/lib/custom_button.dart index 952a85c085..e8d9d63669 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/custom_button.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/custom_button.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -// #docregion CustomButton +// #docregion custom-button class CustomButton extends StatelessWidget { const CustomButton(this.label, {super.key}); @@ -14,17 +14,17 @@ class CustomButton extends StatelessWidget { ); } } -// #enddocregion CustomButton +// #enddocregion custom-button class UseCustomButton extends StatelessWidget { const UseCustomButton({super.key}); - // #docregion UseCustomButton + // #docregion use-custom-button @override Widget build(BuildContext context) { return const Center( child: CustomButton('Hello'), ); } - // #enddocregion UseCustomButton + // #enddocregion use-custom-button } diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/data.dart b/examples/get-started/flutter-for/xamarin_devs/lib/data.dart index 6d6179c0ea..7875d32fa2 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/data.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/data.dart @@ -35,7 +35,7 @@ class _SampleAppPageState extends State { loadData(); } - // #docregion loadData + // #docregion load-data Future loadData() async { final Uri dataURL = Uri.parse( 'https://jsonplaceholder.typicode.com/posts', @@ -45,7 +45,7 @@ class _SampleAppPageState extends State { data = jsonDecode(response.body); }); } - // #enddocregion loadData + // #enddocregion load-data Widget getRow(int index) { return Padding( diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/gestures.dart b/examples/get-started/flutter-for/xamarin_devs/lib/gestures.dart index cbde53f4eb..26ab4e8f5f 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/gestures.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/gestures.dart @@ -4,7 +4,7 @@ import 'package:flutter/material.dart'; class MyWidget extends StatelessWidget { const MyWidget({super.key}); - // #docregion ElevatedButton + // #docregion elevated-button @override Widget build(BuildContext context) { return ElevatedButton( @@ -14,10 +14,10 @@ class MyWidget extends StatelessWidget { child: const Text('Button'), ); } - // #enddocregion ElevatedButton + // #enddocregion elevated-button } -// #docregion GestureDetector +// #docregion gesture-detector class SampleApp extends StatelessWidget { const SampleApp({super.key}); @@ -35,9 +35,9 @@ class SampleApp extends StatelessWidget { ); } } -// #enddocregion GestureDetector +// #enddocregion gesture-detector -// #docregion RotatingFlutterDetector +// #docregion rotating-flutter-detector class RotatingFlutterDetector extends StatefulWidget { const RotatingFlutterDetector({super.key}); @@ -82,4 +82,4 @@ class _RotatingFlutterDetectorState extends State ); } } -// #enddocregion RotatingFlutterDetector +// #enddocregion rotating-flutter-detector diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/images.dart b/examples/get-started/flutter-for/xamarin_devs/lib/images.dart index 1f44a7c544..b7744dd727 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/images.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/images.dart @@ -3,23 +3,23 @@ import 'package:flutter/material.dart'; class ImageAssetExample extends StatelessWidget { const ImageAssetExample({super.key}); - // #docregion ImageAsset + // #docregion image-asset @override Widget build(BuildContext context) { return Image.asset('images/my_icon.png'); } - // #enddocregion ImageAsset + // #enddocregion image-asset } class AssetImageExample extends StatelessWidget { const AssetImageExample({super.key}); - // #docregion AssetImage + // #docregion asset-image @override Widget build(BuildContext context) { return const Image( image: AssetImage('images/my_image.png'), ); } - // #enddocregion AssetImage + // #enddocregion asset-image } diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/input_decoration.dart b/examples/get-started/flutter-for/xamarin_devs/lib/input_decoration.dart index 6254b37b57..f31658cbac 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/input_decoration.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/input_decoration.dart @@ -6,11 +6,11 @@ class MyForm extends StatelessWidget { @override Widget build(BuildContext context) { return const Center( - // #docregion HintText + // #docregion hint-text child: TextField( decoration: InputDecoration(hintText: 'This is a hint'), ), - // #enddocregion HintText + // #enddocregion hint-text ); } } diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/isolates.dart b/examples/get-started/flutter-for/xamarin_devs/lib/isolates.dart index 15d75237ac..cbdc258fe7 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/isolates.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/isolates.dart @@ -39,7 +39,7 @@ class _SampleAppPageState extends State { bool get showLoadingDialog => data.isEmpty; - // #docregion SimpleIsolate + // #docregion simple-isolate Future loadData() async { final ReceivePort receivePort = ReceivePort(); await Isolate.spawn(dataLoader, receivePort.sendPort); @@ -78,7 +78,7 @@ class _SampleAppPageState extends State { port.send([msg, response.sendPort]); return response.first as Future>>; } - // #enddocregion SimpleIsolate + // #enddocregion simple-isolate Widget getBody() { if (showLoadingDialog) { diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/layouts.dart b/examples/get-started/flutter-for/xamarin_devs/lib/layouts.dart index 0c89cdc526..57bb3d587f 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/layouts.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/layouts.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; class RowExample extends StatelessWidget { const RowExample({super.key}); - // #docregion Row + // #docregion row @override Widget build(BuildContext context) { return const Row( @@ -16,13 +16,13 @@ class RowExample extends StatelessWidget { ], ); } - // #enddocregion Row + // #enddocregion row } class ColumnExample extends StatelessWidget { const ColumnExample({super.key}); - // #docregion Column + // #docregion column @override Widget build(BuildContext context) { return const Column( @@ -34,14 +34,14 @@ class ColumnExample extends StatelessWidget { Text('Column Four'), ], ); - // #enddocregion Column + // #enddocregion column } } class GridExample extends StatelessWidget { const GridExample({super.key}); - // #docregion Grid + // #docregion grid @override Widget build(BuildContext context) { return GridView.count( @@ -62,13 +62,13 @@ class GridExample extends StatelessWidget { ), ); } - // #enddocregion Grid + // #enddocregion grid } class StackExample extends StatelessWidget { const StackExample({super.key}); - // #docregion Stack + // #docregion stack @override Widget build(BuildContext context) { return const Stack( @@ -89,26 +89,26 @@ class StackExample extends StatelessWidget { ], ); } - // #enddocregion Stack + // #enddocregion stack } class ScrollViewExample extends StatelessWidget { const ScrollViewExample({super.key}); - // #docregion ScrollView + // #docregion scroll-view @override Widget build(BuildContext context) { return const SingleChildScrollView( child: Text('Long Content'), ); } - // #enddocregion ScrollView + // #enddocregion scroll-view } class ListViewExample extends StatelessWidget { const ListViewExample({super.key}); - // #docregion ListView + // #docregion list-view @override Widget build(BuildContext context) { return ListView( @@ -120,5 +120,5 @@ class ListViewExample extends StatelessWidget { ], ); } - // #enddocregion ListView + // #enddocregion list-view } diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/main.dart b/examples/get-started/flutter-for/xamarin_devs/lib/main.dart index 769e118554..7d17a88be9 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/main.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/main.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; -// #docregion Main +// #docregion main void main() { runApp(const MyApp()); } -// #enddocregion Main +// #enddocregion main -// #docregion MyApp +// #docregion my-app class MyApp extends StatelessWidget { /// This widget is the root of your application. const MyApp({super.key}); @@ -21,4 +21,4 @@ class MyApp extends StatelessWidget { ); } } -// #enddocregion MyApp +// #enddocregion my-app diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/navigation.dart b/examples/get-started/flutter-for/xamarin_devs/lib/navigation.dart index 05683e4773..c9a4bef410 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/navigation.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/navigation.dart @@ -2,7 +2,7 @@ import 'dart:developer' as developer; import 'package:flutter/material.dart'; -// #docregion Main +// #docregion main void main() { runApp( MaterialApp( @@ -15,7 +15,7 @@ void main() { ), ); } -// #enddocregion Main +// #enddocregion main class MyAppHome extends StatelessWidget { const MyAppHome({super.key}); @@ -41,9 +41,9 @@ class AnotherPage extends StatelessWidget { const AnotherPage({super.key}); void goToPage(BuildContext context) { - // #docregion PushNamed + // #docregion push-named Navigator.of(context).pushNamed('/b'); - // #enddocregion PushNamed + // #enddocregion push-named } Future goToAnotherPage(BuildContext context) async { @@ -57,9 +57,9 @@ class AnotherPage extends StatelessWidget { } void popLocation(BuildContext context) { - // #docregion PopLocation + // #docregion pop-location Navigator.of(context).pop({'lat': 43.821757, 'long': -79.226392}); - // #enddocregion PopLocation + // #enddocregion pop-location } @override diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/padding.dart b/examples/get-started/flutter-for/xamarin_devs/lib/padding.dart index c1283c44bd..c42f75f732 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/padding.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/padding.dart @@ -3,7 +3,7 @@ import 'package:flutter/material.dart'; class MyWidget extends StatelessWidget { const MyWidget({super.key}); - // #docregion Padding + // #docregion padding @override Widget build(BuildContext context) { return Scaffold( @@ -19,5 +19,5 @@ class MyWidget extends StatelessWidget { ), ); } - // #enddocregion Padding + // #enddocregion padding } diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/page.dart b/examples/get-started/flutter-for/xamarin_devs/lib/page.dart index f2925529bd..eabfe59307 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/page.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/page.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -// #docregion MyApp +// #docregion my-app class MyApp extends StatelessWidget { /// This widget is the root of your application. const MyApp({super.key}); @@ -13,9 +13,9 @@ class MyApp extends StatelessWidget { ); } } -// #enddocregion MyApp +// #enddocregion my-app -// #docregion MyHomePage +// #docregion my-home-page class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title}); @@ -24,9 +24,9 @@ class MyHomePage extends StatefulWidget { @override State createState() => _MyHomePageState(); } -// #enddocregion MyHomePage +// #enddocregion my-home-page -// #docregion MyHomePageState +// #docregion my-home-page-state class _MyHomePageState extends State { int _counter = 0; @@ -68,4 +68,4 @@ class _MyHomePageState extends State { ); } } -// #enddocregion MyHomePageState +// #enddocregion my-home-page-state diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/strings.dart b/examples/get-started/flutter-for/xamarin_devs/lib/strings.dart index 8b9cc0379a..c41e95a99d 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/strings.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/strings.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -// #docregion Localization +// #docregion localization import 'package:flutter_localizations/flutter_localizations.dart'; class MyWidget extends StatelessWidget { @@ -21,29 +21,29 @@ class MyWidget extends StatelessWidget { ); } } -// #enddocregion Localization +// #enddocregion localization class TextWidget extends StatelessWidget { const TextWidget({super.key}); @override Widget build(BuildContext context) { - // #docregion AccessString + // #docregion access-string return const Text(Strings.welcomeMessage); - // #enddocregion AccessString + // #enddocregion access-string } } -// #docregion StringsClass +// #docregion strings-class class Strings { static const String welcomeMessage = 'Welcome To Flutter'; } -// #enddocregion StringsClass +// #enddocregion strings-class class CustomFontExample extends StatelessWidget { const CustomFontExample({super.key}); - // #docregion CustomFont + // #docregion custom-font @override Widget build(BuildContext context) { return Scaffold( @@ -56,5 +56,5 @@ class CustomFontExample extends StatelessWidget { ), ); } - // #enddocregion CustomFont + // #enddocregion custom-font } diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/theme.dart b/examples/get-started/flutter-for/xamarin_devs/lib/theme.dart index dbe03f45ac..bb77d23fc0 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/theme.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/theme.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -// #docregion Theme +// #docregion theme class SampleApp extends StatelessWidget { /// This widget is the root of your application. const SampleApp({super.key}); @@ -18,7 +18,7 @@ class SampleApp extends StatelessWidget { ); } } -// #enddocregion Theme +// #enddocregion theme class SampleAppPage extends StatelessWidget { const SampleAppPage({super.key}); diff --git a/examples/get-started/flutter-for/xamarin_devs/lib/views.dart b/examples/get-started/flutter-for/xamarin_devs/lib/views.dart index eb663b0fc1..a8175d641f 100644 --- a/examples/get-started/flutter-for/xamarin_devs/lib/views.dart +++ b/examples/get-started/flutter-for/xamarin_devs/lib/views.dart @@ -6,16 +6,16 @@ class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { - // #docregion Text + // #docregion text return const Text( 'I like Flutter!', style: TextStyle(fontWeight: FontWeight.bold), ); - // #enddocregion Text + // #enddocregion text } } -// #docregion AddRemoveElement +// #docregion add-remove-element class SampleApp extends StatelessWidget { /// This widget is the root of your application. const SampleApp({super.key}); @@ -68,4 +68,4 @@ class _SampleAppPageState extends State { ); } } -// #enddocregion AddRemoveElement +// #enddocregion add-remove-element diff --git a/src/content/get-started/codelab-web.md b/src/content/get-started/codelab-web.md index 1f99cf76e9..dc546ea7b2 100644 --- a/src/content/get-started/codelab-web.md +++ b/src/content/get-started/codelab-web.md @@ -314,7 +314,7 @@ First, in your `lib/main.dart` file, add the following class definition for the `WelcomeScreen` widget after the `SignUpScreen` class: - + ```dart class WelcomeScreen extends StatelessWidget { const WelcomeScreen({super.key}); @@ -358,7 +358,7 @@ method that will display the welcome screen. Change `onPressed: null` to the following: - + ```dart onPressed: _showWelcomeScreen, ``` @@ -372,7 +372,7 @@ Fix the error reported by the analyzer that `_showWelcomeScreen` is not defined. Directly above the `build()` method, add the following function: - + ```dart void _showWelcomeScreen() { Navigator.of(context).pushNamed('/welcome'); @@ -388,7 +388,7 @@ Create the connection to show the new screen. In the `build()` method for `SignUpApp`, add the following route below `'/'`: - + ```dart '/welcome': (context) => const WelcomeScreen(), ``` @@ -452,7 +452,7 @@ Add a method to update `_formProgress`. In the `_SignUpFormState` class, add a new method called `_updateFormProgress()`: - + ```dart void _updateFormProgress() { var progress = 0.0; @@ -486,7 +486,7 @@ In the `build()` method of the `_SignUpFormState` class, add a callback to the `Form` widget's `onChanged` argument. Add the code below marked as NEW: - + ```dart return Form( onChanged: _updateFormProgress, // NEW @@ -503,7 +503,7 @@ In `step 1`, you modified the `onPressed` property for the Now, update that button to display the welcome screen only when the form is completely filled in: - + ```dart TextButton( style: ButtonStyle( @@ -694,7 +694,7 @@ Set a breakpoint.
    In the Dart code, scroll down to where `progress` is updated: - + ```dart for (final controller in controllers) { if (controller.value.text.isNotEmpty) { @@ -768,7 +768,7 @@ area. The animation has the following behavior: Add an `AnimatedProgressIndicator`.
    At the bottom of the file, add this widget: - + ```dart class AnimatedProgressIndicator extends StatefulWidget { final double value; @@ -849,7 +849,7 @@ Use the new `AnimatedProgressIndicator`.
    Then, replace the `LinearProgressIndicator` in the `Form` with this new `AnimatedProgressIndicator`: - + ```dart child: Column( mainAxisSize: MainAxisSize.min, diff --git a/src/content/get-started/flutter-for/android-devs.md b/src/content/get-started/flutter-for/android-devs.md index 52c2728467..61129ca171 100644 --- a/src/content/get-started/flutter-for/android-devs.md +++ b/src/content/get-started/flutter-for/android-devs.md @@ -100,7 +100,7 @@ The following example shows how to use a `StatelessWidget`. A common `StatelessWidget` is the `Text` widget. If you look at the implementation of the `Text` widget you'll find that it subclasses `StatelessWidget`. - + ```dart Text( 'I like Flutter!', @@ -119,7 +119,7 @@ update it when the user clicks the button. For example: - + ```dart import 'package:flutter/material.dart'; @@ -184,7 +184,7 @@ with a widget tree. The following example shows how to display a simple widget with padding: - + ```dart @override Widget build(BuildContext context) { @@ -220,7 +220,7 @@ and control that child's creation with a boolean flag. For example, here is how you can toggle between two widgets when you click on a `FloatingActionButton`: - + ```dart import 'package:flutter/material.dart'; @@ -492,7 +492,7 @@ For example, how do you build a `CustomButton` that takes a label in the constructor? Create a CustomButton that composes a `ElevatedButton` with a label, rather than by extending `ElevatedButton`: - + ```dart class CustomButton extends StatelessWidget { final String label; @@ -511,7 +511,7 @@ class CustomButton extends StatelessWidget { Then use `CustomButton`, just as you'd use any other Flutter widget: - + ```dart @override Widget build(BuildContext context) { @@ -550,7 +550,7 @@ In Flutter, you have a couple options to navigate between pages: The following example builds a Map. - + ```dart void main() { runApp(MaterialApp( @@ -566,7 +566,7 @@ void main() { Navigate to a route by `push`ing its name to the `Navigator`. - + ```dart Navigator.of(context).pushNamed('/b'); ``` @@ -738,7 +738,7 @@ This is done by `await`ing on the `Future` returned by `push()`. For example, to start a location route that lets the user select their location, you could do the following: - + ```dart Object? coordinates = await Navigator.of(context).pushNamed('/location'); ``` @@ -746,7 +746,7 @@ Object? coordinates = await Navigator.of(context).pushNamed('/location'); And then, inside your location route, once the user has selected their location you can `pop` the stack with the result: - + ```dart Navigator.of(context).pop({'lat': 43.821757, 'long': -79.226392}); ``` @@ -773,7 +773,7 @@ have used Kotlin's coroutines. For example, you can run network code without causing the UI to hang by using `async`/`await` and letting Dart do the heavy lifting: - + ```dart Future loadData() async { var dataURL = Uri.parse('https://jsonplaceholder.typicode.com/posts'); @@ -884,7 +884,7 @@ you would keep _any_ sort of work out of the main thread in Android. For I/O-bound work, declare the function as an `async` function, and `await` on long-running tasks inside the function: - + ```dart Future loadData() async { var dataURL = Uri.parse('https://jsonplaceholder.typicode.com/posts'); @@ -917,7 +917,7 @@ Isolates are true to their name, and cannot share memory The following example shows, in a simple isolate, how to share data back to the main thread to update the UI. - + ```dart Future loadData() async { ReceivePort receivePort = ReceivePort(); @@ -1294,14 +1294,14 @@ assets: You can then access your images using `AssetImage`: - + ```dart AssetImage('images/my_icon.jpeg') ``` or directly in an `Image` widget: - + ```dart @override Widget build(BuildContext context) { @@ -1333,7 +1333,7 @@ The best and recommended practice is to hold your strings in a `.arb` file as ke Then in your code, you can access your strings as such: - + ```dart Text(AppLocalizations.of(context)!.hello('John')); ``` @@ -1482,7 +1482,7 @@ If you notice the two code samples are identical with the exception of the exploited to develop rich layouts that can change overtime with the same children. - + ```dart @override Widget build(BuildContext context) { @@ -1498,7 +1498,7 @@ Widget build(BuildContext context) { } ``` - + ```dart @override Widget build(BuildContext context) { @@ -1540,7 +1540,7 @@ This might seem like overkill coming from Android, but in Flutter a ListView widget is both a ScrollView and an Android ListView. - + ```dart @override Widget build(BuildContext context) { @@ -1575,7 +1575,7 @@ In Flutter there are two ways of adding touch listeners: 1. If the Widget supports event detection, pass a function to it and handle it in the function. For example, the ElevatedButton has an `onPressed` parameter: - + ```dart @override Widget build(BuildContext context) { @@ -1591,7 +1591,7 @@ In Flutter there are two ways of adding touch listeners: 2. If the Widget doesn't support event detection, wrap the widget in a GestureDetector and pass a function to the `onTap` parameter. - + ```dart class SampleTapApp extends StatelessWidget { const SampleTapApp({super.key}); @@ -1662,7 +1662,7 @@ Using the GestureDetector, you can listen to a wide range of Gestures such as: The following example shows a `GestureDetector` that rotates the Flutter logo on a double tap: - + ```dart class SampleApp extends StatefulWidget { const SampleApp({super.key}); @@ -2051,7 +2051,7 @@ fonts: Then assign the font to your `Text` widget: - + ```dart @override Widget build(BuildContext context) { @@ -2102,7 +2102,7 @@ In Flutter, you can easily show a "hint" or a placeholder text for your input by adding an InputDecoration object to the decoration constructor parameter for the Text Widget. - + ```dart Center( child: TextField( @@ -2281,7 +2281,7 @@ To customize the colors and styles of any child components, pass a `ThemeData` object to the `MaterialApp` widget. For example, in the code below, the color scheme from seed is set to deepPurple and text selection color is red. - + ```dart import 'package:flutter/material.dart'; diff --git a/src/content/get-started/flutter-for/react-native-devs.md b/src/content/get-started/flutter-for/react-native-devs.md index 31660c280b..d969223f21 100644 --- a/src/content/get-started/flutter-for/react-native-devs.md +++ b/src/content/get-started/flutter-for/react-native-devs.md @@ -47,7 +47,7 @@ function startHere() { In Dart, every app must have a top-level `main()` function that serves as the entry point to the app. - + ```dart /// Dart void main() {} @@ -64,7 +64,7 @@ To print to the console in Dart, use `print()`. console.log('Hello world!'); ``` - + ```dart /// Dart print('Hello world!'); @@ -92,7 +92,7 @@ typed or the type system must infer the proper type automatically. let name = 'JavaScript'; ``` - + ```dart /// Dart /// Both variables are acceptable. @@ -123,7 +123,7 @@ which must be initialized as a non-nullable value. let name; // == undefined ``` - + ```dart // Dart var name; // == null; raises a linter warning @@ -154,7 +154,7 @@ if (!zero) { In Dart, only the boolean value `true` is treated as true. - + ```dart /// Dart var myNull; @@ -178,7 +178,7 @@ function fn() { } ``` - + ```dart /// Dart /// You can explicitly define the return type. @@ -383,7 +383,7 @@ import the Cupertino library. To use a more basic widget set, import the Widgets library. Or, you can write your own widget library and import that. - + ```dart import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -561,7 +561,7 @@ In Flutter, define a class to create a custom widget and then reuse the widget. You can also define and call a function that returns a reusable widget as shown in the `build` function in the following example. - + ```dart /// Flutter class CustomCard extends StatelessWidget { @@ -626,7 +626,7 @@ The following screenshots show an example of the reusable Start with the `lib/main.dart` file. It's autogenerated when you create a Flutter app. - + ```dart // Dart void main() { @@ -718,7 +718,7 @@ in a source code directory and referencing it. In Flutter, add a static image to your app using the `Image.asset` constructor in a widget's build method. - + ```dart Image.asset('assets/background.png'); ``` @@ -734,7 +734,7 @@ size if needed. In Flutter, use the `Image.network` constructor to include an image from a URL. - + ```dart Image.network('https://docs.flutter.dev/assets/images/docs/owl.jpg'); ``` @@ -763,7 +763,7 @@ $ flutter pub add google_sign_in prompt you to do so. 3. Import the package into your app code as shown below: - + ```dart import 'package:flutter/material.dart'; ``` @@ -837,7 +837,7 @@ For a large or infinite list, use `ListView.builder`, which builds its children on demand and only builds those children that are visible. - + ```dart var data = [ 'Hello', @@ -890,7 +890,7 @@ and passes it to `CustomPaint`'s painter property. `CustomPaint` subclasses must implement the `paint()` and `shouldRepaint()` methods. - + ```dart class MyCanvasPainter extends CustomPainter { const MyCanvasPainter(); @@ -959,7 +959,7 @@ A [`Container`][] widget takes a combination of layout and styling properties, and a [`Center`][] widget centers its child widgets. - + ```dart @override Widget build(BuildContext context) { @@ -1004,7 +1004,7 @@ The widgets can entirely or partially overlap the base widget. The `Stack` widget positions its children relative to the edges of its box. This class is useful if you simply want to overlap several children widgets. - + ```dart @override Widget build(BuildContext context) { @@ -1064,7 +1064,7 @@ for its style property. If you want to use the same text style in multiple places, you can create a [`TextStyle`][] class and use it for multiple `Text` widgets. - + ```dart const TextStyle textStyle = TextStyle( color: Colors.cyan, @@ -1099,7 +1099,7 @@ so third party libraries are used. In Flutter, importing the Material library also pulls in the rich set of [Material icons][] and [colors][]. - + ```dart return const Icon(Icons.lightbulb_outline, color: Colors.redAccent); ``` @@ -1140,7 +1140,7 @@ from the Material Design [color palette][]. The following example sets the color scheme from seed to `deepPurple` and the text selection to `red`. - + ```dart class SampleApp extends StatelessWidget { const SampleApp({super.key}); @@ -1169,7 +1169,7 @@ by defining the styling in the [`ThemeData`][] class and passing it to the theme property in the [`MaterialApp`][] widget. - + ```dart @override Widget build(BuildContext context) { @@ -1187,7 +1187,7 @@ A `Theme` can be applied even without using the `MaterialApp` widget. The [`Theme`][] widget takes a `ThemeData` in its `data` parameter and applies the `ThemeData` to all of its children widgets. - + ```dart @override Widget build(BuildContext context) { @@ -1299,7 +1299,7 @@ that requires a `createState()` method. This method creates the state object that manages the widget's state, `_MyStatefulWidgetState`. - + ```dart class MyStatefulWidget extends StatefulWidget { const MyStatefulWidget({ @@ -1320,7 +1320,7 @@ When the state changes, for example, when the user toggles the button, `setState()` is called with the new toggle value. This causes the framework to rebuild this widget in the UI. - + ```dart class _MyStatefulWidgetState extends State { bool showText = true; @@ -1415,7 +1415,7 @@ In this example, `createState()` creates an instance of `_MyStatefulWidgetState`, which is implemented in the next best practice. - + ```dart class MyStatefulWidget extends StatefulWidget { const MyStatefulWidget({ @@ -1441,7 +1441,7 @@ class _MyStatefulWidgetState extends State { Add your custom `StatefulWidget` to the widget tree in the app's build method. - + ```dart class MyStatelessWidget extends StatelessWidget { // This widget is the root of your application. @@ -1500,7 +1500,7 @@ const App = () => { In Flutter, you assign a local variable or function marked `final` with the property received in the parameterized constructor. - + ```dart /// Flutter class CustomCard extends StatelessWidget { @@ -1586,7 +1586,7 @@ To add the `shared_preferences` package as a dependency, run `flutter pub add`: $ flutter pub add shared_preferences ``` - + ```dart import 'package:shared_preferences/shared_preferences.dart'; ``` @@ -1600,7 +1600,7 @@ by the `SharedPreferences` class. For each setter there is a corresponding getter method, for example, `getInt`, `getBool`, and `getString`. - + ```dart Future updateCounter() async { final prefs = await SharedPreferences.getInstance(); @@ -1674,7 +1674,7 @@ applications. For more information, see [Limitations]: /ui/navigation#limitations [navigation overview]: /ui/navigation - + ```dart class NavigationApp extends StatelessWidget { // This widget is the root of your application. @@ -1700,7 +1700,7 @@ method is used to specify the `BuildContext` The name of the route is passed to the `pushNamed` function to navigate to the specified route. - + ```dart Navigator.of(context).pushNamed('/a'); ``` @@ -1713,7 +1713,7 @@ the [`MaterialPageRoute`][] widget is a modal route that replaces the entire screen with a platform-adaptive transition. It takes a [`WidgetBuilder`][] as a required parameter. - + ```dart Navigator.push( context, @@ -1763,7 +1763,7 @@ tab navigation: : Displays the widget that corresponds to the currently selected tab. - + ```dart class _MyAppState extends State with SingleTickerProviderStateMixin { late TabController controller = TabController(length: 2, vsync: this); @@ -1808,7 +1808,7 @@ is passed as the `body` parameter of the `Scaffold` widget. All screens corresponding to the `TabBar` widget's tabs are children to the `TabBarView` widget along with the same `TabController`. - + ```dart class _NavigationHomePageState extends State with SingleTickerProviderStateMixin { @@ -1873,7 +1873,7 @@ or a list of items to display as the child to the `Drawer` widget. In the following example, the [`ListTile`][] widget provides the navigation on tap. - + ```dart @override Widget build(BuildContext context) { @@ -1895,7 +1895,7 @@ displays an appropriate IconButton to show the `Drawer` when a Drawer is available in the `Scaffold`. The `Scaffold` automatically handles the edge-swipe gesture to show the `Drawer`. - + ```dart @override Widget build(BuildContext context) { @@ -1984,7 +1984,7 @@ use a button or a touchable widget that has an `onPress: field`. Or, add gesture detection to any widget by wrapping it in a [`GestureDetector`][]. - + ```dart @override Widget build(BuildContext context) { @@ -2060,7 +2060,7 @@ $ flutter pub add http Flutter uses the [`dart:io`][] core HTTP support client. To create an HTTP Client, import `dart:io`. - + ```dart import 'dart:io'; ``` @@ -2068,7 +2068,7 @@ import 'dart:io'; The client supports the following HTTP operations: GET, POST, PUT, and DELETE. - + ```dart final url = Uri.parse('https://httpbin.org/ip'); final httpClient = HttpClient(); @@ -2119,7 +2119,7 @@ learn what the user typed into the field. You can access the text in `TextField` by the `text` property of the controller. - + ```dart final TextEditingController _controller = TextEditingController(); @@ -2172,7 +2172,7 @@ with a context whose ancestor is the `Form`, or pass a `GlobalKey` to the `Form` constructor and call `GlobalKey.currentState()`. - + ```dart @override Widget build(BuildContext context) { @@ -2208,7 +2208,7 @@ Widget build(BuildContext context) { The following example shows how `Form.save()` and `formKey` (which is a `GlobalKey`), are used to save the form on submit. - + ```dart void _submit() { final form = formKey.currentState; @@ -2250,7 +2250,7 @@ if (Platform.OS === 'ios') { In Flutter, use the following implementation: - + ```dart final platform = Theme.of(context).platform; if (platform == TargetPlatform.iOS) { @@ -2485,7 +2485,7 @@ third-party libraries are used for swipe animation. In Flutter, to add a swipe animation, use the [`Dismissible`][] widget and nest the child widgets. - + ```dart return Dismissible( key: Key(widget.key.toString()), diff --git a/src/content/get-started/flutter-for/swiftui-devs.md b/src/content/get-started/flutter-for/swiftui-devs.md index 6fe791582c..acd72b7a67 100644 --- a/src/content/get-started/flutter-for/swiftui-devs.md +++ b/src/content/get-started/flutter-for/swiftui-devs.md @@ -314,7 +314,7 @@ use the `CupertinoButton` class: - + ```dart CupertinoButton( onPressed: () { @@ -462,7 +462,7 @@ You set the number of items to display then build a widget for each item. - + ```dart class Person { String name; @@ -546,7 +546,7 @@ The following example uses the `.builder()` initializer: - + ```dart const widgets = [ Text('Row 1'), @@ -617,7 +617,7 @@ of the `Person` class to create the custom `PersonView` widget. - + ```dart SingleChildScrollView( child: Column( @@ -694,7 +694,7 @@ The following example shows a part of a counter app: - + ```dart class MyHomePage extends StatefulWidget { const MyHomePage({super.key}); @@ -770,7 +770,7 @@ This animates the `Transform.rotate` widget. - + ```dart AnimatedRotation( duration: const Duration(seconds: 1), @@ -823,7 +823,7 @@ with two classes that help you draw: - + ```dart CustomPaint( painter: SignaturePainter(_points), @@ -844,7 +844,7 @@ with two classes that help you draw: - + ```dart class SignaturePainter extends CustomPainter { SignaturePainter(this.points); @@ -921,7 +921,7 @@ call your navigation routes using their names. - + ```dart // Defines the route name as a constant // so that it's reusable. @@ -961,7 +961,7 @@ call your navigation routes using their names. - + ```dart ListView.builder( itemCount: mockPersons.length, @@ -1005,7 +1005,7 @@ call your navigation routes using their names. - + ```dart class DetailsPage extends StatelessWidget { const DetailsPage({super.key}); @@ -1055,7 +1055,7 @@ In **Flutter**, use the `pop()` function of the `Navigator` class: - + ```dart TextButton( onPressed: () { @@ -1096,7 +1096,7 @@ In **Flutter**, use the [`url_launcher`][] plugin. - + ```dart CupertinoButton( onPressed: () async { @@ -1137,7 +1137,7 @@ of the `App` class: - + ```dart CupertinoApp( theme: CupertinoThemeData( @@ -1173,7 +1173,7 @@ of the `style` parameter of the `Text` widget. - + ```dart Text( 'Hello, world!', @@ -1219,7 +1219,7 @@ In the following example: - + ```dart child: CupertinoButton( color: CupertinoColors.systemYellow, @@ -1282,7 +1282,7 @@ following example: - + ```dart Text( 'Cupertino', diff --git a/src/content/get-started/flutter-for/uikit-devs.md b/src/content/get-started/flutter-for/uikit-devs.md index 82362e18de..b45ad243b5 100644 --- a/src/content/get-started/flutter-for/uikit-devs.md +++ b/src/content/get-started/flutter-for/uikit-devs.md @@ -136,7 +136,7 @@ A common`StatelessWidget` is the `Text` widget. If you look at the implementation of the `Text` widget, you'll find it subclasses `StatelessWidget`. - + ```dart Text( 'I like Flutter!', @@ -156,7 +156,7 @@ update it when the user clicks the button. For example: - + ```dart class SampleApp extends StatelessWidget { @@ -214,7 +214,7 @@ In Flutter, declare your layout in code by composing a widget tree. The following example shows how to display a simple widget with padding: - + ```dart @override Widget build(BuildContext context) { @@ -251,7 +251,7 @@ with a boolean flag. The following example shows how to toggle between two widgets when the user clicks the `FloatingActionButton`: - + ```dart class SampleApp extends StatelessWidget { // This widget is the root of your application. @@ -515,7 +515,7 @@ that takes a label in the constructor? Create a CustomButton that composes a `ElevatedButton` with a label, rather than by extending `ElevatedButton`: - + ```dart class CustomButton extends StatelessWidget { const CustomButton(this.label, {super.key}); @@ -535,7 +535,7 @@ class CustomButton extends StatelessWidget { Then use `CustomButton`, just as you'd use any other Flutter widget: - + ```dart @override Widget build(BuildContext context) { @@ -572,7 +572,7 @@ To navigate between pages, you have a couple options: The following example builds a `Map.` - + ```dart void main() { runApp( @@ -590,7 +590,7 @@ void main() { Navigate to a route by `push`ing its name to the `Navigator`. - + ```dart Navigator.of(context).pushNamed('/b'); ``` @@ -602,7 +602,7 @@ This is done by `await`ing on the `Future` returned by `push()`. For example, to start a `location` route that lets the user select their location, you might do the following: - + ```dart Object? coordinates = await Navigator.of(context).pushNamed('/location'); ``` @@ -610,7 +610,7 @@ Object? coordinates = await Navigator.of(context).pushNamed('/location'); And then, inside your `location` route, once the user has selected their location, `pop()` the stack with the result: - + ```dart Navigator.of(context).pop({'lat': 43.821757, 'long': -79.226392}); ``` @@ -646,7 +646,7 @@ Flutter doesn't currently have a dedicated system for handling strings. At the moment, the best practice is to declare your copy text in a class as static fields and access them from there. For example: - + ```dart class Strings { static const String welcomeMessage = 'Welcome To Flutter'; @@ -655,7 +655,7 @@ class Strings { You can access your strings as such: - + ```dart Text(Strings.welcomeMessage); ``` @@ -1123,7 +1123,7 @@ In Flutter the easiest way to do this is using the `ListView` widget. This acts as both a `ScrollView` and an iOS `TableView`, as you can lay out widgets in a vertical format. - + ```dart @override Widget build(BuildContext context) { @@ -1157,7 +1157,7 @@ In Flutter, there are two ways of adding touch listeners: and handle the event in the function. For example, the `ElevatedButton` widget has an `onPressed` parameter: - + ```dart @override Widget build(BuildContext context) { @@ -1174,7 +1174,7 @@ In Flutter, there are two ways of adding touch listeners: wrap the widget in a GestureDetector and pass a function to the `onTap` parameter. - + ```dart class SampleTapApp extends StatelessWidget { const SampleTapApp({super.key}); @@ -1265,7 +1265,7 @@ to a wide range of gestures such as: The following example shows a `GestureDetector` that rotates the Flutter logo on a double tap: - + ```dart class SampleApp extends StatefulWidget { const SampleApp({super.key}); @@ -1355,7 +1355,7 @@ pass a `ThemeData` object to the `MaterialApp` widget. For example, in the code below, the color scheme from seed is set to deepPurple and divider color is grey. - + ```dart import 'package:flutter/material.dart'; @@ -1394,7 +1394,7 @@ fonts: Then assign the font to your `Text` widget: - + ```dart @override Widget build(BuildContext context) { @@ -1495,14 +1495,14 @@ assets: You can now access your images using `AssetImage`: - + ```dart AssetImage('images/a_dot_burr.jpeg') ``` or directly in an `Image` widget: - + ```dart @override Widget build(BuildContext context) { @@ -1531,7 +1531,7 @@ by specialized widgets. If you have a `TextField` or a `TextFormField`, you can supply a [`TextEditingController`][] to retrieve user input: - + ```dart class _MyFormState extends State { // Create a text controller and use it to retrieve the current value. @@ -1586,7 +1586,7 @@ In Flutter, you can easily show a "hint" or a placeholder text for your field by adding an `InputDecoration` object to the decoration constructor parameter for the `Text` widget: - + ```dart Center( child: TextField( @@ -1700,7 +1700,7 @@ For example, you can run network code without causing the UI to hang by using `async`/`await` and letting Dart do the heavy lifting: - + ```dart Future loadData() async { final Uri dataURL = Uri.parse('https://jsonplaceholder.typicode.com/posts'); @@ -1808,7 +1808,7 @@ work that keeps the CPU busy, you want to move it to an For I/O-bound work, declare the function as an `async` function, and `await` on long-running tasks inside the function: - + ```dart Future loadData() async { final Uri dataURL = Uri.parse('https://jsonplaceholder.typicode.com/posts'); @@ -1838,7 +1838,7 @@ Isolates are true to their name, and cannot share memory The following example shows, in a simple isolate, how to share data back to the main thread to update the UI. - + ```dart Future loadData() async { final ReceivePort receivePort = ReceivePort(); @@ -2035,7 +2035,7 @@ flutter pub add http To make a network call, call `await` on the `async` function `http.get()`: - + ```dart Future loadData() async { final Uri dataURL = Uri.parse('https://jsonplaceholder.typicode.com/posts'); diff --git a/src/content/get-started/flutter-for/web-devs.md b/src/content/get-started/flutter-for/web-devs.md index 886ebfb519..f2a26a7548 100644 --- a/src/content/get-started/flutter-for/web-devs.md +++ b/src/content/get-started/flutter-for/web-devs.md @@ -37,7 +37,7 @@ The examples assume: is defined by the `bold24Roboto` variable as follows, to keep the syntax simple: - + ```dart TextStyle bold24Roboto = const TextStyle( color: Colors.white, diff --git a/src/content/get-started/flutter-for/xamarin-forms-devs.md b/src/content/get-started/flutter-for/xamarin-forms-devs.md index 32767b8b75..e425acb451 100644 --- a/src/content/get-started/flutter-for/xamarin-forms-devs.md +++ b/src/content/get-started/flutter-for/xamarin-forms-devs.md @@ -36,7 +36,7 @@ LoadApplication(new App()); In Flutter, the default main entry point is `main` where you load your Flutter app. - + ```dart void main() { runApp(const MyApp()); @@ -67,7 +67,7 @@ public class App : Application In Flutter, "everything is a widget", even the application itself. The following example shows `MyApp`, a simple application `Widget`. - + ```dart class MyApp extends StatelessWidget { /// This widget is the root of your application. @@ -107,7 +107,7 @@ Examples of a stateless widget are titles, icons, or images. The following example uses `MaterialApp`, which holds its root page in the `home` property. - + ```dart class MyApp extends StatelessWidget { /// This widget is the root of your application. @@ -131,7 +131,7 @@ The first part, which is itself immutable, creates a `State` object that holds the state of the object. The `State` object persists over the life of the widget. - + ```dart class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title}); @@ -151,7 +151,7 @@ Make sure to call `setState()` only when necessary, and only on the part of the widget tree that has changed, or it can result in poor UI performance. - + ```dart class _MyHomePageState extends State { int _counter = 0; @@ -280,7 +280,7 @@ A common `StatelessWidget` is the `Text` widget. If you look at the implementation of the `Text` widget you'll find it subclasses `StatelessWidget`. - + ```dart const Text( 'I like Flutter!', @@ -360,7 +360,7 @@ In Flutter, you write your layouts with a widget tree in code. The following example shows how to display a simple widget with padding: - + ```dart @override Widget build(BuildContext context) { @@ -395,7 +395,7 @@ and control that child's creation with a boolean flag. The following example shows how to toggle between two widgets when the user clicks the `FloatingActionButton`: - + ```dart class SampleApp extends StatelessWidget { /// This widget is the root of your application. @@ -677,7 +677,7 @@ that takes a label in the constructor? Create a CustomButton that composes a `ElevatedButton` with a label, rather than by extending `ElevatedButton`: - + ```dart class CustomButton extends StatelessWidget { const CustomButton(this.label, {super.key}); @@ -696,7 +696,7 @@ class CustomButton extends StatelessWidget { Then use `CustomButton`, just as you'd use any other Flutter widget: - + ```dart @override Widget build(BuildContext context) { @@ -732,7 +732,7 @@ To navigate between pages, you have a couple options: The following example builds a `Map`. - + ```dart void main() { runApp( @@ -750,7 +750,7 @@ void main() { Navigate to a route by pushing its name to the `Navigator`. - + ```dart Navigator.of(context).pushNamed('/b'); ``` @@ -775,7 +775,7 @@ Object? coordinates = await Navigator.of(context).pushNamed('/location'); And then, inside your 'location' route, once the user has selected their location, pop the stack with the result: - + ```dart Navigator.of(context).pop({'lat': 43.821757, 'long': -79.226392}); ``` @@ -814,7 +814,7 @@ for any Xamarin.Forms developer. For example, you can run network code without causing the UI to hang by using `async`/`await` and letting Dart do the heavy lifting: - + ```dart Future loadData() async { final Uri dataURL = Uri.parse( @@ -928,7 +928,7 @@ thread via `Task.Run()` in Xamarin.Forms. For I/O-bound work, declare the function as an `async` function, and `await` on long-running tasks inside the function: - + ```dart Future loadData() async { final Uri dataURL = Uri.parse( @@ -958,7 +958,7 @@ or update your UI by calling `setState()`. The following example shows, in a simple isolate, how to share data back to the main thread to update the UI. - + ```dart Future loadData() async { final ReceivePort receivePort = ReceivePort(); @@ -1147,7 +1147,7 @@ dependencies: To make a network request, call `await` on the `async` function `http.get()`: - + ```dart Future loadData() async { final Uri dataURL = Uri.parse( @@ -1323,7 +1323,7 @@ assets: You can directly access your images in an `Image.asset` widget: - + ```dart @override Widget build(BuildContext context) { @@ -1333,7 +1333,7 @@ Widget build(BuildContext context) { or using `AssetImage`: - + ```dart @override Widget build(BuildContext context) { @@ -1352,7 +1352,7 @@ Flutter doesn't currently have a dedicated system for handling strings. At the moment, the best practice is to declare your copy text in a class as static fields and access them from there. For example: - + ```dart class Strings { static const String welcomeMessage = 'Welcome To Flutter'; @@ -1361,7 +1361,7 @@ class Strings { You can access your strings as such: - + ```dart Text(Strings.welcomeMessage); ``` @@ -1383,7 +1383,7 @@ To use the `flutter_localizations` package, specify the `localizationsDelegates` and `supportedLocales` on the app widget: - + ```dart import 'package:flutter_localizations/flutter_localizations.dart'; @@ -1509,7 +1509,7 @@ The children are the same and this feature can be exploited to develop rich layouts that can change overtime with the same children. - + ```dart @override Widget build(BuildContext context) { @@ -1525,7 +1525,7 @@ Widget build(BuildContext context) { } ``` - + ```dart @override Widget build(BuildContext context) { @@ -1547,7 +1547,7 @@ This is much more powerful than what you are used to in Xamarin.Forms. A `GridView` provides automatic scrolling when the content exceeds its viewable space. - + ```dart @override Widget build(BuildContext context) { @@ -1577,7 +1577,7 @@ In Flutter, you accomplish this with the `Stack` widget. This sample creates two icons that overlap each other. - + ```dart @override Widget build(BuildContext context) { @@ -1609,7 +1609,7 @@ and if the content is larger than the device screen, it scrolls. In Flutter, the closest match is the `SingleChildScrollView` widget. You simply fill the Widget with the content that you want to be scrollable. - + ```dart @override Widget build(BuildContext context) { @@ -1625,7 +1625,7 @@ This might seem like overkill, but in Flutter this is far more optimized and less intensive than a Xamarin.Forms `ListView`, which is backing on to platform specific controls. - + ```dart @override Widget build(BuildContext context) { @@ -1662,7 +1662,7 @@ In Flutter there are two very similar ways: handle it in the function. For example, the ElevatedButton has an `onPressed` parameter: - + ```dart @override Widget build(BuildContext context) { @@ -1679,7 +1679,7 @@ In Flutter there are two very similar ways: widget in a `GestureDetector` and pass a function to the `onTap` parameter. - + ```dart class SampleApp extends StatelessWidget { const SampleApp({super.key}); @@ -1772,7 +1772,7 @@ you can listen to a wide range of Gestures such as: The following example shows a `GestureDetector` that rotates the Flutter logo on a double tap: - + ```dart class RotatingFlutterDetector extends StatefulWidget { const RotatingFlutterDetector({super.key}); @@ -2148,7 +2148,7 @@ fonts: Then assign the font to your `Text` widget: - + ```dart @override Widget build(BuildContext context) { @@ -2270,7 +2270,7 @@ In Flutter, you can easily show a "hint" or a placeholder text for your input by adding an `InputDecoration` object to the `decoration` constructor parameter for the text widget. - + ```dart TextField( decoration: InputDecoration(hintText: 'This is a hint'), @@ -2476,7 +2476,7 @@ pass a `ThemeData` object to the `MaterialApp` widget. For example, in the following code, the color scheme from seed is set to deepPurple and text selection color is red. - + ```dart class SampleApp extends StatelessWidget { /// This widget is the root of your application. From cbb0d07fe4376ae1a10dfe25a8c8768c96758ef2 Mon Sep 17 00:00:00 2001 From: Morgan Date: Mon, 6 May 2024 02:38:05 -0700 Subject: [PATCH 045/109] Fix italic in navigation & routing page (#10512) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ Fixes typo with italic on the navigation & routing page that was incorrect. _Issues fixed by this PR (if any):_ ## 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. --- src/content/ui/navigation/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/ui/navigation/index.md b/src/content/ui/navigation/index.md index 83038c1820..25590a8bec 100644 --- a/src/content/ui/navigation/index.md +++ b/src/content/ui/navigation/index.md @@ -128,8 +128,8 @@ are not. When a _page-backed_ `Route` is removed from the `Navigator`, all of the _pageless_ routes after it are also removed. For example, if a deep link -navigates by removing a _page-backed_ route from the Navigator, all _pageless -_routes after (up until the next _page-backed_ route) are removed too. +navigates by removing a _page-backed_ route from the Navigator, all _pageless_ +routes after (up until the next _page-backed_ route) are removed too. :::note You can't prevent navigation from page-backed screens using `WillPopScope`. From e68f085737d5c35e221a7c23262199449b9257a3 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Mon, 6 May 2024 05:36:22 -0500 Subject: [PATCH 046/109] Emphasize current OS card on initial install page (#10511) Uses a darker border color and adds a subtitle that indicates the card is for the "Current device". Example of the macOS card being emphasized with
darker border and a subtitle that says 'Current Device' Resolves https://github.com/flutter/website/issues/4446 --- src/_sass/vendor/_bootstrap.scss | 4 ++++ src/content/assets/js/page/install-current.js | 20 +++++++++++++++++++ .../get-started/install/chromeos/index.md | 2 +- src/content/get-started/install/index.md | 1 + .../get-started/install/linux/index.md | 2 +- .../get-started/install/macos/index.md | 6 ++---- .../get-started/install/windows/index.md | 2 +- 7 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 src/content/assets/js/page/install-current.js diff --git a/src/_sass/vendor/_bootstrap.scss b/src/_sass/vendor/_bootstrap.scss index 3aef83cb1d..3cf68f4d26 100644 --- a/src/_sass/vendor/_bootstrap.scss +++ b/src/_sass/vendor/_bootstrap.scss @@ -154,6 +154,10 @@ a.card { font-size: bootstrap.$font-size-sm; } + &.card-highlight { + border: 1px solid rgba(0, 0, 0, 0.5); + } + &:hover { $border-height: 0.25rem; diff --git a/src/content/assets/js/page/install-current.js b/src/content/assets/js/page/install-current.js new file mode 100644 index 0000000000..0e45fee876 --- /dev/null +++ b/src/content/assets/js/page/install-current.js @@ -0,0 +1,20 @@ +// Depends on main.js being loaded first. +// Highlights the card for the current OS on `/get-started/install/`. +document.addEventListener("DOMContentLoaded", function(_) { + if (!getOS) return; + + const currentOS = getOS(); + if (!currentOS) return; + + const osButton = document.getElementById(`install-${currentOS}`); + if (!osButton) return; + + osButton.classList.add('card-highlight'); + + const header = osButton.querySelector('.card-title'); + if (!header) return; + const currentSubtitle = document.createElement('div'); + currentSubtitle.textContent = 'Current device'; + currentSubtitle.classList.add('card-subtitle'); + header.appendChild(currentSubtitle); +}); diff --git a/src/content/get-started/install/chromeos/index.md b/src/content/get-started/install/chromeos/index.md index 27e69189ec..dadc6ec7e5 100644 --- a/src/content/get-started/install/chromeos/index.md +++ b/src/content/get-started/install/chromeos/index.md @@ -28,7 +28,7 @@ js: [{url: '/assets/js/temp/chromeos-install-redirector.js'}] {{target}} {% if icon == 'android' -%}
    Recommended
    - {% endif %} + {% endif -%}
    diff --git a/src/content/get-started/install/index.md b/src/content/get-started/install/index.md index d870dbb6fe..3153f625e0 100644 --- a/src/content/get-started/install/index.md +++ b/src/content/get-started/install/index.md @@ -3,6 +3,7 @@ title: Choose your development platform to get started short-title: Install description: Install Flutter and get started. Downloads available for Windows, macOS, Linux, and ChromeOS operating systems. os-list: [Windows, macOS, Linux, ChromeOS] +js: [{url: '/assets/js/page/install-current.js'}] ---
    diff --git a/src/content/get-started/install/linux/index.md b/src/content/get-started/install/linux/index.md index 16d60500bb..1ffb087e5b 100644 --- a/src/content/get-started/install/linux/index.md +++ b/src/content/get-started/install/linux/index.md @@ -30,7 +30,7 @@ js: [{url: '/assets/js/temp/linux-install-redirector.js'}] {{target}} {% if icon == 'android' -%}
    Recommended
    - {% endif %} + {% endif -%}
    diff --git a/src/content/get-started/install/macos/index.md b/src/content/get-started/install/macos/index.md index 894437cfd4..121c0ed9a0 100644 --- a/src/content/get-started/install/macos/index.md +++ b/src/content/get-started/install/macos/index.md @@ -37,12 +37,10 @@ js: [{url: '/assets/js/temp/macos-install-redirector.js'}] web {% endcase -%} - - {{ target }} - + {{ target }} {% if icon == 'ios' -%}
    Recommended
    - {% endif %} + {% endif -%}
    diff --git a/src/content/get-started/install/windows/index.md b/src/content/get-started/install/windows/index.md index a986c972b8..210718bbaf 100644 --- a/src/content/get-started/install/windows/index.md +++ b/src/content/get-started/install/windows/index.md @@ -37,7 +37,7 @@ js: [{url: '/assets/js/temp/windows-install-redirector.js'}] {{target}} {% if icon == 'android' -%}
    Recommended
    - {% endif %} + {% endif -%}
    From 430fc63fdeaed246cd5df3f323b7b13cbeb22b31 Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Mon, 6 May 2024 11:23:36 -0700 Subject: [PATCH 047/109] Add a migration guide for Android plugins with Impeller. (#10494) Closes https://github.com/flutter/flutter/issues/145931. First pass, feedback welcome. --- .../android-surface-plugins.md | 99 +++++++++++++++++++ src/content/release/breaking-changes/index.md | 2 + 2 files changed, 101 insertions(+) create mode 100644 src/content/release/breaking-changes/android-surface-plugins.md diff --git a/src/content/release/breaking-changes/android-surface-plugins.md b/src/content/release/breaking-changes/android-surface-plugins.md new file mode 100644 index 0000000000..81dad1a42a --- /dev/null +++ b/src/content/release/breaking-changes/android-surface-plugins.md @@ -0,0 +1,99 @@ +--- +title: New APIs for Android plugins that render to a Surface +description: > + Adds a new API, `SurfaceProducer`, to the Android embedding API, which + opaquely handles the creation and management of a `Surface` for plugins. For + Impeller, use of this API is required. +--- + +## Summary + +The Android embedder for Flutter introduces a new API, [`SurfaceProducer`][], +which allows plugins to render to a `Surface` without needing to manage what +the backing implementation is. Plugins using the older +[`createSurfaceTexture`][] API will not work with [Impeller][]. + +## Background + +An Android [`SurfaceTexture`][] is a backing implementation for a [`Surface`][] +that uses an [OpenGLES][] texture as the backing store. + +For example, a plugin might display frames from a _camera_ plugin: + +![Flowchart](https://camo.githubusercontent.com/cdb52c5d371b4f1d5573b650a0eddb0871e5e8be1012d290e008f41bc71b2580/68747470733a2f2f736f757263652e616e64726f69642e636f6d2f7374617469632f646f63732f636f72652f67726170686963732f696d616765732f636f6e74696e756f75735f636170747572655f61637469766974792e706e67) + +In newer versions of the Android API (>= 29), Android introduced a +backend-agnostic [`HardwareBuffer`][], which coincides with the minimum version +that Flutter will attempt to use the [Vulkan][] renderer. In order to support +this, the Android embedding API needed to be updated to support a more generic +`Surface` creation API that doesn't rely on OpenGLES. + +## Migration guide + +If you are using the older [`createSurfaceTexture`][] API, you should migrate to +the new [`createSurfaceProducer`][] API. The new API is more flexible and allows +the Flutter engine to opaquely pick the best implementation for the current +platform and API level. + +1. Instead of creating a `SurfaceTextureEntry`, create a `SurfaceProducer`: + + ```diff + - TextureRegistry.SurfaceTextureEntry entry = textureRegistry.createSurfaceTexture(); + + TextureRegistry.SurfaceProducer producer = textureRegistry.createSurfaceProducer(); + ``` + +1. Instead of creating a `new Surface(...)`, call [`getSurface()`][] on the + `SurfaceProducer`: + + ```diff + - Surface surface = new Surface(entry.surfaceTexture()); + + Surface surface = producer.getSurface(); + ``` + +Otherwise, the API is the same as before. + +## Timeline + +Landed in version: 3.22.0-12.0.pre-56 + +:::note +This feature landed in the _previous_ version of the SDK but was non-functional; +plugins that migrate to this API should set `3.22` as a minimum version constraint. +::: + +In stable release: TBD + +## References + +API documentation: + +- [`SurfaceProducer`][] +- [`createSurfaceProducer`][] +- [`createSurfaceTexture`][] + +Relevant issues: + +- [Issue 139702][] +- [Issue 145930][] + +Relevant PRs: + +- [PR 51061][], where we test the new API in the engine tests. +- [PR 6456][], where we migrate the `video_player` plugin to use the new API. +- [PR 6461][], where we migrate the `camera_android` plugin to use the new API. + +[Impeller]: /perf/impeller +[OpenGLES]: https://www.khronos.org/opengles/ +[Vulkan]: https://source.android.com/docs/core/graphics/arch-vulkan +[`HardwareBuffer`]: https://developer.android.com/reference/android/hardware/HardwareBuffer +[`Surface`]: https://developer.android.com/reference/android/view/Surface +[`SurfaceProducer`]: {{site.api}}/javadoc/io/flutter/view/TextureRegistry.SurfaceProducer.html +[`SurfaceTexture`]: https://source.android.com/docs/core/graphics/arch-st +[`createSurfaceProducer`]: {{site.api}}/javadoc/io/flutter/view/TextureRegistry.html#createSurfaceProducer() +[`createSurfaceTexture`]: {{site.api}}/javadoc/io/flutter/view/TextureRegistry.html#createSurfaceTexture() +[`getSurface()`]: {{site.api}}/javadoc/io/flutter/view/TextureRegistry.SurfaceProducer.html#getSurface() +[Issue 139702]: {{site.repo.flutter}}/issues/139702 +[Issue 145930]: {{site.repo.flutter}}/issues/145930 +[PR 51061]: {{site.repo.engine}}/pull/51061 +[PR 6456]: {{site.repo.packages}}/pull/6456 +[PR 6461]: {{site.repo.packages}}/pull/6461 diff --git a/src/content/release/breaking-changes/index.md b/src/content/release/breaking-changes/index.md index f334f9518e..99e3da2b8f 100644 --- a/src/content/release/breaking-changes/index.md +++ b/src/content/release/breaking-changes/index.md @@ -43,6 +43,7 @@ release, and listed in alphabetical order: * [Deprecate `ButtonBar` in favor of `OverflowBar`][] * [Deprecated API removed after v3.19][] * [Dropping support for Android KitKat][] +* [New APIs for Android plugins that render to a `Surface`][] [Generic types in `PopScope`]: /release/breaking-changes/popscope-with-result [Rename `MaterialState` to `WidgetState`]: /release/breaking-changes/material-state @@ -54,6 +55,7 @@ release, and listed in alphabetical order: [Deprecate `ButtonBar` in favor of `OverflowBar`]: /release/breaking-changes/deprecate-buttonbar [Deprecated API removed after v3.19]: /release/breaking-changes/3-19-deprecations [Dropping support for Android KitKat]: /release/breaking-changes/android-kitkat-deprecation +[New APIs for Android plugins that render to a `Surface`]: /release/breaking-changes/android-surface-plugins ### Released in Flutter 3.19 From c6468731cdd7d521a28792dbe63bb6d7e158cb74 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Mon, 6 May 2024 16:12:01 -0700 Subject: [PATCH 048/109] Add mediation to the Ads sidenav and Ads landing page (#10518) --- src/_data/sidenav.yml | 2 ++ src/content/resources/ads-overview.md | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/_data/sidenav.yml b/src/_data/sidenav.yml index dd5e9c5bc2..c8f342d8a8 100644 --- a/src/_data/sidenav.yml +++ b/src/_data/sidenav.yml @@ -104,6 +104,8 @@ permalink: https://codelabs.developers.google.com/codelabs/admob-ads-in-flutter - title: Add an AdMob banner and native inline ads permalink: https://codelabs.developers.google.com/codelabs/admob-inline-ads-in-flutter + - title: Google AdMob mediation + permalink: https://developers.google.com/admob/flutter/mediation - title: In-app purchases children: - title: In-app purchases overview diff --git a/src/content/resources/ads-overview.md b/src/content/resources/ads-overview.md index b81710cf66..65f1d9facc 100644 --- a/src/content/resources/ads-overview.md +++ b/src/content/resources/ads-overview.md @@ -21,8 +21,20 @@ The the following resources can help get you started: * [Add ads to your mobile Flutter app or game][] (cookbook recipe) * [Adding AdMob ads to a Flutter app][] (codelab) * [Adding an AdMob banner and native inline ads to a Flutter app][] (codelab) +* [How to support Google Mobile Ads (AdMob) mediation][mediation] (guide) +The following packages support AdMob mediation (in alphabetical order): + +* AppLovin ([gma_mediation_applovin][]) +* Meta ([gma_mediation_meta][]) +* Pangle ([gma_mediation_pangle][]) [Add ads to your mobile Flutter app or game]: /cookbook/plugins/google-mobile-ads [Adding AdMob ads to a Flutter app]: {{site.codelabs}}/codelabs/admob-ads-in-flutter#0 [Adding an AdMob banner and native inline ads to a Flutter app]: {{site.codelabs}}/codelabs/admob-inline-ads-in-flutter#0 +[gma_mediation_applovin]: {{site.pub-pkg}}/gma_mediation_applovin +[gma_mediation_meta]: {{site.pub-pkg}}/gma_mediation_meta +[gma_mediation_pangle]: {{site.pub-pkg}}/gma_mediation_pangle +[mediation]: https://developers.google.com/admob/flutter/mediation + + From 9a25d1aac5cd8cd59831a4bf2ac2927c6d49bdba Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Mon, 6 May 2024 16:31:20 -0700 Subject: [PATCH 049/109] Adding links to the new wasm article on Medium (#10516) --------- Co-authored-by: Parker Lougheed --- src/content/perf/web-performance.md | 8 +++++ src/content/platform-integration/web/wasm.md | 35 ++++++++++++------- .../platform-integration/web/web-images.md | 9 +++++ 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/src/content/perf/web-performance.md b/src/content/perf/web-performance.md index 1901c0da6c..60ab04e28c 100644 --- a/src/content/perf/web-performance.md +++ b/src/content/perf/web-performance.md @@ -12,6 +12,14 @@ draw scenes, and track other activity such as garbage collections. These events are exposed in the [Chrome DevTools performance panel][] for debugging. +:::note +For information on how to optimize web loading speed, +check out the (free) article on Medium, +[Best practices for optimizing Flutter web loading speed][article]. + +[article]: {{site.flutter-medium}}/best-practices-for-optimizing-flutter-web-loading-speed-7cc0df14ce5c +::: + You can also emit your own timeline events using the `dart:developer` [Timeline][] and [TimelineTask][] APIs for further performance analysis. diff --git a/src/content/platform-integration/web/wasm.md b/src/content/platform-integration/web/wasm.md index e73e7f9415..80ef5ab3a6 100644 --- a/src/content/platform-integration/web/wasm.md +++ b/src/content/platform-integration/web/wasm.md @@ -9,7 +9,8 @@ last-update: March 13, 2024 **_Last updated {{last-update}}_** The Flutter and Dart teams are excited to add -[WebAssembly](https://webassembly.org/) as a compilation target when building +[WebAssembly](https://webassembly.org/) +as a compilation target when building applications for the web. Development of WebAssembly support for Dart and Flutter remains ongoing, @@ -33,6 +34,14 @@ Revisit this page for the latest updates. [`package:web`]: {{site.pub-pkg}}/web [`dart:js_interop`]: {{site.dart.api}}/{{site.dart.sdk.channel}}/dart-js_interop +:::note +For information on how to optimize web loading speed, +check out the (free) article on Medium, +[Best practices for optimizing Flutter web loading speed][article]. + +[article]: {{site.flutter-medium}}/best-practices-for-optimizing-flutter-web-loading-speed-7cc0df14ce5c +::: + ## Background To run a Flutter app that has been compiled to Wasm, @@ -43,9 +52,9 @@ like Dart execute code in an efficient manner. [Chromium and V8][] released stable support for WasmGC in Chromium 119. Note that Chrome on iOS uses WebKit, which doesn't yet [support WasmGC][]. Firefox announced stable support for WasmGC in Firefox 120, -but currently does not work due to a [known limitation](#known-limitations). +but currently doesn't work due to a [known limitation](#known-limitations). -[WasmGC]: https://github.com/WebAssembly/gc/tree/main/proposals/gc +[WasmGC]: {{site.github}}/WebAssembly/gc/tree/main/proposals/gc [Chromium and V8]: https://chromestatus.com/feature/6062715726462976 [support WasmGC]: https://bugs.webkit.org/show_bug.cgi?id=247394 [issue]: https://bugzilla.mozilla.org/show_bug.cgi?id=1788206 @@ -55,7 +64,7 @@ but currently does not work due to a [known limitation](#known-limitations). To try a pre-built Flutter web app using Wasm, check out the [Material 3 WasmGC preview demo](https://flutterweb-wasm.web.app/). -To experiment with Wasm in your own apps, follow the steps below. +To experiment with Wasm in your own apps, use the following steps. ### Switch to the Flutter `beta` channel and upgrade @@ -64,12 +73,12 @@ the `beta` channel (preferred) or `main`. To learn more about Flutter build release channels and how to switch to the `beta` channel, check out the -[Flutter wiki](https://github.com/flutter/flutter/wiki/Flutter-build-release-channels). +[Flutter wiki]({{site.github}}/flutter/flutter/wiki/Flutter-build-release-channels). -To then ensure you are running the latest version, +To ensure you are running the latest version, run `flutter upgrade`. -To verify if your Flutter install supports Wasm, +To verify that your Flutter install supports Wasm, run `flutter build web --help`. At the bottom of the output, you should find experimental Wasm options like: @@ -82,9 +91,10 @@ Experimental options (defaults to on) ``` -### Pick a (simple) Flutter web application +### Choose a (simple) Flutter web application -Try the default template [sample app][], or choose any Flutter application +Try the default template [sample app][], +or choose any Flutter application that has been migrated to be [compatible with Wasm](#js-interop-wasm). @@ -132,8 +142,8 @@ package root. ### Serve the output locally with an HTTP server -If you don't have a local HTTP server installed, you can use the -[`dhttpd` package]({{site.pub-pkg}}/dhttpd): +If you don't have a local HTTP server installed, you can use +the [`dhttpd` package]({{site.pub-pkg}}/dhttpd): ```console flutter pub global activate dhttpd @@ -247,7 +257,8 @@ Work on Flutter and Dart Wasm support continues. Once finished, your existing Flutter web apps shouldn't need much work to support Wasm. -If you want to learn more, watch this talk from our team at Wasm I/O 2023: +If you want to learn more, +check out this talk from our team at Wasm I/O 2023: [Flutter, Dart, and WasmGC: A new model for web applications](https://youtu.be/Nkjc9r0WDNo). To follow the latest changes in the Flutter and Dart WebAssembly effort, diff --git a/src/content/platform-integration/web/web-images.md b/src/content/platform-integration/web/web-images.md index 2c8b2f9bb2..ff5954ccc2 100644 --- a/src/content/platform-integration/web/web-images.md +++ b/src/content/platform-integration/web/web-images.md @@ -12,6 +12,15 @@ and offers ways to work around them. [`Image`]: {{site.api}}/flutter/widgets/Image-class.html +:::note +For information on how to optimize web loading speed, +check out the (free) article on Medium, +[Best practices for optimizing Flutter web loading speed][article]. + +[article]: {{site.flutter-medium}}/best-practices-for-optimizing-flutter-web-loading-speed-7cc0df14ce5c +::: + + ## Background This section summarizes the technologies available From 8b25af1513524718a30885a34dc51dcc8bdcce13 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Mon, 6 May 2024 18:35:23 -0500 Subject: [PATCH 050/109] Enable focusing search field with slash (#10515) Closes https://github.com/flutter/website/issues/8996 --- src/_includes/header.html | 2 +- src/content/assets/js/main.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/_includes/header.html b/src/_includes/header.html index 766978f87b..35e5d1593e 100644 --- a/src/_includes/header.html +++ b/src/_includes/header.html @@ -114,7 +114,7 @@ diff --git a/src/content/assets/js/main.js b/src/content/assets/js/main.js index 643f46a8f3..dcd2452cd6 100644 --- a/src/content/assets/js/main.js +++ b/src/content/assets/js/main.js @@ -9,6 +9,8 @@ document.addEventListener("DOMContentLoaded", function(_) { initCookieNotice(); setupCopyButtons(); + setupSearch(); + setupTabs($('#os-archive-tabs'), 'dev.flutter.tab-os', _getOSForArchive); setupTabs($('#editor-setup'), 'io.flutter.tool-id'); setupTabs($('.sample-code-tabs'), 'io.flutter.tool-id'); @@ -123,6 +125,33 @@ function adjustToc() { } } +function setupSearch() { + document.addEventListener('keydown', handleSearchShortcut); +} + +function handleSearchShortcut(event) { + const activeElement = document.activeElement; + if (activeElement instanceof HTMLInputElement || + activeElement instanceof HTMLTextAreaElement || + event.code !== 'Slash' + ) { + return; + } + + // If the page has a search field in the body, focus that. + const bodySearch = document.querySelector('input.gsc-input'); + // Otherwise, focus the search field in the navbar. + const searchElement = bodySearch ? bodySearch : document + .querySelector('input.search-field'); + + // If we successfully found a search field, focus that. + if (searchElement) { + searchElement.focus(); + // Prevent the initial slash from showing up in the search field. + event.preventDefault(); + } +} + function initFixedColumns() { var fixedColumnsSelector = '[data-fixed-column]'; var bannerSelector = '.site-banner'; From 0b438dc4254acfc6e1338768851a75b6db744c6f Mon Sep 17 00:00:00 2001 From: chunhtai <47866232+chunhtai@users.noreply.github.com> Date: Mon, 6 May 2024 17:46:08 -0700 Subject: [PATCH 051/109] Update firebase.json (#10517) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ _Issues fixed by this PR (if any):_ ## Presubmit checklist - [ ] 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. --- firebase.json | 1 + 1 file changed, 1 insertion(+) diff --git a/firebase.json b/firebase.json index 5dd62e1984..af437c42dc 100644 --- a/firebase.json +++ b/firebase.json @@ -401,6 +401,7 @@ { "source": "/go/google-apis", "destination": "/data-and-backend/google-apis?utm_source=go-link&utm_medium=referral&utm_campaign=go-google-apis", "type": 301 }, { "source": "/go/google-testing-v2", "destination": "https://docs.google.com/document/d/1Sg_CsGa3VxMNOXFKvoXEPNneD6OUuXIUsmFEjhluhDw", "type": 301 }, { "source": "/go/go-router-improvements", "destination": "https://docs.google.com/document/d/1_mRXinbL_rb0mUt6DAFZ8kj0kh33ZjEMJuUq4PJgwj8/edit?usp=sharing&resourcekey=0-sYbRzE9opneOFZ5F8J3gGw", "type": 301 }, + { "source": "/go/go-router-redirect", "destination": "https://docs.google.com/document/d/1L940WGrM1YJ8BkJEpNd67fUqoqC6OsTfch4eH86E0xU/edit?usp=sharing&resourcekey=0-9oxsWU1tLpAACTUXyNjpkA", "type": 301 }, { "source": "/go/go-router-support-imperative-routing", "destination": "https://docs.google.com/document/d/1HCgLi7ialw2Eqv-f_2z9ogdOfcmepIIqCsRhF-DT9dM/edit?usp=sharing", "type": 301 }, { "source": "/go/go-router-v2-5-breaking-changes", "destination": "https://docs.google.com/document/d/1MoEM3C6sDvMUuZYCxlYoMI2QJlkONu8i9G53uy5xk-M/edit", "type": 301 }, { "source": "/go/go-router-v2-breaking-changes", "destination": "https://docs.google.com/document/d/12iXx214phOag-XCetaGbSzziXGaHX82V-wMi_-8W04M/edit", "type": 301 }, From 8af702a08985a58f5ef9390b56a3099e0094dd61 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 04:43:13 -0500 Subject: [PATCH 052/109] Bump examples/codelabs from `cad3558` to `92731e0` (#10521) Bumps [examples/codelabs](https://github.com/flutter/codelabs) from `cad3558` to `92731e0`.
    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- examples/codelabs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/codelabs b/examples/codelabs index cad35585dc..92731e07c6 160000 --- a/examples/codelabs +++ b/examples/codelabs @@ -1 +1 @@ -Subproject commit cad35585dcc159a89d6157cd3a56d82969d33a6c +Subproject commit 92731e07c687cbb49aa3da5196a00e0fe112d31a From 18f88bfe695c69786556536746dab0fb11ca7b30 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 May 2024 04:53:45 -0500 Subject: [PATCH 053/109] Bump actions/checkout from 4.1.4 to 4.1.5 (#10522) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.4 to 4.1.5.
    Release notes

    Sourced from actions/checkout's releases.

    v4.1.5

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v4.1.4...v4.1.5

    Commits

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=4.1.4&new-version=4.1.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/scorecards-analysis.yml | 2 +- .github/workflows/test.yml | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b60ee5aca6..6c2ffe5b6f 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -29,7 +29,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 22b864e73f..efe0540fb6 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -22,7 +22,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b with: persist-credentials: false diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cd72a00682..f67b33b5d1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -32,7 +32,7 @@ jobs: branch: stable experimental: false steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b with: submodules: recursive - uses: subosito/flutter-action@44ac965b96f18d999802d4b807e3256d5a3f9fa1 @@ -55,7 +55,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'flutter/website' steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b with: submodules: recursive - uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 @@ -71,7 +71,7 @@ jobs: name: Build site and check links runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b with: submodules: recursive - name: Enable Corepack @@ -101,7 +101,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'flutter/website' steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b with: submodules: recursive - uses: dart-lang/setup-dart@f0ead981b4d9a35b37f30d36160575d60931ec30 From f9f09823f454a9a2e90eada89ec39379f8c27db6 Mon Sep 17 00:00:00 2001 From: Jackson Gardner Date: Tue, 7 May 2024 06:06:18 -0700 Subject: [PATCH 054/109] Update documentation for new flutter bootstrapping APIs. (#10256) This updates the documentation to be in line with the new changes to bootstrapping that are coming in this PR: https://github.com/flutter/flutter/pull/144434 --------- Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> --- .../platform-integration/web/bootstrapping.md | 251 ++++++++++++++++++ .../web/initialization.md | 9 + src/content/platform-integration/web/wasm.md | 8 + src/content/release/archive-whats-new.md | 2 +- 4 files changed, 269 insertions(+), 1 deletion(-) create mode 100644 src/content/platform-integration/web/bootstrapping.md diff --git a/src/content/platform-integration/web/bootstrapping.md b/src/content/platform-integration/web/bootstrapping.md new file mode 100644 index 0000000000..8d1b8e94a4 --- /dev/null +++ b/src/content/platform-integration/web/bootstrapping.md @@ -0,0 +1,251 @@ +--- +title: Flutter web app initialization +description: Customize how Flutter apps are initialized on the web +--- + +:::note +This page describes APIs that are available in the [`beta`][] and [`main`][] +channels in Flutter 3.22 or later. For app initialization in Flutter 3.21 or +earlier, see the [Customizing web App Initialization][] page. +::: + +[`beta`]: {{site.github}}/flutter/flutter/wiki/flutter-build-release-channels#beta +[`main`]: {{site.github}}/flutter/flutter/wiki/flutter-build-release-channels#master-aka-main +[Customizing web App Initialization]: /platform-integration/web/initialization + +This page details the initialization process for Flutter web apps, and how this +process can be customized. + +## `flutter_bootstrap.js` + +When building your flutter app, the `flutter build web` command produces a +script called `flutter_bootstrap.js` in the output build directory +(`build/web`). This file contains the JavaScript code needed to initialize and run +your Flutter app. You can use this script by simply placing an async script tag +for it in your `index.html` file in the `web` subdirectory of your flutter +project: + +```html + + + + + +``` + +Alternatively, you can inline the entire contents of the `flutter_bootstrap.js` +file by inserting the template token `{% raw %}{{flutter_bootstrap_js}}{% endraw %}` in your +`index.html` file: + +```html + + + + + +``` + +The `{% raw %}{{flutter_bootstrap_js}}{% endraw %}` token is replaced with the contents of the +`flutter_bootstrap.js` file when the `index.html` file is copied to the output +directory (`build/web`) during the build step. + +## Customizing initialization + +By default, the `flutter build web` process generates a `flutter_bootstrap.js` +file that does a simple initialization of your Flutter app. However, in some +scenarios, you might have a reason to customize this initialization process, such +as: + +* Setting a custom Flutter configuration for your app +* Changing the settings for the Flutter service worker +* Writing custom JavaScript code to run at different stages of the startup process + +To write your own custom bootstrapping logic instead of using the default script +produced by the build step, you can place a `flutter_bootstrap.js` file in the +`web` subdirectory of your project, which is copied over and used in lieu +of the default script produced by the build. This file is also templated, and +you can insert several special tokens that the build step substitutes at +build time when copying the `flutter_bootstrap.js` file to the output directory. +The following table lists the tokens that the build step will substitute in either the +`flutter_bootstrap.js` or `index.html` files: + +
    + +| Token | Replaced with | +|---|---| +| `{% raw %}{{flutter_js}}{% endraw %}` | The JavaScript code that makes the `FlutterLoader` object available in the `_flutter.loader` global variable. (See the `_flutter.loader.load() API` section below for more details.) | +| `{% raw %}{{flutter_build_config}}{% endraw %}` | A JavaScript statement that sets metadata produced by the build process which gives the `FlutterLoader` information needed to properly bootstrap your application. | +| `{% raw %}{{flutter_service_worker_version}}{% endraw %}` | A unique number representing the build version of the service worker, which can be passed as part of the service worker configuration (see the "Service Worker Settings" table below). | +| `{% raw %}{{flutter_bootstrap_js}}{% endraw %}` | As mentioned above, this inlines the contents of the `flutter_bootstrap.js` file directly into the `index.html` file. Note that this token can only be used in the `index.html` and not the `flutter_bootstrap.js` file itself. | + +{:.table} + +
    + +## Write a custom `flutter_bootstrap.js` + +Any custom `flutter_bootstrap.js` script needs to have three components in order +to successfully start your Flutter app: + +* A `{% raw %}{{flutter_js}}{% endraw %}` token, to make `_flutter.loader` available. +* A `{% raw %}{{flutter_build_config}}{% endraw %}` token, + which provides information about the build to the + `FlutterLoader` needed to start your app. +* A call to `_flutter.loader.load()`, which actually starts the app. + +The most basic `flutter_bootstrap.js` file would look something like this: + +```js +{% raw %}{{flutter_js}}{% endraw %} +{% raw %}{{flutter_build_config}}{% endraw %} + +_flutter.loader.load(); +``` + +## The `_flutter.loader.load()` API + +The `_flutter.loader.load()` JavaScript API can be invoked with optional +arguments to customize initialization behavior: + +
    + +| Name | Description | JS type | +|---|---|---| +|`config`| The Flutter configuration of your app. |`Object`| +|`onEntrypointLoaded`| The function called when the engine is ready to be initialized. Receives an `engineInitializer` object as its only parameter. |`Function`| +|`serviceWorkerSettings`| The configuration for the `flutter_service_worker.js` loader. +(If not set, the service worker isn't used.) |`Object`| + +{:.table} + +
    + +The `config` argument is an object that can have the following optional fields: + +
    + +| Name | Description | Dart type | +|---|---|---| +|`assetBase`| The base URL of the `assets` directory of the app. Add this when Flutter loads from a different domain or subdirectory than the actual web app. You might need this when you embed Flutter web into another app, or when you deploy its assets to a CDN. |`String`| +|`canvasKitBaseUrl`| The base URL from where `canvaskit.wasm` is downloaded. |`String`| +|`canvasKitVariant`| The CanvasKit variant to download. Your options cover:

    1. `auto`: Downloads the optimal variant for the browser. The option defaults to this value.
    2. `full`: Downloads the full variant of CanvasKit that works in all browsers.
    3. `chromium`: Downloads a smaller variant of CanvasKit that uses Chromium compatible APIs. **_Warning_**: Don't use the `chromium` option unless you plan on only using Chromium-based browsers. |`String`| +|`canvasKitForceCpuOnly`| When `true`, forces CPU-only rendering in CanvasKit (the engine won't use WebGL). |`bool`| +|`canvasKitMaximumSurfaces`| The maximum number of overlay surfaces that the CanvasKit renderer can use. |`double`| +|`debugShowSemanticNodes`| If `true`, Flutter visibly renders the semantics tree onscreen (for debugging). |`bool`| +|`hostElement`| HTML Element into which Flutter renders the app. When not set, Flutter web takes over the whole page. |`HtmlElement`| +|`renderer`| Specifies the [web renderer][web-renderers] for the current Flutter application, either `"canvaskit"` or `"html"`. |`String`| + +{:.table} + +
    + +[web-renderers]: /platform-integration/web/renderers + +The `serviceWorkerSettings` argument has the following optional fields. + +
    + +| Name | Description | JS type | +|-|-|-| +|`serviceWorkerUrl`| The URL of the Service Worker JS file. The `serviceWorkerVersion` is appended to the URL. Defaults to `"flutter_service_worker.js?v="` |`String`| +|`serviceWorkerVersion`| Pass *the `serviceWorkerVersion` variable* set by the build process in your **`index.html`** file. |`String`| +|`timeoutMillis`| The timeout value for the service worker load. Defaults to `4000`. |`Number`| + +{:.table} + +
    + +## Example: Customizing Flutter configuration based on URL query parameters + +The following example shows a custom `flutter_bootstrap.js` that allows +the user to force the the app to use the `CanvasKit` renderer by providing +a query parameter called `?force_canvaskit=true` in the URL of their website: + +```js +{% raw %}{{flutter_js}}{% endraw %} +{% raw %}{{flutter_build_config}}{% endraw %} + +const searchParams = new URLSearchParams(window.location.search); +const forceCanvaskit = searchParams.get('force_canvaskit') === 'true'; +const userConfig = forceCanvaskit ? {'renderer': 'canvaskit'} : {}; +_flutter.loader.load({ + config: userConfig, + serviceWorkerSettings: { + serviceWorkerVersion: {% raw %}{{flutter_service_worker_version}}{% endraw %}, + }, +}); +``` + +This script evaluates the `URLSearchParams` of the page to determine whether +the user passed `force_canvaskit=true` and then changes the user +configuration of the Flutter app. It also passes the service worker settings +to use the flutter service worker, along with the service worker version. + +## The `onEntrypointLoaded` callback + +You can also pass an `onEntrypointLoaded` callback into the `load` API in order +to perform custom logic at different parts of the initialization process. The +initialization process is split into the following stages: + +**Loading the entrypoint script** +: The `load` function calls the `onEntrypointLoaded` callback once the Service +Worker is initialized, and the `main.dart.js` entrypoint has been downloaded and +run by the browser. Flutter also calls `onEntrypointLoaded` on every hot restart +during development. + +**Initializing the Flutter engine** +: The `onEntrypointLoaded` callback receives an **engine initializer** object as +its only parameter. Use the engine initializer to set the run-time +configuration, and start the Flutter web engine. + +**Running the app** +: The `initializeEngine()` function returns a [`Promise`][js-promise] +that resolves with an **app runner** object. The app runner has a +single method, `runApp()`, that runs the Flutter app. + +[js-promise]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise + +## Example: Display a progress indicator + +To give the user of your application feedback +during the initialization process, +use the hooks provided for each stage to update the DOM: + +```js +{% raw %}{{flutter_js}}{% endraw %} +{% raw %}{{flutter_build_config}}{% endraw %} + +const loading = document.createElement('div'); +document.body.appendChild(loading); +loading.textContent = "Loading Entrypoint..."; +_flutter.loader.load({ + onEntrypointLoaded: async function(engineInitializer) { + loading.textContent = "Initializing engine..."; + const appRunner = await engineInitializer.initializeEngine(); + + loading.textContent = "Running app..."; + await appRunner.runApp(); + } +}); +``` + +For a more practical example using CSS animations, +see the [initialization code][gallery-init] for the Flutter Gallery. + +[gallery-init]: {{site.repo.gallery-archive}}/blob/main/web/index.html + +## Upgrading an older project + +If your project was created in Flutter 3.21 or earlier, you can create a new +`index.html` file with the latest initialization template by running +`flutter create` as follows. + +First, remove the files from your `/web` directory. + +Then, from your project directory, run the following: + +```bash +$ flutter create . --platforms=web +``` diff --git a/src/content/platform-integration/web/initialization.md b/src/content/platform-integration/web/initialization.md index dc7b87b58d..e4debbed5e 100644 --- a/src/content/platform-integration/web/initialization.md +++ b/src/content/platform-integration/web/initialization.md @@ -3,6 +3,15 @@ title: Customizing web app initialization description: Customize how Flutter apps are initialized on the web --- +:::note +This page describes APIs that are available in the [`stable`][] channel in +Flutter 3.21 or earlier. For recommended app initialization in Flutter 3.22 or +later, see the [Flutter web app initialization][] page. +::: +[`stable`]: {{site.github}}/flutter/flutter/wiki/flutter-build-release-channels#stable +[Flutter web app initialization]: /platform-integration/web/bootstrapping + + You can customize how a Flutter app is initialized on the web using the `_flutter.loader` JavaScript API provided by `flutter.js`. This API can be used to display a loading indicator in CSS, diff --git a/src/content/platform-integration/web/wasm.md b/src/content/platform-integration/web/wasm.md index 80ef5ab3a6..f29e6ed36f 100644 --- a/src/content/platform-integration/web/wasm.md +++ b/src/content/platform-integration/web/wasm.md @@ -102,6 +102,14 @@ that has been migrated to be ### Modify `index.html` +:::tip +For more information about using the bootstrapping APIs required to load Flutter +applications compiled to wasm, see the [Flutter web app initialization][] +page. +::: + +[Flutter web app initialization]: /platform-integration/web/bootstrapping + Before building with Wasm, you'll need to modify the bootstrap logic in your app's `web/index.html` file. diff --git a/src/content/release/archive-whats-new.md b/src/content/release/archive-whats-new.md index 294ec96e1b..465709efdb 100644 --- a/src/content/release/archive-whats-new.md +++ b/src/content/release/archive-whats-new.md @@ -247,7 +247,7 @@ You might also check out [Introducing Dart 3][]. [wireless debugging]: /add-to-app/debugging [Material Widget Catalog]: /ui/widgets/material -[canvasKitVariant runtime configuration]: /platform-integration/web/initialization#initializing-the-engine +[canvasKitVariant runtime configuration]: /platform-integration/web/initialization [Android Java Gradle migration]: /release/breaking-changes/android-java-gradle-migration-guide [DevTools]: /tools/devtools/overview [WebAssembly support]: /platform-integration/web/wasm From 842546dd7ab562a6df30a97dac0e257f61fa8cd4 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Tue, 7 May 2024 06:24:55 -0700 Subject: [PATCH 055/109] Devtools deep linking support (#10509) Adding a (brief) page on how the deep linking validator works in DevTools. @kenzieschmoll: - does this look ok? - can you provide a screenshot? --- src/_data/sidenav.yml | 2 ++ .../tools/devtools/deep-link-validator.png | Bin 0 -> 828800 bytes src/content/tools/devtools/deep-links.md | 27 ++++++++++++++++++ src/content/tools/devtools/overview.md | 3 +- 4 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/content/assets/images/docs/tools/devtools/deep-link-validator.png create mode 100644 src/content/tools/devtools/deep-links.md diff --git a/src/_data/sidenav.yml b/src/_data/sidenav.yml index c8f342d8a8..ba632fbc3f 100644 --- a/src/_data/sidenav.yml +++ b/src/_data/sidenav.yml @@ -669,6 +669,8 @@ permalink: /tools/devtools/app-size - title: DevTools extensions permalink: /tools/devtools/extensions + - title: Validate deep links + permalink: /tools/devtools/deep-links - title: Release notes permalink: /tools/devtools/release-notes - title: SDK overview diff --git a/src/content/assets/images/docs/tools/devtools/deep-link-validator.png b/src/content/assets/images/docs/tools/devtools/deep-link-validator.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9a0932af35408b87f7221d3f415ab81ac384e4 GIT binary patch literal 828800 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

    ~pRmO`q(60K%;$*M^i`-mtJN!e{4BNA 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
    4^^K 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Ƙ|}~X=L^@a^MeVU#q;^=Fq|SUN!t%r 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 B zd4M9oj*w-tTvqZhtqOy@G2Yc|Osylwq)x>jD8o^W6s}H>B>#>Ro7V-5Kpe=}d3+M*N?6|H-SfMRW)z4UI zx^Do2=+s73S*E_PdLk!En1G&&BD_En3&Vb3W^f12OFZ zN&w=uu{WsrrKpJJbFEG5X74B9q?N{$0hrUuGcj2Wgu5qrn%{DIkvF5YFMUofAy_EXHLsNg|*^Y8hNHhNFzJ zfY(sj6GPoNu|0g0vSl>HetANI1%^p?gKj7eC_Y5gx2y~zf2GgbKsU=yzhft@kC&o0 z3Vy703MrgJ#Izic`lf3T;u$SeB1^kRdmz4ku+=USjEaqI?3m2!vPoW)euad7aL060CnX-HP+46io~E+voe`P zeh2TR&!2$h2SSK(@&jf>Jc(7n0CjAv|8-Z8I03H>k#qtr1(Dd7kWWkPB903X5g<-| zPan8+xrclrS2?YHv9U_0dm=;i?}5LiT228f*abjEtyvO*2EmhUTEyntWR1V`Br0LdpQjjT#|U&Y7A4vyBnv03<3vxid1>Q?xJ1u&PKpx|$i z**gjl>8J|%Oaih~pz|nIkKT)UR0MbLD-MC{(^q4wzzSqBJ1~qJQULL*1ls4A0`o50 zie6Aj*;UH%&nw{`5oIbYwouN;nV|84xuuly$+>usLMPV^;KeNPu^xv2m4)|SB)w*9 zxdU$fOONA?DgBgw31ZmCMxz0juqvBsi+OA?Eb&<%I)&&1#(qvQ;l$6MgGndgjC4u; z5=fAe@JR_}V-!utSBXhXS&TvDx%Al9y6`~VJ_a%?@v|qo{Y7deoWRe323^JYyv|`x zeuCB{Y$l@E)cwBSXBHnB^*50whes>4#TTjkN*=Zb6}-nZ=$6fA#`j4q$(BjqBQ)rM z*{iQZ;w{asMu~wdTK(dy&kcXm)$}~IN;f_%VjV&Skr=A1YrL<_jov5VDy=N~+^98w zWFtG(s(V2ahRr}a$9p`(qK4bGN|+mA3voF_L(xO(p9Hv(9NKOi7*)L@9@E{L&dBx* zJfKz`B^(}>mz4MR2hF=GqFlUNRR}U^Il|b#w&=pCzJCrYhKPf9D4iILj!v}vV+enR zbPm#i=p!!(orrZllqH@){qS)qTu6C(L_zRM^-?#}#WzB{wWmzKH403!#2;!(wxE0s z_phriGZYf)2laLwl;&5#QLbxgE{dySM=$!5k9wZ?yhFyzsgB4J9%S~q#RAB5qu{Z( zNercQ%r_!0ESQe;KQlBB3k&;QU;f00fRl$TUNcox=Iht;kkaGjWf|L*RfIHFU0#=G z0P)y00@@meX;zt}l&ZXM&FWuuqMkiun<4?7P)&V?M@AlT6we5?`&%3Q3=_2@KZVq` z;BLQ7W(_(|pSogoD-bX}_WSH{czldKyJ6}R%P2Q-jju~82njEL8=Zy>PdwWAf)Bcm zg+xSjo+4oU@;@ycnogKPw!=Q<=v4cYqW4XJ*U;Ld7$KF?{aWjj;hNDG5$h{Sm(Lnc zGYBvNn>G~&U7hv%pkA(XQ4K&k>^QLq2_r$fw~#7HcN_ATd`UGxnAGNhC=DZrKhsW= z)6N_gNbL}cg=1s?1TBpC#AIcWhtv53I4oweH7c^<({N}PH1`scriP7fF%KGVg`BZG z$EZtWaUX&_zBDA5N@}8R!xX={M}s(B2)#y1)GM-*7q7}!@A72dgbATSeY}P`+z&Kw z8Ry(Qljp~@Ip)-%OO$Bwx9;8AEZz7Pph2!%A2r{2LIzrliFxHBOHs_T2d`<{wAEOe zabr{83-&yV5!bBV?IvDcpjh~N5U|3s#-xH+eq;()J41`$r%V*g2g)H|=i=9jWq^Jt zL8L=p#k<7J?WTu$|4o|)AwpvL z@^IPx5Po|dJFnICvmaY~=JU|NzYBcTe(8F>&7(|2LAqg1zI*M6%5vc?@;g05CikNe zG^`zeSm;*N`*>$Kpuf49tL z76lcUO^n+~f538y{N=2>PceD}VJ3B2`T|{Dd;g-iUPH=V=JGe7rJ5Uly+)nso5fYg z;Cm)J=mlw%s8eqrxEAuqb^ddrZNiXLdZi+czBGq96Rvh~oWmLn(lcBuZWZDzl>%9P zOrmutnM*mD2f;i#t*BX`0V?xrK>BE4eZ%l?Vkr%H6F6GKNYOcF!wd-C8NXJvt5dFNo z_9z8&XC>a-{4<-BG4sNy#l&d*iK&ShgbK}ssIzeJC6!>H#FCFlhx|!1;U(je zg>uPbVuaBT($^TDCVd&)9=5Jb+1|cMKTI1*Y*yL*DgT0v?dC%09yF>i7~Hbt2?f)V zY7<3foZ(wy7^ApMckzS3!~Y&kDsg5ojz((RYmwhy^-a15tzSn@d=Co#&;PGsP*0W9 zCsN@(n@?B5k6ODUyAZCfPH5&DtV+6&hNrKkpMLW~K3gZ-R}vP6j)aHL1khtjC?wA#fipnF2RK_n}$RUxgi0fqO^d$!<-_rCKw1hRn{ zhJW9#1&ew*P8;a`djpUKwK;*s*r(NhN;1Y4S{evd4=j1{G!`b<-`5)UXb(EvnhNfI z0Qh-KIQV6MS6qM!(VWYm zvx&GcD&zCucKN+`MRcJhq#4-T2cV8-0MeYNs6@d3At`t+@m`=sTLP>OMZjxB{W8yl z9V2^W|g%DAE){Qf}{4%p{@H#hX%Dr`T3pATdA?EgEWZ(z6fO)ODM+~AA} zOj687%KUdk(FqWt8?f4t=o`|skdeWXeMKPOqh@k`_-`$u_xzZQoLvw+_t!yMPZZ3^ z?Tg)F;v&R68L*$QT+;dd65^+T?EMeLw(s9O~%;%>==i8=UmWG%5`0gf#}^O@&#P*$?28=_h62weA^PQe_)aUVet2N@Se+fwnk9ueZ*Ox66y4f z{$2=(9JvQ22UcokAWU`l(j{f^N&Tebvf&+7e2u~S*j2K~Zl8#1iwi!{F)p^vzFUY; z6(DAE(I^WJxSHQPrR=aQsopFp-u?X^G%NUxEzhk8y9afJ0Pb)rPgls@{_X*83f#IQ z8T`5epzPHUjX2C5kAvNEEcHW|y?G`a$fVxVZ@c@SHzY&I)A?Hd?xVIm@QHoV#-~2v zyQdC8cAPIP@o&ehkR1=IE{pz;9lv4(3^foMw?g|_p1eKl-$G#w!EcuB|IiTfq;m|w zc|HzdXm{re1%w*X4AdRX{=W&Fe<#TfAx|hm+TBZiWxyxjl_vt@{t4A&aQx%4fl>c< zYy{bHQqiZ-|FPp99csWE7*t(qAJQcKMgA=mz8C!F)AxU`{$H4g-nR{>?EW3iG6lh5 z9&r^sM!VY|WVgO_NPmQd&KYe-{qKAChYd}E^p(ND;QjZ~MDWQ#UOo~P(%spzgX7Oj zLL~fm3Fv zxnU#ELVCA9$Znz3v27EO(P=&F57dGjAQI;U)JotPM~6;k5;f3NbS#%cPkJQih~HDccTb*AJxT!PZ&9Lxi$a2Ruk-RNOc|lj?6mZ zkR2z{rc(cp9S;Tq-r%uQ)`6W5CFjPx`@65NEclJi!+)FmpG?#SkrBNAuQCGc7NxEd zV#7JAFVpex%qEoMr#}79TkgX&H65zN8nhUU(Da2mG95?VkMh_3$5im#Ds3HPObOI# z&j}93a@ZR@wu0CmMZfxY(crlyeOtfnyYO3I5=OUfW&P(bbsvSs3|dw<()5v6ytfJ6 z-=(h4-TyTEpL?t5=O0)kl$9+^N^(s^!50#M2%{t3Hb1Y;JF_)I=CI>NwwGX0@PO)% zee;_bF}h&eMv3Id_wVRy9}Nzn-h|PX@{U}@Pl4p>mzUc{x;v`Xhv4w-d-#^<@0eK# zV&^5KC4Ww=f>=A*bxo;ww4OX@M8W^Ld!&F9!(}n$G47u9nHYS8qOtz(qUlJ2)51xn zPo=%1?I=VVic>rOvpg6f_ZmqKTb={LM)FP6;FYAD|GADj5SfFM%AU%4_mmId?Kq5R z|CmbwA{cqfA7kBqWf!RVM2`_c@kf8@;VS?U+G|Y>1BKuPE3#yJ-$gBfd3Q^jx=aYm za+`4*-97b%7=+nKZ@(cVlmU@g4tgxKw_jO+7$GO=J`qH>&+&qo$Rln}iAp3uA18?e zJ@)xO3~c)hEL6vK+_wMjscm84#dV^0)W2P*f$Hs7>T1C^cKL4}^WX079Aa^09Bwk^ z2!j`}MFIs=VfW93S@H)9tzXJrj{hgrA=Zv<=)XJuccEQ{w=cG}0pD2gxMp#`-Q5ul zprOFpl&*Lnc!3EXko*SU{@E67un_KOm+GMT$GUWo%ZKiFC$Ro5G)(E1|Chc(mUeRa z>gaZN>nebTUc)7g5s2Ug!|Z?uI=lZVeP1MqW#bsh}gz-R%W;d!dM3oaH!=9>Xo84~#)ZHxmkIbf+!3Xt!fS_*MZWMFPj z7XI%->BMg}g|7$14*z->J$6fg%)flN%SsCo#uGq@q2d4c)(2VcdU5=@za{up5)vr!&^T5Vx$U@lKE)==fXg4_W!vszi;>dxiJ4fyD+?% zu0>rklNH}e#(SZ~qb8TBS;!$G_J31R1h}W0H{L$Qx{Ysr8{OEFNsYzVG0<|}z<^3t zNq|nkxw$wE#i$0kgY{cc9wP!Isu2p&q7jO>)m(MHv(Lrz#nPbt-Y3UB???>4>K-9z~wC(;fP@$a&qJK4kN{ z65?PW^!xGnS_begc^zF7^may{U7qAfM4RqO1XMi;e}60Kd*1*_ues9EZB5;lm1|Jm zBJ0M-#~LZ%{*^WCV&f5)YTtQGc(s?GbnBwrHuXr3gk#HmOzBTdkKZA_Zisr?U)_4K z4iT;Bx1yC0akaY*GLEp&EG|F(-8)IT7M(23W}Vr}$$Tqq&?p5Ri&5uwQxhKz2S>un z6TVD*B_+qDHg8_99}z#U{`m0C@Z5BJYI*ip=ChR)XBX<3q+*D%1qC>HxqP{&a0n}6 z%b@$^M23$+9z(N^`eV3TmB0fDehi<_I~@7LA}OE7+peUn+1c4)a#N13SX=JcjPT&r zK3k%rb041n_|wB{W7Z@C3vQv&g~_Y-`e`_v&0ICjukA6FBOae+=%FOGc{i$Xvft|1 z_X{)+)@d@cH}u)XMfhP00LIIu2n_AAtgZ%?J%)6a#Z)U+4P9B;h4ek|YMs}#0-UCX zI{%lYD%Bz9$Vzsultnobf+6p76kRJlkH6vxI8hR zEJOos%w|>=J3!T4meD}s7?>Qf5cuTVKQHVdnr&B``iV<}3MeWJlrS)WhK(RFo9a%t zD&1ud=5^ei41~-mj4I0ud;9*Xij`ghwgp-OP8pK=DFUNAL&2@q;Ft6GSka)8=J-y) z3J;4xOP1ailK@?mg{1;pf)n)0FIKC{U$3(M!h3Fa6U`gj#tgB2*0qVLp!Gpf5al)3 zyNn^*Zzj|e`Eog1u`{|4=cl0c<&xR6^!PobhJCJoQF#HFq^7e3nEdwo^WT67u{LZf z*6B)|e7#d}*~1jk4Vt3l?j>5ka%Hc@?Cc%=`0k@cD!Ps9=vH$)GT!>PLV>dwy^RJu zcH^FeJ(denEcni5E%~|@)x-SSz`)sx%mIva4&tjaHx8w1Xrw?O%!=I!gqS!#CeWq@ zusarqsbU80sXFL9c#s5df#TWxYg&79r3-sJK=LaB9Kz|1r>AG3?eZtej5PiWF!)GN zKe#HC1j40?*tU*K7N197f;m788%vkM@a5tush2TLO-+Sh1QeyuBYluH0ezsNHg2sy z@T*>bh!AKS$dU`7e4tcs|2+gJSF_HPWZwY(ZSwCkfdnzvQmw4sPk$dov>QfiQ-Tn< zE?P()rse!-LnJc8!qWfpkV$X?gt&Ddeg)KR3VGhzaz(x-czqhsqH!+v_6r&q|48Ee zH$c(*9LnTD%W3D&9Rb-|Y@Zx6X)9`;DIG#v?In=EKm zCo`BlkH^?KAz$2LtbHn`ogTytj9`K=tiUsFeh{hu4hbsN({vyVK>o4v9oUY)&HQym z2p51>)&)`J&bgaY7K#AYrm9v0(*n5n8OQ}Cd@|VI->-I>e?Hgh(^|b~lI|7+s-1;F z1I_UatFM)zpdm(92X0pkWXp!wwuVbvk!3cD18*7f0uG9=@Hsu1irMi}eB6B8zeSd* zRvC*^TY@ehM_Ys}SvxQN$)C*eJ(3=9g?_$Zdq8Qmt*)ul#6I6-bX5^bte8DmDC=5||clcvWLj z!G868Oo}ufg|ToQ8#{l?=0eAYs>_-Zl`|=_+%YkEEum1Vkxj?y;V0N22f)>X2K0s( zBn0;JZ0ceiLTBV#*N_*pH?&P1uw9WwB9|=Z1{qi`O*^V#&pNB5gCJ$8Z_UnPHq4SoR#B{G? zO}itni{tUyMNPfSw&`n4La-H0EXVERW7REt<3R47C?XGtv#{h1J^av^(-^0CtO(i^CVUugY6Ppna z(&jf)NAT1ngy&rs&V12PP`Lg1QC@`((PPn~+Mk;Smh~@DLEt?|vkekvc8A0q6{ENewSCxL-%BEu>eV&Prnp_8Fnj&6469TOYel-_m=z~nqd95GG5Rw6}BZ_8leiT ztWbn+obG=szSKd8p!2u;=5s$^K23Utto&8OU;h!Z%WYKPRXwaGSTF<)CkeZQfq>v;2P{Xs{&@!?Ahr?hq6qnqA@RGmD;Pi;JYGX;Fe*%2=;qgqem3cb ziUL2y^$CEjm@Q`qGIAimgQ`v>5Zr38w5$A0(xnH`JZPr|)9)f1*N2Pcumgc%5r8xr z7^IOorlM+%3^F3gtRV435q<@tOuMw;sy7Zd33Nj|`?awz_x1g9BvgR@2t4fy$1$7U z)+|21{{T7j!7u!f5jPHAy#)F9eIishsr)hk?1rJ+=(Huypl3;Pof1HrBOa~%rDuSt zHkWIWxoL7RA^cN8ae4A5y0v|oiG|%S;dx;AUg%AkN&(}30KzNnI$NkT0SEE@cVMxeU#7V56h}0#&Tn8M;j{D zwqvBlN;waJx|dd^TTXBW>R2W;REo6j2uvX!i@xw-pEUvSkc}i0yf-!o`gTMc8_}Ik zn7Fu7jm|sSRcphVd~jz2ToyC$vBY&4!cR0C;-8$Ix+1mK)wwp{Me&fpfr%VQuMji3Qe$|nPkm#kuo@2B7_z2WbCK{R~Fc3$~ z=i131i079RBzS@|@2*cS4^=-};?inlX4W}_DO8=|FE3rbg7O9S!08C4u>E$Q&kYG5 zt*`vR&AKSa{ZjE3!mIL9}`vSZ#=sIcso_38ytp7Lwa72 zn>z|fy0PfPH2z~qdwuuIQ_e_~G$0Mv5V&dgrixUk%;)ppKZd_){Q zqQ=MhvXmOO#kEYk##}CecHgU9cqJWX@gyv&Me5?wb^$1now+>?Yv?=yT)fX6#}y?aZcKR1Sj9U0psHA>`pc|Yb>fwPKX*D&)#&g%oORSxF4;H ziG^Y2<8xV$F1Q_1v#>mi!*Hpr(MqhM>og;R|C5FArTlFcob^{1Eq5-u)Ol4LA?@Ep zjwqj=b$_;d)#ZS|Aa|`Bk#V!<@OYp9;Fr8=PLS0iSwd6~(mgPebgOgu$EUz>$&v41 zOd};B&q0bSQ4z(ST9YeFGM<1OZ)ZV<7j4To$Bl)AV$~wjbdP8nU zuk4SFP@=NGLeV=vPxo!sbQ0x!rx$H#YE0m2Rb@km(|SSZsmo4f{}7S|7&DRxumy}! zLyJRaJVQkj1?vD_F0nLFO#BC90Kg7(OQmfyIT!o!Z(}6Wjif`N@~H%KExwViFW2A~ z-~Y(9_g(WNd&2r;a+CRUvhp`wy&V(bL=+TC(%W9ryk33=wcA<2N;gLMj^To zPCnP^x;lKA^17HTmhR$hlKnbG`^IF9G@eRdKw8FIvdCpud1Y1xv(bzzZ(-CsDo~p} z{}U6R#8<5TH*h{CgImvv5TxSqyu#7tQ}cm<-B41l+;lrr-KV;N?|ACBK>FJOK`OrT z@^H*vNz)1+nOIrbP+nwt-jmwH_9S8b91+V>HSr*UQOvFR$;iML4QW0vzg_Rfv~dH5 zRx&C|MwK^wo}TMU{UXwhH@9MrJ_(+h0XIy15ZTK!}M}oS$TbV=dm=mbMkK47gF!2nvdwZ^UCerBQYi$ z=b3m^^ou?)o^$tTuXzqn+S|v zohH(YK!qe>3hBqRP+}4iDyABRo3cYGPu1P)+L=mih5Yeb*O?7OeKo#BrR3e41`_}_ z`Wk{zF@iI|(A+{iT0B8(J~e=}KH|`4U@{PY?P}Tw1B zX;t$w?U?VouTL-t5QDithLXVm#PqPn?@Lopdag6`WD?Qwn`a7`fG;cci{KRR3=E_( zT`Nl~_F4sl5$9VX(+l@syT;^BpFShdZ}m9dRoZ!_07lja-{0t?%D{ZoI5`JAuJvyU z0+b(X@@DZ)lQ|sTy6$xkjgP?j3^Tdz*W=HFF{bO6XNMnC)6MnMzd>CIqB8ktnqMl9 zsMED(4YRf$38{&o*BoHWUpjpXK%9iq3n5NWUq6~>|-4q{H{~?{r-F( zzd!oVqenXDx~|vjIV(I4_^=1X(iIlNYExBs_j%fcX*h-#o${)p4N~uUxZp4>ZBcpK zh#kz&Q$%5;@NKd?azVFF*Oe6&(`V#Q z5Ms186#T79H#Ai(Ei|guuh@>2g>Ki+LvYCtor4UGj8?qPj#FIev~sr_*vR?lnoSfu z=ZA0L9FY(~)MH=!9nX$UPVgG@4HC&{uct6ckt}*ciaJiQijc_c>?2Qz!SXVAdxga6 zCFXcNDkE5iZX9%n9JBO$z1J%5aD`}f#&4#s&3L{4<#m?yTfL)LaiitH1Ud6fW^ici zRblrSHCpi6g}>~(blH0WVpx)aSJHT;HG7}ZX?_3h%*cAVakq)m668!|^M~(_)9mb> z6485*Td!9Sp6#51{r84e$>|K0)k}RtcfcAt@dZ3kGYi6n zy2d&=(!9WjiNHE)gEkz@*1-$%V~BR?=P zC4L<1D&&b}{M-Mr&`o^jO)nzVj4;cMD#$df5s7N8|J+n%i{qKv{Kv7pC2N)0V4r8; zR(rz8r)J5h7C41?zfmx578`f?wDJ-Xe`!DCF7GM37ze_Cz8`-e&bjE(9W1iMtNEoX zj8U2qQ97h%wDGeL)tE}+m8ib9xZDKwt`*AJ{U#ZO`f)6=awX7dwR_LWYX+jZ#3p`? zmx-s22e$0H|2@)z^Fu%4soFf^p?7hw?VC%TlLpdB*Z9Q2Y=(5p+lXJj* zdjnQb-t93E^sFdg+N(b4|LAfn6D~7Gjs>E&CJt67)#xAw=rlTdb!1U znt9YsOw2DVu$??0`HDtkIA8`8+x<^Z2S}mW==V3Fcr^=btmDm_H=p?OVMeP5ZZt0U zwewTRSdW$ZCVOm%VRv>Si*o1Z-(t5qSba%D+l}ggd^dQ}-QR-wjveY9%cqsRk=}MWm4+y_lWU$*4HOP#EiU5pfYo8kl8rvO!w>*LwSYRu0j0 zhw$G|W`R_tX@zh%jXnGnt5g5PwqY-3cXMvY{FTNTU%B(l@_%eB0P&QXw7nq)v(4Sz zJNCwA&70Y93STdO!A6oF8Y#bug!FUF`kQ119`pJJQ>Ci0DJnF^!W!H);)Rh?#(Edp zldVI2AOdWd=W9%9I#wmC;?(!Si^FkL zMe%b=+uQbn5AXM*Gc7F7)@nBv4ic*!8j5Y7n2c^K#6{A#xbSuK zfdsG8cxxe>B?sG)OO`&cfHop+P2z*2Mn$_;*Ppw&O|#6fFNQ`!^s`s*IC4s;*2I^j z6T`xp|9Sa)%41$*ZreFJS=k&f&@z&RKbr4fgq^*dpZCoRVZKQA>1^odyhfjuYJfjy zn$E2R`u4sNQ)b&{p$|>572K351O)vXAK3DpS$8`c0OufPZ!;;e)jEXrKe9MqP&I={ zFo4g=MaHRme4EZUg`hRi)pGJ@@~Ln9ur+P>ytGnjn$TSadUJ}?Lk5??DjjiI$sWUi z#juBnY(6Wf9xyC}krxty|Gt z#^A?b<8hKkd4@taibVN2dDL|R!&!zHMeRO;8AFbg#m(cme`2ckhJQy0g#k~)H&zNb zT{{+xg8hB^buHbTlemk~#14|_nIW=eFV68c3Ut( z#`WQm>?#B7DTuUZkj7s%#8O|y5O~q`@rK|K$a9IE9)Y1OB?k2UjFQ%t7B#zPp9CS; zqzSb-#nTU0SdLMRrx}}#Fi5XV9KZ1s(HtB7=B~iW>LYqo%`X$n+5CSoCBp;!kFj04 z!4_1Z8W}lhOp%=8-1EXEi#2wNm!;hVE^23yw*~Ud9@F(fzs}`B4IiKWQS4n43o=`S zT6mza^*E2dDSX|(fYxRd3#vWfEyOY zedftp{KT{#0e1T3{<-FIqjqw0HU)BxO4||TqqzAKoALTMm$gwF?mI`|%R)}m!Rrk< zJn*v|DY`*|?El}=4S+04JI&c{R~NYLT>l(#xyJ#sy_Yxa?Ez{wgnCe0?9mT1YK|RNYCzF)D9wQ;TbEwE#T=j|`^Cisj1HZiM zS)pDO6n|H3?u{|eonDca;65|+Bys0dVQZb>B6#C#z|hf%lvOmwIQ9>;PH&Akv~`J;E#^=FzG4Urty!!wpoKP@2chNepUFKb5o#*j@~Z16_gst@h@ zShan6rzdTZ=8ripq-6EB;&7P>>hs3WP7{n{8 zex7NbC$&08OqvceGX411KyLzpiLG+g&}AlfzMh zGg)i!n8&QkF@A`IFn7)P95v3sbgqY|C^CVvkV@;Br+7wRUEsgY#pE+7(WuNX1@6%H zK=%gearC%3>Bvn(z0TmqVmew+9_@ixzzr!9*o9K*e~4h35PheAwQ8bz1X%mgp=Ztj z{&g3$KIayLKcXm!A=FO6k@1hGFKQRxM%?rJCIS zz1V-mrhoW7XWafmP7`$6P%ale8K{=C`exUWH+KJthwg|;(@7Rbo0 zqGKwZN_frXZsQ8jr<82q)%&gMs)!=DU^h$+bBIY%G5D@G9sg+Nqx=3E=ZQosBz{{_ zTA>h3T0_TE?=oqFaSQ33b8)t}wkxqsv@8kvOH2=)p4m6PNqu8@(Z&dKny*=`R&aA^ z2^!xPMhCfwIu-MXSwyA8YG_)4DfDfbv@!`2-+lb*U}N(oz^+?6a0?`-9;5ipCM#xP z7n1+Uz?^tzdzxq=1wR@SrW+Ctef{4}Bji6KLzGqwqP7Ken|14x3MamRQFJ&Pkb=JG zirbA&1Exx>hpt{+$mWQ{D5`$jlabtkZgT?L5Hmc(0SziMEwU>7 z75$1Dy++4S`Bx(0Ojty5HFu?8^KCNOov-dCBt~s}TsfPIU|qX)bEd0R!L)2qR>KlG4>Zdps;+SdKa>9~Ht zCV3=G=TLxT6#XjVK4iAyL4u-#@R(hV??fe}ur!P;N#qXD5y5Z_B!9JSpLPi3({_N^ zIW?1Kwwwgrf}otQDRL%VXsh*mmO}6k{>O5vKb<`BJe(PKp^IFwg=YB(sF+mqLF&gR zM+eP;dBaiVJ)eFxLF48&Ra3J<3| zEHM}6>-K$KfBJsd$4FC7i_ci`N61Z=Of-|ghc^+FCa=&nUP}8*;L;jWMq{2wes}nj;WsHzQ!E+Nhzyj=LDcKUq{s!3lPB=D}&=tbI~XZ`dElh=m>jX#0MMfgFsJZ{AFsSRn6_6v;>CquUxab z6wuhpi4qr(0XmgdoOz`7uSj2S`)sTXW(9vGg$8qJ7Th|-;d1;u7JHIq4|fz1G`e#X5S0Izrns3dgG;;YP^TBq!i4=WWAv{uq*H1%)s10OuJ@utjpZbW%`% z_~1hgyNO0EKuEWVuOm2@eh+iEq)HS`wua_w10jjh9+lWF&Fsq5E_Fk-wASIsh4Z2t zC`cKH#`Di4$c>ps6---rWS(zaN&sBr$tjPpu;wn*5=$F0>JP2fbeCrJ@@^fscn@GR zHuBHZJZAU*-Fi??q~P{x_P>@6Is^mP#nh?kY4RR28_3)j<#^)$sfD7$WkZe6(*{YY zOAM=*@b5m_U*|rVbojd37Mjokna9l^r1B$-Gf)Eq17_V6QvD$5qd*@WFB$8<7sVV9 zzxfZmOPxzKt@<}A8=skl!-(J=^Ap0W!uEmEZz~R%BO4N51ZZ9|NzIRn5QUbe}o+cLr>UuIW zHkI(36IC;w*|+XGa}fPMmNKV%0Ai<|nLvM|J>$zA!kspQ#_u_j>TOv93S(QwzZzxfJ~ALA2$t6e6b9E;$eZsb zX&RdHs^a<$TTc+%9aKT1RO9Q%+x-kAYRR z8pjSas?+s`URBV7?9sw3jb6qZI4l=5o~!rT=S15+UFB^lCJpC(hEX5V#>pq}WJb5h zqH7}hIPbGZb=R!poWOSzo@5^oik-jVAE@1!v{7&M3IEG)C`z@1 zuGtb}_kO}na_&M8U;=)y&2|0RGWW0J?y63ifF|m^^E_^HMKHvnuR;u$oKPMEqU6}- zaNcF;)1^Sks;M$nfY6GX{`A_l{BRD92ML1ar8!?)A*x>|lZ zh?f}rc)hB8Q+`iv3QNnD1|~1@DqDcR&>1kRJb!+Nd`$acGOyGJJ?D?ypXeq4r?}ET z*ApE+57FY#FcgqloD|#1$dd=TsA&WMQKAquF@mCcKT_+-yLay{4=nU>hjzeTm(Y}A zPQE}PKnaAU_=iKZRyKA_t+Z`X7_E{+ncJ6dg)P+!-L**p(?}vgx*XCkx||^xL+KcD%=-vd8@prz zJdUNk(j(s?<7luKb0$UqpJWgiFMnMC$5YMYxh7&Cs7+$P&EdfXx0TBk6W_{Qm|O^^ z+7@#ZdUxviNL**;;AjBU;c&aO9(>0kzGRvJXiQWdBWYE$q@Jy;kB+Sg4c&Ck(@?Dv zs&73mcV^J-OFAfC08P_#tjH9>2OQ5T+$Cnn_P2$3m}5SD$*Jv#F5EFzsVGX!yKcHV z+RyUmYsf`iA?1QNQPyiAGbT~K$j@Tv2P3R#16f;reXG zASnlDc}c+i%i|@Fi*IY60_Y!YIiNF|2k*b$1w(xk^+4zDP|-bv3|4c!p!jFgBKoRl z--)80cApye!2U(96NJc5xo)vh{&#=2r6wi<)ZeZ>g8Bl)D`>sDTgFW>{)#=sS|IZ# zU8mwI3{m6$3Z%9M*g80hdmcq;o$no;ha_w1m@6TJ;@!^W53Uwd`u9|C|F$8aVEh_L z>GR|q_r1j;Ew{c=0`bpy?gp%ulJbc$d*(iV2Q^sNFip)82YryQRdUxpAehBnuXYzA z*OU0Xjh0C?M98@7ExJFdq?6br1+mY00)#liuo8#t>S|F^Mk9&Y2gX<`?4A&w2#(8c zF1Hxw8pb$$4IyTKbk7EV`v-33SEa@Tr_>ii+oGa*Ok@gH(m>UhSYXZ4>R<52J^4e2%V}HN8JS(5|3?!O7~vUYlII zz%*}rivR{)DOTVA$`+*bsW0i6vz~E5GO|iKJuA9+s-ZLdxR_- zQ8m!S&ldG{_ z24nyL9HHlbo3ps{$zMDwk4J~;9D%1NrzOBerv^VDtX8AdcLp2f$>p2Q{|_{J52A2i z&04nYUe0y+Ufg)907L9$rn%T$h0___O@>UV+;1%Y65ZW~tE(PY99lfCtnkw8>xJv; zZis2*>iH583v67}A?+NapGNPL{(Bv)BjU`d1x_VQj>FcS)<#R#-d0sZbn~4T-ujAW zr_M?fj@#suCOU73TlFEh7(v7-kK9zmdDh$`jGSPFdg;*3%Fiqv;|I?UiK6P0V(gGH zj^Eg~jIV0$xPey8=qx4F<&a$c_(hbi>kVatkimL$Fd@*Il-t+Y`TP=uLP`dU22G8{6hVZPBY*as-UPynOX!SU4him!Bm`&LE_I>Frq}p#>R?Xg~9rL$9dds@U8LR-Upj?x2+^O% zj&RgOp|`6pA;YwCYCka$!yZ|JWWaR8)}X*E<(kyGt2`ps<5BJ)Qm0n8ZmHeVYQ1>x zQTcuun;_`v*;^n*yFo1oBRNZ@jZt^a&S?e60YPAomD)6bM&^W}%MS2%l|0_~*z-vq{_) zntUDeE4rQG0GQ|W47VE060*M>&mbi-w-gVz{i!zSK)!zg1Wk7hE7f%6##GvUf4qWR z2H3qBrtMmsa2X8_Ek{bjtM`w@(qz3crS%N589jFcH^48x{I3PoE?HXn64Etlfj#sq z5a2Q(p%U&-L|ADQ&(ng-sn{Vi7mW`&2)E(WlG*kzfV}Q`Lrq?IYhuA$Cd&P|NPi0) z*ZLg?N~ts=l@Vbva_F%_t*h_NQ%QLW#KSzTUd5G`YK8c-p$N5T$VTLn>O(gDMi~l- zUMh|8b(!3(%{tcrlZ@Neew#mZ~GqD@Sgf@tV>$idv50x4a8P9UwH+S!Y1caKmSDlcT~2Qz)+S2 z{2X6CRt#l1?iY-yf0aJJUGnI?@l}&;;_Mmn@2ljKc3XZ4k6xQxwajHwIW28I zB|bI>Ky%tEfcSC&jzULd%C5H`qt!E#=O<|9*P^k~%6(MiwNe~$+%6EP%eNLm; zhNH$>1(Ro}r{AN7`K`sM$pwl`m)q_XQ^ShB&UjTJn%^JqG{?&jlSDQ)rY2VZ%F1q{ z4L`)lu_zAz1c2W&pbryF?Z1gb`@7*^qNdx<=g-dGR!W$l#{sq-0`!puqwhfPTcLK{ zQ+wx@c$G&op2tW?p=gowo}3~(@0pvzix(O1BhJUS<^0O^IM^7f*LK`~ASKEqY4|bg zq|+zeV#yo0`xTrBF*J#EI5pY%*>w-k>Bv+4M#m*`rK|jKmB;_*8NU8aA3(Rp0=y7h zye%CK{nJcE27{n}2b4m$RVR0=7eENhZBtgrh!>B)5y**enc=*toKOmQNpQun@g$*Q za;WZ|ZQfbAgPa=@N=HpC=fx=gRNTd?%6Gy7=8@;z$=%}n(eI&Ph>7#LKR50N ziID#)TY0EbN!LCsFt9#n!7P}Jmp&!Q;S7`q_O~e|sJEN0zI$NlU94Q(sBAq^N!dPF zyOsRsB@;5;XY2yCMxwDPUWaj-MS8jB$qNXqX$v;A@FEgOOBDh7I&jYd#lLX;WL9x- z_bcV!alXl%NDPc_(x1*kN?L}KswF~@N+W(MSwH|k01O7X8qs)mQyxENG4u0m$&W0D zQFS_OdG{sK)gD1P&yFp(?}VN6Gy#Gq$z8 zjmxC|Xu2ohGIn=2V|m#Opg+;VB9hXsK!SQPjEVpF*HT3)G;17;=^wy9sz(PN6OcXQ05eOV4JVvTuGE!U+mYvaz% z>Cn^~`et7sQ&Nc8&HOa`(%iV^hbjzb4vzVe^3}>SFgb zC-u$%B48R0O8oXj82+Ewkq%}se?&1=)X!QX7eMDku6pNZbU4VUd!7P6dLDBxaC6UB zWiF3ynu>)5!lkNZQMr#A=*+cR0|`aE2i@~8;NjRz8i;Ciof z+YmRAkDM7i1+J%Z;C>3Oi-rc&fk^Y-cnNNCW#Z#MWSKW3;Vdei;(2&^LzyLCREnxW zAhulzBE`$BUTwMM5rtrXyofXaVe!BR)*!0hM}jn=gvw)F{#^!?paIWct}UgQFO0txwUZ|z-7 zAKmF?(I!#UFfxU7xs1(u7E#I9A1xlIC>MuZ?m}q{T$@t8iyUp ze=cc!!ZF3FlBLfMtAG5HOtZf^=d2+4kFM+4>f*e99lcx3ef8+iB1OqDcJmje^tLiD z55|eeUqI&Z#65KjroQ2?5ZsVm;}Ew!xlwfZ-S8Pl-L=9y6O1?=VIM3Ff^l-ZI)NZE zTfdIp$?InANPj7_J@X*ppg$=(E7}#D#n$1aJf6fA7iDX>*>FY zJGrb(#_3equu2MF`X-5=m32Q_$!<;A?y{->kxgFNEFL`N#Ir#)?3e!W-TSALPI(_3zP=bljI_1Kld?bZ{ASxr_jB z5g5S)ZLFT!sdDy!QF6EhW4Wu~F~OWO<{?A)q+nwa(A4>JX_+(t9!DVjH0o4RB$dc$ zdCL#fTZP(2=tYY7gq=oT)*ZAmbU}xQj%Ghst&SA42w99iV-%N^40}pqQV{m`^nl`Q zGu?|Z6Ua~VlDW^Uc2LzNy!w?PVayuE1?_jBfe`YZxdS>LFjO5FW9%z#zCw@|E~gmv|Jeyk|!5|ox@Y@ptC!@D>r_(w-K>f0BM z$qiYm2G>x1q>gZxjclgTI9T0wJO9D*ELiT~@(Yt88eVmECS+6kjm`5;df;jMcS6)i z3O;?y)_Q`=Z_Ncycz1M|B;mI!C)mrTNF^KzF+$3Tloycv-xgA-$X|N`)I!kS@Kg1n zCkT#?zww~?tw~7!0k%1CD|c?FaAHCoW8cchE7DctJ_JZCI&FU`}4zE-EF1DMu_3YQtkDZ|{^A?Ib)%Mh7F_6X=z-fKsECKdq z@#L27MCEz_@qBX|8dc& z%}UAz_QHf={3h=AzeIG2f8D#y{*Qr_g~@IGcVu(-G2aY_zzG&3dn0%FyAwXUwPjb! z>^AjVEXUal3#SCXSnTdL2#kHfC|U7~h?qE#Wx(MT+3Rua?VH{ZOEiv=sEGYj0-)NS zEYkAS=vUi$o1o&>-M@+&{iO%Msrf_(&~LTm3t&?0s+zY@*;(w1%+u7$XD%}S{hu{- zQ;bii{Qh9WtsT$NaTq|n#@myKU^*MI=Gz#{r3T5(p8}{`8$e&x+UR=YTY(?})$k*= z*QSG1{z=I4?jZ`h3g259^aqw5QN^{!lYItWSc#rJOC^H#&!QykR-$C2TmSX}lN4eS zeP}60;sK_qF0(dY=|UOFz4=H%v;Nn)6MzI+Zu(CAce}baAN_-zN%9E@Gp=-X1*?BA zx#YhIAcW2G0ur7FO~XbKWqj>!=8m8$dy_rfL~E&W>`uP0y-#EJV6|#6Nk~ddZr8Jp zm3nhrc~?>8d8U^~*zKYZ#wy(wvxX|UL`LOyC<_qufavyYcT}%kAplJNG zQROh@etrH^0C)%)-(bVbtOQhV^b*|S7EP3js9Q|hJ#9qxr{isu_gQ&JYq@RT=?Aoz z(1}FzK`*&Fp11k#toim8rJUg*~-qrOK&Vk^MKoRiV>9j zjk<5ta;-3YwPhBOtt(Y~jEVNVbGHbGO^+bzfF?^Mii5LOe~B;^`6JiQyw+M$-slwoy$Ci?5oqX9dFDPmGWK99ZvPGNsQR2|c?sBnx-< zB;b>tXvbl*=7NGlnMcpieD4Y)+(-BcsC8bww{8VgDNgfMtS-P%m#1M4#HZ-f+g|eI*T^aW zka#@dX{agelnvyQ$HqbyLtks1uN}Y!2@GybFU{TupAWfKW2I>*V8d(uVW@2mRwRG{s%ibivpWu~;!_ao^GLW#3`&9d*r3YG?+3CBvXpI>9#}^b-Ul?5RSyj?iZ< zlFY4AUlmWzz=T=Z{n4_FWCG5YyvpY1cqx)ppR_4IJgLKo9bb1vLQ zXCl3U>SAnOJ-FdlkitH{I)kzb;u)<+*f-IrL{dQ2+6HF#1?PFj&;xyyLBt=ScN0Oq zQ2qGNiDd6%CW2*+M*jE_-~*ei4x&D*D)|6?`!?gbsexz3*|A?KsBIC+buyRQ=D&21 za8pulkO!ORP+yyfcg4>zqDM=OgF7XwZ;q~Mm&x7tVY!fzkrDJw6JQP(L#}>1dinm{ zFHlnSdthv<`=dP^Kcn{@5XZi8ecA?cKJCj((5Jg|-@-DRqAI>Sp5uTkRPVl*TUBrg zWe~|?mFH;`6qrxHqc+T6v?k>Ei{}A*+i=+7B=7=rTB&`>!DkN5NB37hz6n)Ovjm!} zI~V7wDM${0!{$qF9p0F%f=dA#N+1gAfAEP|<{uOE*O#u|x@}#g9vCbY1&S}R^Us4J zzdV2m>|?yA_c7t9jwQ89eF7Ny5c zKfTp6gHm-yfW4FBpMTW%9xh4Z56+)8yte9&fu#R&K5|ZAuhUW^OP!v-Ho82oa2_O7 z;AZ$vMM5S{j_n0a3e0hOS7c8QezJJsWnerfccJlf8ULdXq-|(H00u3TV(DT;HQT*= zFPompvbihv{;~!>A`5Lszh-T4f+@3`4rtoK7%aCB>@1fi4jPcVYh|b)8>x-6h+l=e zruHBqKvx{ukRr~r#g?ytSQ%go`eJ?}8B+hbCdRt-7!l`o+3sn})mr#rDc5=v1&JDn zUuju_HwugX(=u&-{ov+dGPl(0!0_0mN=gg$pu zL^W_16TSi*!|^8GwCMzmvTInEHTX9=fpsvhau_fVwi#?&Y+gk-DIH_mRKC34PFz66 z;l|9&w6wBL0S-zpXm&f9o8j7DR68H~e)i&V){Ep9z}!LEPG}S*=v}rafjX+E*$8Mq zvw_1RM`ssNC33Rq6%NCD?gm`)ic&RyF_@A5FRXKpXpD<6yy(T{V(V{Xc`RKU!}3*s zVm96IQXp)CZD!?JYwfK(XH^|~eFmxE&u0yJzvuNU?jHJwXFNK@21=Ib?hmXNBdaDf zz!zn92laC7J!0TN5uEBV=g%sQaBUMa7OtU5JIE#&ke!5@c0IqV5l^S46<*t9lc=YZ zg-VszUw8I(lL3OMEgOT$@2pe}TilUGWhay~J?y7vV6_~3{BC6Pr9@+C`q8WJZGOJr zhPmL>7J4aNA^i1c9ZHIO74X(zwdtF!9Ea%W7wvsEvbyX9^}kAC-n~jk>r3B@cjgzMYVZP0 z^PXSdqGL#5;$eru|7igh=Y+^LvYyE0hs{)}K)I&pjJL%|Fn#YB3|FaArT$=LeAc83)PVbw!f<=_JxS}zRIcwfU( zjPHu}6ODR1O+@rmE%divv|@;o;BG<@rlH^+PHuG1x`K#Zj%J0yp zlk?nr_TOxz&(05+GFr^p1*=6uDV{%j_H_je3$%Pa3@F%=a#Ck^x8ji*0qS*+ck8wW zv-OiIcq{2}mj!m1#*Js9(iW;0p#>D|)(MrsH^d&efcGU6w4K%)UJW>|v>A?fjsDIC zKY%BG?>##8rdAJn56wck>$#8accX?XY{WWd`=JgZ!j`LiDfGs|a0wfUt z^J6fI*H;51qIB^X>0Yiz5{}>EnO{!B@*Ar8#;RlFLGtdqM4gWDz19ar|C`TeUC)F3 z2~c$qU2XA5q{yx*x}$I^1(1q|if!=3zbO}SMH!ZfOoy8*c++fD;vIvJ?A*P$W09Gv zD_5?igOx&SG6@JP9c*GMoz-W#Uq3l#-^ybH%nDRwqS}^~Hmp(yYt^tevVe;uN>Lk) z1fwI3XZ^Fia#`8OohXzFyol|qi8-DyG4N8O3wk;K9kVAcFjC__ODzrD3=xr9<&4b! zR9sw)!+7;2XCCed6f21-cr=v6sf^aOjgxTIv@H3TbSL zG{Kvn6qJx=98yv`WiFxU50UkSF-_1z>_T9(El9JV_Q!OkF}{H2@&5t}yx)U$6!yy@ z3|>nhIkGZEcK6@V!?#t^HUJkKt#;6;u_w-)jeyr%{MCy8HhsmRa=uxd>p3)y!{NsZ z)sv3;h3y`BJ-3d!(neeWH$J_3Y zM5; zG+7QZvVr-bQ#!~nGy*@I0drxnNP-zj5u|!a^)D*nM0c~&E6UrLD z;#k@F_j+{;?rUg2QX>64HR1UMP%%&4QcAguEJkjg)c|bz5FV_WDfdS08~+NPtyb7R z%rLr)$l3Dcn7t23lA4ov4*1fBhd&8g6lp@Tww=cRi7Q`}i1GX^lUIq9nwM@JFz#xs z@63NrC!+IrVbcSXNGMjUZ0T8ak!w2e1E`)n%XMBGjW94j3+j}|zKo3V>0-HO=T&rF z_~HGR_Iq!Thp6-P7z@YA6k^dqQ;xIJjuZ+oEm#Z}JjZ`E1O~E})LWUFSug15>F$3f zWDH0y`h%Y4lr$v|(+_PnQc4ia1ly&; zd47ztu+8`r@pmQ$5^PoA)rYf4!k>|lGZQj4p6_e|xpb|IXJm4LE;RlfqK1P*RBM}! ztI!)FnGC0vJDp*?56U39nWQ4Nchq(Q*>kKXT<%V`k1)Y#6GojzlzC&Tstry~u8F)7 zRTl=zsNe~uWI-S>6MXahWGgK_8k4eq1o0;Llz9Gw_vQSB?$1%tEls~+{K7C zZxv*pu;WO5-`_jmf~|vzfDuSYIBERt8C{TlQbNM}b~b9%L>E9>#$}D+!SP zp_X^I9U|z7UCDNOy72uj2qWf``okoF1B~{nbBor&ygOfn-D{-{Zk?G~3~h|O$}AWV zL@QDd)p{nZay9<--bL7yGU=uN3)C&;m<{qS23~TY51-16IQ!Rur_dfZ&@#mp;Ipgr_avLJhuj)sNMN z;wRl;WA=?}>EBsYL04+#D~yML6#iT5{80{Qk-$b;*MAhckUR_~hdP?Z4&7bMC z)SPNx?xx>0-^&{S8hPbSSOmk?dlskb#J^QAFMrFwVp&vn}A zok`<+Wu09wK2P=boo}+mMaa_@thYJcka~A&!n=i4N5iGEe;fVOW?ir_Lt!X63}-fX%}&S_f?gnF z*gffoQWG`07?_%qsgW&kXY1$F&K8}X z0X6U>=Hjt?{-=`;3;&#{{Qj(R@{UuHT=urA9%T;D9}cus60n*VAV18PtT_${%Sth8 zKxz@v8||2-lmz0nK8+J%oB+vv&(s%+J;9ejK1+4TKUF(Bewkx6%_Jj zJFBpbwInFkgULTB=nXaHS$*5>(WTp)a)YINx*)H|njeGBv4H8K?hZ}cl zTiU<=Z-0CrdLi+_R_nnkZu8Z`Oga7?Tutq6l9ZSCVsA>Ug5s)VS8Pc1fikY~@buzL zF?N4nIB&m?y~3%n;7zki&U8CVx2M3tk0R{!PmqITc6NF~V+vc{=cHJ?>RlW)Jmz*4 zgecB$Bu69g=Ir*;T*ia7;rv_Cst4UT;}xXmu`06OZD9itV)dWYot&<^1$ev`3*GRx zj}8SvSn-KF$r2tn{E-=L5Z~E*bgmOX(+0zD3;#PUjy}0901Q|+H6pZGJ5E}E zOb#^hf@>||eX@1Ov32v~b83oL$+ACom^q*pIQ;`NHYHBhRcb{X-D>rRFCj%I)$FXK z#Ne&$i~TBwPyS((lT-bb$UGl2p?l$L294te=@g@h`}V!?($?JB{tX9X0sH!o7lJ6f z6i`NJj)ZX98n*?0`kBZilI5S+-h1sm(G{dB%r7QYa_zV7&6)pGEhUBs z24|c>NoB#6es@!UZz;i`IZy4s;7|pUHJ!ZzhdY8KJvQVCCR86Ik0O8i>D-gz1+S1K z6xB7d;aD?3?G-BPc4baQuC;2-4IgTSE}F{F{VpK4C+66D+-pJApI@lApvb>)oe5eW z$?Kn%$=W3Qz3T(9IS$5#x`g*3 z3tUXV^WOv3$uYt@sSqk*HhUYGZoc3y&FHb*w|hTEH%F@f>YmCCk)}WVLzYrXmiZ-J zL0cI@^g%sEalc7X7rAXlL4RxX{Y%%Fb5`JbNqLG(d{{}wpz&{Se8!B*El0vczqE$3 zAYPA&5JA09&Li`P8t1oH*}oQ6iEO~~LU zJ1D97)g{GxwXZd86t$I`qj&NW;w*K*hjA4#m)ShRlV5Z|uCKW#Q@$37Wy7qF*!Ei% zH<;`*Uuwi3wf}$Yy>(Dl(c3nvAfTWiEsY>Zcef%S-8|BYBHi5}5`vU;OP7RngOU=` z-Cff8kl)(oZ{~f^ob%0m=ggd$_df@pz4zLCt#z+EuKT*egbj!21_HUQ{3;3W!Puk6 z$81&%m%9kW-Bi`Oi|mCzI1Er*_OLdM1z55 zhkDMZB~f7yImL&UY5W6t1N);qB@@;|#R4Sp%E51Zd%i9c!mgp6tr;jPb}8-W9-=O7 zj|cGB8WgllxjYSPAi>710_0P!yIfkl4Dx~UG#-svs8JGxdazAX4|o*I#@db{j_7BQ99T7Gd3){8 zZEX&1>#0&nWoIB#+00$}wHfHt7L1xw1p+dx~mwx{I zjrZf)eiGputRvzfgj9t(ZOo-I@j_GS*HKOh-NyatRI)`bFWvQg0Ab-XR(S)EnE*~q zAnG$Sjf#|yAIYuw+-VKIPx9u-B?1RTX^8>dR5ky!_-6TMeqC$XXI9`y)G}*P^`}?)t@-mV$eja_6n8~EkqcnA>CF<%O* zs`W>(z>)lb=v`mIR85zf&Jc+J@<06?Q<~XNUd+_+^tmjRI%iJc;@~Eeq@|{=0(^UM zrQ!Q=H<`LuUB|bL8!otzknz$Jc;QKr@!5mT%!vClYp&+fLG(lJ0~O3j$jDgC)1~&C zgr~;`4dOK%<_83BJ73P`O=^3)zKWqSk}7W;Wuj*a_{O=oNAbM^wrhsnc%qy!l2KW$ z_M=&L`Rix*)kx>@lmS zZ8=(1Y`cOl3YgkPrVa?$mFiCNL9?ARee>AP2sZkipPk5SIPI&A(ZvA|9D;q z^u0r<^i3(Fy=MgGE{;z?Am*?=okA%Q0uq3JD!eAQTqRM?LGwkJ6PbQcWvmd?ot=tXAVL{Hf3N-pjKI~SlLv?CU4YH14 zc&uJ$jR|{<<#s#pV`UyUt?P^h#ZE@1mCu6$ipV?-st%p(Yx+y;+hfIwdZxrw0?sm@ zR|Nl;Wmcr_KSEg6k_7DqG6jaj>dYpQWe`3KxbUwV>!5<+Tz`OdmQI|!k=0&_|k z3~;k@FXGC8ETBlU+_N?{ZeaiI6Dj}qsVADpt78@({R3Adn5sR4rSCaZZ0Zld!apHS z-M2Wu?xaR5zjYnnE|@i^UH#VI0LKB2EcW9pks>5fX#m$LUaL^$K{E382Z_GN5kvG3 zsQ^Kr-YbrlsY=)1WoQFCbH`A~^$g%+DfbYZgm4AvW)mTOPvz@UirS-286kn2nr18xgyN^*o z+iRIK#$&J{PRBlrN;oe?!kR10Co3O;&fd=KIi4Y_1Iq^JBz&KJcSR-q{dcG|W6A3E z9^JL-9+~ey5i+(6Pq2<-ts7VWi9K0f2d}90{DYmq6X;c|{=F)sQ|W!n>Zec*6YcXJ zpaO>QvKNXdfBFlJ*TE->6?Xs-9Cglx>AEu<0ps)*dN9mobgtJ2h5#p+d~!7H=CTG% zi$i1N>WT9DoO|rBu{MF?{qMW%exyH-OHW=XO=$M}=mdBEZ=~};eG@qWLLBfz^-cTc z)*SNL=hp>m8|R-tPJl##Jf$J|nhyiPkA9QplYfK+6lCO!K*j|!g)kj1m2p0YEzq3> z_iV|Nhm1>Wo8d@#;)$BAEl1ET0!F%xYQ2G`3$`R_d3kxMr!pTw(Lz13Ri4mY3JDGQ z-6lHmsQk+JQ~Q&2X5lK0-mFw3`gVj_7sZJRY1A^+I zvr5vst4kDHc!z$Rpi7kW)u&naSZR4-WQcW4BpN((&02%?uS}Ab7MM5uhHEUYf2t9- zkl+zh){s6j5IiEu0)j{UdJ8IdEsL({Jh$4pG5b@qC_x2W_Arshmgr~h40?lS5SKJZ zFrXlJJU~LjO9y9E)p^gYt>~(As%zJvyH`U(g$~LA*CDj?uSt45i-!MSbqZmGnBdJ5 z%)pBG4^n>A_yyA5{DSQ{04*O&C9rf7Z0CE;{*0LX`6Doz0iFV!ldl;5kFFheT2lR5 zywec>=frzGfxp|r69hA2zW@r*-)tc*BJ_ttKE7|k%RVIf-+Nhf1l@w;m)=0@m3!sh zPrFnHq1=uMT2KDWsioL;Abi)N-WCH*9W<)m8Zdp%$uHbO0ND!vcjn)7{AWy_*w9{i z8}7^WXRlnl{(mnhH4f&r>gc}_l*)qyrT8I1sh|7uf1dJt>COJn7yF+z_W#5E!h%cs z=?@kF;lB#Y{m-iYpH=;Ty{b#ucI*I!AAb@-)_=&vSR!9%wjiU^Dy>{yAIO@s-57QX?~^2W$6@Pw%JJXR_!>e4x9+tiw3|3s7+X^*ei&PikPzf3XBi06 zS9+4;SpXl9{+f$ADjtKeah?o2!S^?bMvcAyBrj+6pmT5Z?aRtPx2${%PFE(@?t2gZ zI7dvsOI|NNkvG!Q?@{}CNzb~GMoNHjeGPA59^$LRpB zjtV5|9B}KO3i$ObNC!D56D{$dhnx#}$g)0n{$A%f0C~t9%09tA0cAhG2P83`llj#* z7Sbf;mkTI)J`r}~KUb6jBpUgDLXzWDkHD|} zKcj>EodGQD2ihutk&wl|_|-Rxg6Mc|3*LP@@Be(YQ4#P}i9XJU{#l(O!2bnME=L5* zzoMk%&nbZuYJ`*YC&GnkIcm1jMa5kI@_Y|oAoW%yOJZ`7mW(1>hpsUxu==*Avt zh_?Olls!G0z#g!^Cn)!4qh7mV3bjOb8(Ka8b6fIR1@I)|j*#$wiy#G1x6E3b`QUS+MBftE>Mp%--B@kbu4F&kH z(h)+we?SXj=slZOt^R&K^5^W(1d9hE{(Db9Xo3~o6Nvv!@DniL_@eob|CUM$v{WL< z9?EBV;+zBk*(Cs;&Du9CpU}qlVkRRa1BFB^DUd|i()$wjXZAcjOQ2hSV)t|Z_q2U* zqq+58Q5y91|F?V%DO6WMx6}7uo0`}+i|ha=)Lw@e(A`2H@G6vX$xnItZ@e#{@xCX0 z_%F-C1){{x*QGoxf6c9BHrSfzOKso&4OkW|mEv3U=>KGvi6OZlQMlEfE$UOR!lEJ; z=OYHTM2V8At!kjl)E?#yx=!gMz*SQ%Zz%u0rU5Q^nz{k{#lHb80~`2t==!f{4SazA zDy&-ueqp`&-w5l%2qJM#fFjfVme$tS<1fH!TUuTgfAq-f|GPH_@D~LoB_+O)*ELh% z%j+e1dS2^@>L&4Gp3tV}`KKOjsR0&Pg8h20)!)7KTn#KIE#kkE^G9O$pVYG!B=tP< z-$^}3Dq79b3ki8`P1Qu__t= zyJ>|0)ER|Cf$W5RY)RVcFL~~CkT5Ic7*l8>`anbe=A%=H9GYIm%>EFII4MyrCUe z|2FCTG%GMS-C`6jlq)M%Q_e>GfHmy$^po@{x_=!sCzX|8f|%T|^T2m_ckIrNNTj5s zItD5GWM=~-_m?`Q0n)E)aCVg#^q#?QKvf!m5y;%o<(l{;FW;8EV#wyfF_%x2g=&`Jhz`isfT*&N>%fP^M`SXxaCa~`NTl^BW6+Rk9 ztKp2M3+Y?gNOPW|r5W@#A^K@6P+f>J^{yh)O|P`*-F^4Yw$eQCfDA_hdd%!s@RX_@ zNE!9}2f=>T+0IUSd_fny9PdsPQSgHww4nrmUnf^Jjc>c2zT?UFBz6f-i3{h$wZjn; zh3C)7ot&MO^z^XA#Kii`Hb&M~5QPWGBrX-)7)&8|TSOk=2-P)`Ryz(r?L|N<&_mss zNvKj15E7D>)syrN-{*L9LP8=0sG|yMYu-cqVqgKqDaV zrhe;rRmYp*&4F>|X$+ti2y*%}LUk@b*(>EL0o%4ly`E1?_y`a@s&){c-;KhLkbg(!9jT9*OXRjWEMqZ=d*+)jC-joiuKn%7$hE*k3g%%YJEls`T z^*fJ>feEm@3dxUtH|f3l1f{g~#g9@1wuf;@+>;`ntVqaYv^890IA3$x7)#)%ZBOG_^=b`Iv1jR2GLY@4IzCW2S-z8u zxJw{uPD*O~y4Nv)$4bKkv7*Tz>~=&pIbgXfBcSEUIaN*cspM6NE$&H294Gzmx|Sid zSW0ic0@!0O1h2uOM~Jyf8CXa+aPI0?4%Pe5FNDV<-yxJC=3p7ATwLrE4(X4eRW93k z{u2mMeYZ$rHqRi0biPIOQpUJo*KZr*WPcyaz6M0^s*764|G6@05V&V3=jFrGS?^;c z0_NWSOf&vGSEI4E^+zP7kMg4Ov%xNH85>gR>#ufm_SMg890AR(*$07VoRHSreNjJ+ z&DR=7pPdyFO^Xa)(7@qvWgwMvxH=XNnp|F4y`q!|PM5-^4={^j(iRuKJV=v!z;gTN zL5*h#*dUw47g~d5mwFivEHTduepLrDn2XHQ87T5j#HekssZ3Bn}e zjTRZw5C2x;h}maUA8b)LB~>wOuIwhuKVrBEkTUf@HiAk(l=Dv=l~4NUDa?ymP*>p| z(GBwF{MUhU!3h~!!3||Vlt`yo%TrZTLv%+4*b!Jw63Yt#q(zL-<0X_ZOw75(tiJ-L+&-@n0sEy9+?2f&P!5Tf>b~4n1*+_ zIRLX4vR%CkT4DsJwt$_Bzl-wAP~Ci$?I{S#mAhvX$9)+&fhs{?)Dd*WYD!Z-zP_`> znuw9~DCE-N+0ebuVf!~LU0f8)@&o;gtKZ4ZOjY|8bUm9FKx|(W6q}_Fm%m#L7@Bz! z!7Ipd>#r95XXcoIeik6}!zjdZ)CV$EQXV_)?d`GglXH3%dLbe!9Ig*7y(AX4N&pNj zlAuWdOV{Nv5(aS0YZKK%0hi4*$)ZnL~)j$BGVvM)%P$YJoBWukO2^5RRcFsxN9A8dWEKGK7-)=Ov=7>^cRFEbk$Hf+3g>z3`|x+;*r zNfU6|^WO$A4-jl5y^#ohP=M3A8A9pN3(Se~qs&hTp!b%2eKZHVr7e$McRMEbi#l|w zzDj_sWoHx<)umwPW`9N}hv5!+2}v@C6-6YC;$znd5RpCxBEeW!F2kS3YedhH zz=Q7i#P015jDtNk(B2L7xHSVf5iWV1J^;Z7NvI$XnoSfw>xs3T0A?T%x{BLPyTMG) zKm*(Qcs_qi^ON|}Jk>nB-A<+24_p<8fOZWKVQenH$A+>hmg%1P2)Z57j~rdYvt&SR zKRAYj4u-H0@EpJtJ+C7o_X2xJEa`3Y$1S*aJqwBisxr;{zAAtj#1HHNr{ynOdrhN4 zz7QGk2jP}(UTWmojnzC(Fp~&LgRTXUuM0}OF9wk~P*%h2^|&~UzUf+bx}G=haRne| z9Mlh*bEvO-F*n)X-&sbNc8?wW1&^y_!7W+l6`RXKf56{CId;7Nk_1P~F;F(}l*%j4vP z?@8|#<%)QTbi@uQzjfDpxzOCn36P;Fp!d5!yyzibo3QobQ=mSdI=T$>NHaqLCm3kC zK9FqkP1Se@sPD2la7joQ9|N72ODX7}>|-V3JdFT73X<@>W$ZjkA&;a71!({WGypm> z*JcK?7>^#o_qso1Nc&*II&;-a@Q{#@KV)SA6a$swlP5O-Fzy`?Cx3n@b_&Rq9aYzl zr(Hr&@#$oAbOfSSZ~%>#!`38bWH}^YYR^z>5kxp-G*f>u|01Orur+32blwFb$7ULjfF!pua1+ z*r4YTKm^Yp_v|h_Gz6GPASp^i7KdnKw=tNK3hcN^w1;mxT*z|P0HCju%gkrbfPq6q z0=QiuT~5Vm{_5o7YqFq5xv{=g1nBS2FjCHHpXf>gIRkjh={74$|J>l;7>|4ab(DXn z#UriUbS!`_f?1-z-nW4gKHUKbn%3I;DCbGv=9Jrh!|DK{sHzf|TA(wi3gCp+Zgk+g zVvq^RC}+v0frZ!SN9O*dB>)fen5FoYRa$%d(`xqxcLiZzgk_r2abmDv6dqx z^rvuj8PvdcJzhAUm

    Pr6xra7M|}}#vq%{T6lPwshXz-Y?A6-qTin45BleY zjj+d~$^jwoAN0IIYQ7e(r?>Vh+Jg3U{Z0v@oXIS`#GDAK@zE`~3Y`S+-dVV2`Hu)3 zY|+mlUuotS393un`Nd``!(a5mh28z6(AVk6ws-ht^GPRal+;mAQ%Rko7$r#o?y_Yn z5$ojw&GMyafPh<)x%)9U#n|%W^?NqqoU7T*1Q`JXhY`JlVN+&**^GT;-b)7lU{hbUotO@8O zRDiN1d=E{LybeH~G?KJVrq}`y-;2%q#Ft$gJ_m}ufCo@dvwn9b&%vT3?OC01#<``p z?z6F-d2#-R)y6qyonI2D035d(8GYwIHM%h9RP8p+HiXoJY8|aUn{^EBMKS15kP=!h zcw(Tq$&@iSoVDpLQju3B+jua zs#?Ebx_|Q}dmm$b&hq9?I=*M6{FKW93u?mCGb9ug<(6n2tgG-QS+vKZYXFf-9n$$F z6|Y-U;qu(qiF<@6w8Rw7R)S&XC=7ti-s+IvGsd(>@(B{Xa*)TDbNAJ|-7&1*quCCH zI*`~=iQDY+ySgTt<#8VVX|7)S3z@QCy_!Up35ES9Dy$$AFnFOG)Rr<9SBZW$Z+`ejr|RqzTWWegV~k z=79q38Y6fBuA2NeFU8B)W%87&))CfB)eY=a$1vL@>V|Z>6S4|`xM+bvvT&>)kDfmd0JVc+EzUm z>5USp#Kw{F*$bnZ2(LoWd#ngD95gORKd2oRT(E>UPv1o`YMLKhl)kO#FAmvDFR#?4 zCh-utx};z+TqC_VGq7+bNUs*xFq2lx1Rn+5?rExdu)MhHQk9Kj2Ol0)#4qAMkCKlX zjY*)vu)MF*>SZ7I(*EP6hQfF*i_Go%Gdb0($gAZ@6BrgnqF!UH{89|o-e%r4Ns7JS;y*%0&2?3N!-En(1 zI}O1k*nw)+3q7^6@tn$>exo=4q?RUbj?(Yo9zRH6l8upAYP& z8XN$0W#md;JsX&QfnA*FIg?YxfdxJq1uU6rTA($3v5_g_s%gB~J7?dL%p!mKF*nTO z^JtLirI3ofitzkScn03t$t~@qTK});Wb9S3`G~qzd1@c~n_QHR1TL3XsMrDux-=z^ z9WG5Hg(&YZCNh8qNvHLCNh%myo%0_ofO9$3G5$774ByIr`U6yc*M#pOvHGk}_4k2F zb(?MRf&v|Pxv*0t_m$9#gTsjf-I+d|<96$(%q}82bi(d;mlzbA8SEA_Ob!gMwpG%V z(VDoK2*g* zG}h_ihCH`;()b*Kr{QLSsaEVKmkRSeX*}8{s}3{X-r>0o^ax4`ba*GRXMiK2ocdI8fFD;! zv|4Ivs?qt|-DZrBGMr1DT(zjS-xGM3KJVt%gSyfp&=nd&BL~!XSr7~Kn>TNoU%B!>%hDJjO@9OFaR4(aPNPgdgS^=KymI+50P?r}-h zBK|j_s~_x?()F!8gZk?$0kG`b=%o5w3c0skccq`Y);%2&>LJs0aGgqbg$H?XKcEuK z0z72j+=AY{!_!?rb?JysJc)75-}lx9)qe8*TcdP48FuN1LIo0_!%OEeMG^kOyZdI z;5&a=iw97BjXcG;_fZNsgg>V1Y8E#)!xomq!R;qz zKFsc0(R=FX$!&lOA}x7t#|iYXI9~4#WqrAbBu9m&oNN<`4vP5IuAeb~rA!(#5sq%V zl9)`s>$trwN$egrehAN79X=(YZp#KV(az5>I?kpw#oMI(9i=406eEB*n==u!>G|_x zW?QTCTH7;#V9y{H_H)Ieq@Wd|ZdF*L_tOhYTj^O_?mx7B8M)RQ9bdz*swEI+jY}UP zfb2d(E%0U%E1V|2fjMkmo3DV`yrDH8Zt7>q(3YGs337QtK z9I+)uH$SOnp^YHjx@`GT`zk%9?AtM&=9>UpLnf}y^~eF5Yc0V&*jP)VT1oXWdge3I zc25^^)yATx;y^Vp*6CX-I`3BvbrBqe&7>!aTtsZ7eRo2+#x z!vU!2wBt^MppTgcY6R+3Uy<)VtpJvCjk=2%ML}qg8^3YAHw6*&jQEL@a2-ESY$B?a zBCY`CI)Bj8Kue|;gZA7?pSfTs!*p2(*=Zq216VZO&$JCc`m3Z3(sG}6sJ>-XW!0=V zjqS^|KYuLe7fd1}_kr!Fp6Td|(-3D9b^)_>oT_5{h94y^$L90VoF`upxZP<}Rr7{b zDvRbqbkN7TbXk&t%!~&$hM@Z-53fw~+^74ZCT1o`R8h0#^x z(5Zx0u1|L|H!vi>$t&!R7oHi1S5L&S|omMks%rVTT za|ZHVbuQL7cfWX}99$f0HV5h{xfE`>94tla-WB!_cSq0ciMgLUoncy7cSLx2woJs^ z-kS0mv_AWjh{9{-k(D42wQ4dfvG_d&uoK*;2rpzcV+`p~-m zVcYRbN2`>GpzZrXsOXugVrbYi7Mi7om?Zq}lg2YGGmDIx@6I?T(XXsxGUXCqTM2`B zdi`xckkYixy!Ht@|BUbws^Me+4y_bp95-dX!+lPjQp2}CB4K+vGmu(BdvA)GOPU=S z2&ETXo(fhwL^r(wk^@6aed37218 z%2f@*%Tp#g`4HTBCAVKP^YDdyJ8%my-zYPY8V4HixSE%F6@KwXCUC=BkkUDKlGQi} zOP=B|9`v7f-!MxUJ_})$`;DG^O7(oZG1`SmKDXAGZ)xWk+ikA5=UXAN!lbuE z&MAl`a0h>2(~W0jxW12xcUU!EC3N1~NZuPcpU!0}-(@g7Id9!upNzCMNLvz1$k*mF zM%1kz%2R;96J7M|EMdoA+k2mZ;rpeJ{;NlJ&NQo(=`g zPfaLzF>iG0dK4X#YsWXl&6D{B7FvyFJ_{+2*!HfV35-w4)i@X;ns=m)2l2(&`NirI zuJWP+Y%FYc-8+nR+v4oA zDqS!bNx#;((mETpKIH|1re~X+nyXux$uzY0AN|-+&Ao@aH5})vn?pku==L2w*?4cX z933=1Eqz=}G;>)S9yj}?XsTZ7LR6(hgn}n;NBkr#x*-0CNzR-gZ8F8|x5!#^26cIP zAja4YYSwroE+PvUK?q);_FKjFnGrI-1Hk;wb$EJif)sOc-DmCZA8V`3m^?Y1`X7L{ z)k?>kKuXkPi^}^Q_QUoU1j@KM5s}$lNJZ5S8**AN0^)7uY?zB}H~W1YmsHJ(zpkDI z-9M))1C{r_gt3w(1+k~?_fF4}!^J0dg3fg6oCy;{uG-SSg|DvmEehuXdW@U%BDc8R zAFXVlle9>4X=rY!FL{MFRN_7kZQAgbfv! zJMAM-jr=s*@+j5!4pF<`bdeRM*=W(1R~3=;%r=HCT9v*ITO->`((+J^P!n^Uo!;o3$KkecnHHgDaC`+uP)DeG@=>YJpf-O#d-54 zs8?{fHe1g3!a7=CRL+K_wU3NQxNZQRERKT-3uUt`;4#n`bSFiw8$27Atm5OiN>aZ| zXk7e3v!fBeu=N}Bv)H(Bc|tB=%*O8>b}G@NfzbE>kdFCpR$+J}V{pOsl&eEOvx5?q z`E?1D`T$%;DG&jsvgvpDf420rYwc3E_UD*FZ2k|~AGDtVF&YJEDtfuMJrzvC7tk9$ zC^HrKp*{1YNKW1vN$;ULpJ_PX1DXDp*_Zk`8Rra9n8}p!oF+ikG<1Bsfh={6 zUB;tc*>}asr3{48%dKB%(H%97%N>22R-o2D&*@RX7vjX)GZvcCwAg|Wc~PL4hJ3g+ zBwb+Z3n{eY&-||9kLol|gRXPM>Er42{+XjtZ+ZFPOHl)qU}?^0;MV9|b=Brk#B>4m z?(uSVMAUvN5h(V@N2vieZJ`EXqUSKb>$HIp%3u->t@$MZG#O4^{FweFrxpSc-Lwxl)7 zkD0BewY9Z<@wO7x*}NZ>UW>XLs#XOtE*NVw-@R#t80CBnn7j+98=5-UuRaKOJ1kI%(upHTaCIvflj6q9mlj*Y#1UaGjAMdvx!7-EC2k2l zMz5xIn0=`hBY=ZjU#b;4iU(%#x00zy;}I}UW7DHd28O*Kua~*(>Urf{!xLWBxkpGx zw`^HP1FD^%%rRhEX|NQ48^NCS0to|s)lxxXjORI4HMt6UeGKaJ?ie9&p4l&60RTK2 zP!wCWAe+FFBo)O#Rd2!cgu`T+0Tq=^rJN176rO3J3ve`1Cqh8cv_Oluq-|re3cKzq z=>@00PGWg7#kDm3ujxbjPGlzZI3tCyoz)5hS+db&4|WlY88s_%t7}0sc0{D! z;3uqZj2rMT9|y&QNEu-U%0pE+M7z0*=ku|Hk45nbRga{cWR^rFbq=eqYpT?7SFc2SVaDtSgHL-G0p!uT1(6DBd~!D`VALt~cXe}Xsc>>Z&(yAU z>|0#ck_;9tR#H|rVq_d1MM1dxG#M)BYbmN~>Hm5DCz~{RC<7F{3-d1-WKOz|)+YkgfDy-?4g=V5l8q!k zop7N3;L6jb5^^1m&(biH$^+C>x{N;R_h{><70|MC-b2)TXah;FDT^_G6&ow;swQi zLsWL%Y=)9_Ch8-KortDkHAd97O*1z8?TkjH z^6`0$I+PN7-KOO#VnCb_m&994BUSr9=N_L?c9M$iLhCyN4?PK#;qCwQ$fL|3E>K&it6}H6$NnDKJ&R=(v9+|DI(?82vQ^aB~D9dvw| zxiQ_K1zx3hK05oMT$~K0F9v=JrVei*Y+Fa%FP_C+z>56cgcl-;;q*B?Zbg#d!#vpo zclc}r`|_2)K_G5tbhw}23!hN1atFSXbw{tO)zerlEZ?d2*cPfg&3!?Ih2HUYCr}*k zdzQY4mffoWJ-IF)`v~S|F}clAdkJ}J1r+k~O^)&jJda+sW#~{zjA#9ZFTn4L`k`m+ z<1?ib`tBj&ncU}}=G8wej>^}_;L99u9O=NN7gP8^RA^lZn!*FS09Q>WBtm93c%aG` z130YNh}$vpT7$@#bw05UogkG05&Ho0gu(i?k>mnh?u*AC;!F$y-;fHBh5nqA(P7&E zndf8Kt6e=fRV5~+_&x2mj#=u4SHn3r_<2Le)%I&rb{mA|&6XK;!)D`|xsw^UU8x>C zP$*gMW<-~V7ZWuswlKG;8=I&VM&<40RB;WC>JfoF+DoJ#K=i5pX{a?0F-J15iCVS$ z@#{~wga6^g6JQWF%ZB+I-BJ{@CN(opiNlP}ybFD1TpgmW@o9lpy8jtSeiEN9ecY91 zHmZ|4J=l`9sE22cCT@H0Ua&xzCZo;hoQu*)n_P`Dy4}u6r3IHn*Pa2D0mA9|mxfak z(lhWA~~e4%+4p{eR)7R|b(Z6p`xdt0$$;$pGdi&7h|830O>M%QdaLR9|CL+C^} zy6I{a*G@uPsiVa9SXC#*`wzpJz%wzI@z`_e++mXcG395Qs?Y3f{`v)_ zz14o#{c_oWfRwjcJxX?k>kc;UB_cw*hi!hreN`#pUFi2+NQEhmKh2*39wu5^>S04o z0DTLvHGhPpd&6;_Odz$PzVtjeM81qJwF8?Q{U*spwpp&R0`Nxkzk}+8)X~OMI8ptx zRdPDtOXESW5A*YkNyV1YQ7YME50Sk`dH9qHwR26Hm%R#`pYUl___Vl3CGRo9>($gv z_YbzOR%e9Ll+1K#ZHb*C8I4Al51i&ZtfMr%#K{zPg>;Fy6#GyZZT!rB;&xL(N~(Zo z<6cP}6dqMn-s#D@{Vx6XbE}gaYyBoa-GXU==aig}pPanBJhS+W5H}bB)Jt>k4VD;S z9Ct0q1q)CLGy@setscY*h5EUAxy`1c3l8~P#&VoO3D(j#IsmYKoX{L z2I6agH0F`6gX6BBrw?U!Jb%dE3itW-T8k?ojUw{FAH&2n3(;C9kI=bEQ9|Uq>zC0x zFfvE^b?a+Ee}$xaNp+wsFHL*Bl4hwRCg8VwIP?M_HKG``rT)s8c9o5o)XH7pMh?rU z1}(Ui)i>_#N|5!9=sxVZQ`nx!b~l51rzM3Nom-MoU*X$er7t?kjc__9m8pA@h$XpkMBo%_0%VReZH=si#f_sL zTLUk|RVM$;aE+f#xBH?P%-qR#O!th3JOJW-e`+7t)(-#;VYu@@eBbJU@qp?)1p8oS_7>h*yvZQ%2418r$i<;WrA9dn* z749N_tH^xeLt{OAO&&-ubIM|JGm4MQu|AA*CEN+x- zMXrO6TWM8t9T34w(*PV1U=tK4;j_oVbzkmDeyFo}698S%N%-5n3AybVAc4?x3u*f8 z;at@~M=I`JuhTJh$%T~o@aHoo_D0Oz2H3GP+>M9o~KrrdHv!{If#(6dE~d>M|&BM z$V1#bhlh#zNSF4jh{kI*g5|#Aw@v?sPV?@h}q7E>*Dc~H69`0AB<|L$`f&1 zW>Uo2pzZA`dXV}!OdiCHd?1VwCEWsKLPkAFb>dBcE$4JEklCMPV0=*JNq8_|X>K{& zL5--z${0LZIo~1k=mi^w22cTF?zmR1ccxYoU!7Ym@tYgdX{!@$&x-|u+ycz>Xrr(p zAeVE^r~@TFGxvHN|50_B$r3JCh53XOz_+lDgQ+>_LOt^F6uJRU+xZ^;M~{$@h_ANp z+`gR-AXk0TxE-Ahc|5h>8`v{?*iIE%X+Tct_aWnk#AY(vsWjx%b?;6n1{6i+p^XAn zQ+5L;jeC5_0y-+$iz@-=u6-&dzaXe;uJqK@aeQ`Lba+J^BZF`ABhKiO17l8!$Flpf zn(rH$pTGA@HrcBala`ew12J&%5IZqxAW)`aR@wpZpgr~iyP5p7?)Zj^Re%}EyQ2Pb z@)Pq(UUG|vZKnkf_cc;@PoR`0aV6i`CJygxD)lc%xj?Gk!2bR#F2Tv;c-7bFc@bpE zwT%a#GpA^`rbYA4V#h_yW~JXd>{To(cNg*04pxrC7OMhr+~+w!p|JfGC$sX(5}grq zHxVTajy3UsTJhj8{@|dC3YGs9L-6u2dyG!6sl+g`1 z-_CaXt{q8jmKMjCA;JS0lHVd-851j73nCYnUu18!&WWM3(rE(DzgQq++R`1QGt;1k zzO9{9?Z0IJLwEym0qiu`82~ay9s~M9s0#P=NYRguT_~W*nOn?zK0u2A0e$J!_MJ+aU5d+ zD`5#CThA!7QYdseCe5`UAv~E!HLJy<@?&7+M0dP^k0h(?AI9mimqo5IkSL$JeVO<% zRT2GI^p5a|kr_Sg)5io}n}Df&RUhS~rfjl+8RmX2fIPMnF9PZ~ln^};ZyB9xu0ml_ z-J-|H_Kb%J=*|#&m;zyxegoqTp|GYjHV)rad5hO&n4yZUGR{TK__ee;t^02rQDBYH zl#VP}sc9M&$I=fkX8X_f4eu-FT;zcCa@L5+U?_bft*p}{I-SMU-Z@cF;EB?$9A?9> zHPgtoqor>KNQ8;Z7aaKuUygo0^rLL!uvZ~Kt6;%O7F*}?k96J4tWw05*!>wb%X{O> zOuEsZZUBcB`i+JH$m_Mh2bmVLGBE&HV?R_9B!u^V^fnQGE2>%Gj?+Y zUGq1t*pzX0wGkiX4INX0$W{`mUbdCPR^Pkf83m=s2syW0onUm*xCS9nv2w>~DgH0B zJ{2#~X?~#dqlN`sRkT?;pKd$-+&|K@^wPthR7znkbPC(r9Ur;{59hG3*MR40>#@>f zYq8>8EnyM7f*s!;P@RO=*aQkmr2!4*%M?KvU|;um}dQ+DQF0Kkfh`B%Y8*Opcb=04eDu$+{G5{2!v-H zk+PA@Fxwx!VM6CSh^%qm4W#LyT}U}YD)Nct+le%ZknH_HRmbi->IBXo5T0!hxrG26 zC4)VDp`DCFze8nrrb7hiSdZlBUb)Y2K=^ocE~}WFD^D-mi&M^$ubUGUX{U$lf!orm zU5ap<=thuR#8bl^cSPibjoQoj%)QqqDo zmWT3*#e~7Ms<}8&1&o;YcAk-?W`nz+*<`8YP*tW}tQ26I!kj4Hj?9CtE`C$C-J0aB zwp!o=t4`Oo@L69f7$puo=9g-z$;hWL*tuqnxppqT!XR*qR2N70z94!hjvwvJQ4;2` zX@QD5)nN)qWxv*KoJ$S@Z>9)fx;c*!MJ+c$n<|H8FL{|LOI6~YLoi!=?67x%*5?FA zeOdFfqwO>#w8yF>9jo^jybw7oE?v_=i=$GDe-Qac6R)njCwjAdcI*ChC`x55xb(2z zqs>-&{WWI_7M{N@VyG8LLB_VK?7y+-5M245D0&@^*c=@~!Y{t?Q0D1~%x+yhe1G{} zKm`!jNyYNX0NHI@yYF4!0lAWrO@qw0=3|$`Z z=!-Zm^*CRX064MOmL@v-=0re2<$H%L33IBE_2)U-_y_@%d}x!Ctvq?TxLW6*+AQvn z7qGO*!ru=J%4rBgN>pWr(+NUnKiI8uPfi?-r&E1~)D;K(N|EYK_iy{5ykgvmEPlLp zj)Z1-<=)9m4VK`c(wAQtrEAxJ3V*kFGY(!#(@h?sIZZm0Z)W5T;O9ZT7-G09A(6*| zKfBG6J{zxUf4;4nz)tPdP@hIS-)!`It4WW~P||p!x+;da>f}G+MMJ{Ux0AM8HCSQl zYY830aa#x;a$hRY@InxBN_M4-%rJ%TrH?1&WeEy7zGd?5!hBI3(M|1D$e0o_)ibga z3*W^K2xQR>8yUQ2!Juxz`XHjucQ_P;eL556{>63AWG;`Y&1@M5&k=AtY+z?ESgTgJ zZq%E5R3sKKJ~JESGyswHVbw@I>_)w>TLhw$! zGMQS8|Ha;Wg*Cmcd!veCfk{z7R0J#&5D<_i9TY^A-a_b65Rfjt1rQY}DyV?;Dm4j& z-a8__6GHDj^Z=m+&cIpL{`T2xeQV8mF3!cC7d-Ib4F595JKpjuP$UA(Gn4$(Pblan zhRdid4;Il=ohn{`?y^yyPptH zG;8HO+fi|~6gi7-4rDor0f9;4cJ}>~CAD9pIOxmWSAZsYy+XG-UEc4*8Gnt(HG&K9 z<}jZWdPK@AGCybctrZ!URox?FOz(~#1%omKd08HYmoN0JT8N&2{&>4SRWHuY5bOci zg!bAk!%wOXCdn-Z^D}nt1&7HP9XlJ8l*FBavB-xeJPDMyNUgO3XH;91;5Q!0BmJEW zg9p5s^bdhMI=m7HbpqjiZlGDIrbR&A^xpwKtUZY`eh*!aX&L&@-VIGiQTFs^G$C)K zrc?n>;e>KG3Za+khX*M$uHCEWMhQhg74QnbX}V~u3$Cw;Qwbk9am@w--hw8t(XDgy zy4L}9=(5|h7q@r!_sMOuvYW%S{;Mc&K4{CC3@WyfSF#iI^IzQ9-Q5e|vE20-9!3FQ zhQOj+~>m7hAgXeQL7X3K0Jbimev5$)6;3X1)~XI%d16pn>4nxWV_!j0=@E{ zqPlk`k4-YC_Z!!H^TM~lL@0~ej7U~@>9T4W!u_Iu;gtpFoQ%Gj3u{8`uF0zijAuo$Q+rY=)Hp^fK=_)r;c1 z`iBYW65FRMz=U*A{yp0lXoiu|IDpg4JI1Sp-tuPRkVp#t@QkCio-WI9L|A3?krK;| z(f-xUMNOLz&(s{jlEtZXL2Z-IO9F-JnE>J8khx`xX}rDcg%b{hHZE_m*>+D+jQKeh zanICJTYbT{)sNWQ1kSL=GQ~|DHfV$~ z?ks)wh#^X}3Y=M()!9#GKJcgpm~n@NeM_9ul8Zx=duh(1$F~(>nQ_kd(F_%p-kJJN zE0b^CHlJd7E~U{OJ8et+Y*;-#rc3MJ_!G*AyApcrMA{Z#^$GwSZZhfWm%DyGLv_Wd zm)U&FFr!qxa$XY zo8mV)hGt8LPNZCip?Ms0R_f0=Cox{qQ+~N>kE5-DuV4zO$UbU|7Nj4W+@0VsQlI%& zbtLlS#*HRqRm5O?9o(cj^uidQAfefF^V$xAU?(xTsILxeNj2_)CfZM1(&T%rzrNjx z%9T}68E?_`4yB@`=hl4;pt}Wy@9S4pqD6go2q%hwy?a+Wy%fw`BHbRM#QxA?S-W}B zr+j&`{=GREmpm#1GytUwV}7p=N%=GY=DP9VHA@k{S-U^|!_GgerQa-Hf7=($5+#E@ zixA{Af=-IKNyDX6s=5F6_IAW?!_>Dsv-tj;8yPG02k{mACxVkKhJ?M+K1-8V2t7DS zm-EU$Fg;ycRWp=Bmc2X0pZ0=z(q_;rTDl7lYO>G{Im)UMndF4)bJMTlv21)Y&Z!zd5%FgI(hi@eA$)=q(7kmU4!atd&1+u! zGBE-@ibXy%v(wb~Pnyv5(`w{p&-)GtQ8bOKnTx z1e7~eY_=jIB&A7H7a?KuDbR4b7^-A$J}B_~br3OPmx+s}kUz0(b2d|5x4>@*X(ZP0 zCgn>IBQ}_ee`Q3T`P=C0G)Qvc6rNx#g~F!ZxDwWH?|4^oB^3K^p=XZ)tgj^v4t4DM z{as@z>(11gsR|~aUCDGI@7E)?_>dl_wfC!h%g~e-B4W5+?E(+`cCuG_55D3vecQE6 zqb){4EECb~+u`L<;^-sqIxVMoFU78p=>)KFi7ut9%X22cMnIZauq{O7hj*wu%^}7{)m_ zdrg;b2wk=!O2=cU*wpl7adhe#XXA8cTP#0xwkaz$a`DMXsdHXj*6iXL)49$M12(!N zJtz4cZUvMie%E7=gcmDT*9mCUqt+oG=@M*g}!ZnkB^gllmHwhC!;eCOb5HZHS}hB6zTKqcgdZ_As#_>rml&*s!Dil zZHT7s-W3!U{=QgbfstPx2vIZX*j-Hq7OhUpeQjCt^ETt7748c^7;N+JMK4-X5#arM zUM@DLE6d|9iC%x%PJWtW4O8Y~i^f#NFZZvX22u%HTQg^1a}u^?TUt)bQR{JoO9Kv@^|~D@54Id70p%{!4$K5s zRief|?@Mj?H}tI99^KbhFl{|jA8#4jH=#FlP2{dR$n9AzNS+Ua8m>1=dJZ~5GSmka z^E~${B}AvY^kZ4QkxsjMYTVHG#y|Iz5C2W-#%icCQj>y7ym3#lJ0AeJ^y0sjTKv9e zXI8C86GHy6VW&2L=jb)zA)q?(jVOxOpn%*DNoNV6P#;!;|-nyiy`gu?=(<=ve)cND^TLsgRZ{8#14oeXA zhx6f?tD@g=k}IM+7k2_thO#USB0(&I?6MwM*Gl@;FTNe=YotLPSq7vQNoW+hRuG{* zL_>M4JF#PUjDcP~Is0n)y$;IyWgTLib89;sZREPkS9%a8vVG%_7yc#43s9?QU_eXP zZ%b=HFIw05SLR@h3SnE*!rne87C+cI=DP!StYmgHM}GN06f4X2Td(3WzwUBP(yTuG zNr)A$IIZ{e1@B@cQhkz!j|*cZL_}G#-%!KZEKjeiwrh>Ih^$@O$FW*p8{a)7CxIOr ze%_P=(Mz118ng)>TwfzOT}fgK|6vxv@9|Y}tp#kE<^z$6*HFdQAVnOn3XDL*-rKR&7o76$jYT}!%E&P!f3AYO(bs4A})px%);?)AfujM|FP%q{}=?D1~T5L?GCA<7mdbOR30eC zw}e-RFNlGz0VHF|m8R}=AOPG(aA}9qeGkXSI>p~VU1<>q)wm@mX%kQ7K+zr-vVJD8 z2sbja9c^2xLnSp_H!5z~XO&5`&m5Y_0ys_zVb5>j=gpj!df9sjp5GpQ+?*e;=^K+t zt=QTga$lDvs8I1eYj<;)OMe*fMeE3VsBj@CQ6{fVWt=n3EP_Za>~flfZpWUoa_?%Y zQ)R|^~lvAu4;dJYu`ji<`uAZ#)1ybaF$1ZXQD-Cf=|In zIc%s1=8bNc&yrC_IL-Kx*@;L#b$$reBlSym>h$VxH`f?9{}^*EmhSU3o1i1S=Xj~L z?lvexOufB$y$?w|51JYVwzpWUX39grj-Klf^>o`A4Q&d605?d>tN4NWTc^%E*E3Tl zf%)wH(r~9eyc*hf_C(MXu|D?`8D)I{nQh=*G4*3CG?cagV7$^Cl-PcMO6NY@_acKw zHYc`bk0 z^{R<_Q-)lM719}^p}N-Hk?G-~?@gpnWk*C!jh1^$?MUmzwdP()_goAa_B?8d z6mYsss2+XCRbyCPYHe7C<4jhh!^?pU9Wox+;G#X87{6C>6f#g6Ub&zfE0r5hEG@a$ zDmaNCB|VGl4mZ7>WF%sVk3@m^YN#L)mP|3iq@mx+RMY^gur-4euR1quhthfup(?7< z{11N~A<7`46knr0R}RkjYKHjrD~hjLPM5?)r%?@t-!ViP)nD_8*xVj4i?;;BWywrp z;gF36){ifINzgWm0OTdeSWK(|Ckf-5hICJ{b)f%lS8xKKSXH7nINUom{Iz29%P5?G zUrLKb}>tBSNzk)<>;&$KKPHG7aR>u?91X}G)*@V)X(DVs1Xz9}<7dCd5TN zd3M$_+Kb5CRdsZTvlI5-pEI?N+osSQw_J+g<)h0}1h&vcXMSn*s&ndd+ARyl58@|@ zeE1VNS9;O_sPPck*7i}XuMDCh`7_T3M9x~Kw~c5Y0@qR=x=9iz13qpN&<26gozom| z*>&KCy z{0a{>NZswg?t^6NDuu8qnJZ|i@^Jty)7?PfhAYidQIDxXMbUFT-dlm_VGh@;i}hyQ~jN0Ly^Po8GbsQjB?D} z^w`l0&)_8jWu$eAtrZH-yvpM%yprfZzr!~a^Tu=*ejs8W7(|@kGyInQrQWHl_cMoP z7V0pv;Nj6B5B|;2asEKFVmsdQVO4*oS>Mw8m#fH-=%TWi!IGO%=fw_1ETV$oyPk!W zKQd|-Nu56}RSz*+;(F)wgBJ8nT1N_=8xo32wMNpIH5{inQ6dJA1b#FO{E zr;61e>LW4EQD+9#51L0S{B^X~?Diy|948rZKa-5y^B~Dcy8n+PHQ(FGPVAC1vGHPaTDJ$K*@qTE6O@;Y_qm&v`pV; z7fG#}$6(uAPY<*5zWYV8aU&eo2Trg!>(&EMPLeAsD)t^p?%YRL?nQYXa%!Ox07qhe zqlG)qHeE=F{)z%rNNxA(4j*1bO12ALVJ!E-&~ppoS+pWHgqwWN-7P^F{-(fP@;z!y zpPq-IM`(0yW<$#mICc|eoUjIF5^7~Ov7%%W#Qf{{irl9)(m2tz-sVvDZx`z1(xrVj zL|xZlK+>oV5jTSv@funN_~ksJM4`*7VWxh8{OoG%rfJ+>Kj3qe)y9cX@td|gUg_h< z621jXT6mu`BYD4CzMs{H(lL&g(#UCjTdeqsuc8FGVOB`9v$4?qjfP|{|2`;aX3dH+ z1R|K?gdmlvO3@rNWbK2ktG|Lstg+A?#AXs1-^O}9@NHnVp@;p1 zuX0+%qR~LD!^FK93jnYAlVNlNK?~h`;pt`_qk%!(S&Y15o6{l2`b-|F76y`<26lz+ zM?^w_Ytxq)Ly{%G6Clcc3O-G8VaGn}ra2`B7?#4QMo#-j-E-3Xz$azvL0HHHho9M? z1ho$je@*KZ{-qA>);VQBR4rn1j4+%)fH8IH{z{qCKuWmjo}vIaSA2GUX}A^-vY{Rx zTpbhW5u13XnoGY-jr3zKEG-Iy3?Nk#rMF9fj13N=EcM$_K*IKE47{$#9n1sJ6kCfg z%Lyakh-(PUTvaU?ja~AbJPPP46yaIiQDIoZDyAp9SDl3vn?m*rmK_W`N3o+VblKn! z;))+pWY?-MEYBB7v6~*+#|}@p+I9-iJVbU^#3nHqSO9gYZSui9(fzAD{9)0`P#J!@ z(CsRGfHSvFN+`{hRgX@%1$ju16c#pI(OG85LHiOFo78F-69+aaQUZNGg~)H5 z^Ch@J7cHxWPTC-hWo;DQYol$%)9&ykCX`N{9U^MbT+E-t5DMmIghDUIKmBNlPz|$m z%j0kJ%IEM@&`SO6b=pi;7EX zi6{hNQx1+10hf21hf<2qUTE=j5(;S)8ssC=pnA50*eN z?e(>KU!VKqr03wIqdOluo^m{?SUXV1{rI?fEGXiMZxiCi8pTZym1vlG=vi5zm|E3y zT8177LqqsHrFN$^B*cz%!pp+^xf9LeW6jR0DyFTgNTk5LiI^dQ?QOspZh4#DJp`z9 z0*?KvMf)9bf(mpTG2C@rO+9``vv0^~5c0O5d8l?I$7Cnw+=Gikco4E8%iBH*0NGiH zx_WNlB`&Lx?2ysc!f6)hL{biRi zi$zVsk#IX%Y)>_oNEk!oq6BiB|>v}ic%gzrrteZeaRH_KWE%x{HMj`*@ZV76LNN*Gm~G}!EU;Ze^&b_+-;1_r#0e6X8J0U&&17W$fP6wdU zH}@ycCw%$?3$O~16#N~}LpEHP=b}Hvj*0PlO9G{bFJIJA-f3b`51|lu_bL>q2TRcq zP7mu9rqaoS(Jnksd4kKRTf@)`Grhfjon)7H zjqc)=LmUN1|si>(62#Gm;Yoi=J!|T^yZGLs!@&95pMXM#yOi7bsE4JAL-SZe; z(l0yy6BA$G&jsbxK~0Tl_MV7dLWcH-ka1ni=$xO_I>Av9+rLwEZ_|mmmYPHlOCV>X zEaHsTnF0~3cfwf9iC^OaXTElqVuM+&HS6>&!Z)1f+unQDW>k+2JG*?4M8>$k^Z<#7 zsHbg28c0;r?9;Rm-Mf-yHzNw#ziY?~yY@$=ss_C9eQ0tZX-#4py(baLelEN+uKeES z+%$+&rVZP@M3%PT17W)*DWBzB*dD;7v1 zfzj2Gdt4<7f+6;+{ukNj1E2qf^Gfq*gmFN`!ue z<6R{0yI-ytot^l-&rp1={q&}yDo;gZvw=dqx1`?KA_if;HeM51Yoj9;xp=dqJsy2X z+#A3=Y3(@?e_4=Y$aR-%ZHq{dO4nTY!iR|)7IZk(+zjE&Tr^#Y0zrrWUCD$AfQpxn zzb0Rz>d^lf8xxZpEV8=?*zTL+%sm%KY3@qsmdBvB z3UD)>+8Qaagd#0s@H8}eD^I1(Kr6e@&~sT3J%$HCDO(ygTPNny2A7Ji%41cITH0Wr zU)Tqay;2^1t`)4YD8I_@uNS`ed=+F}E+3N6nUO{XZ)2)Q>imbMuya{F+KQksD z+S~p$8Gf`&uIr+Br!D=5txGSA}1yrrI3GiYKja2mn=L=sz+{r5%H;R9&-4oZY$N2aqZ3$(#nTFt}IO^^4zVN(cs9r)}>lxoIB zgkVx|AWW?TKWuI;TDSrwiny23joM=sF}e6NPSEF&hSl1YsEiYZW^Ma}B4c>7i4>a` zC_ED`LpAN})#r@(-ch3H+PaXIEO$>i$hP9`T?913n5^lv$|D+_;)cr&^cp(suWZYY z@uDd_E6&-2urzhtmVw}Up7_esx=0!5Mg@5h@($hYOIvq0`Vd?2`*cJ3jhhl*oS13W zfWL3z7bSG=z1RhC#XXwVNHMzzgU_uPJC>zERtxrLA5$PS!s`2>NYadrVU z%buCaC<)h=VDjppg12Md09m~RUgL&63Ug_T*&o#S{K98-ejdN%3PYDg?WeO#32Wt& z4tMBbn$TJEvf~n{10$q6=3T{IvBU=uM(v1d6NFOas}>*{fRbmntsoXERyRYUc|G3| zYu=tG`^YFXN|sw}>0sKC8*gZ4^Ww_Z^o#H_tes{y%>Y}Z4)C<{zGS|*-i(KgpmTx~ zvg&-#Q+ZqCBvNHn67VH*1xMDWa@;Ly-&$$R6#>Oj3_DGK=_2BhR(9KI`ZmF5HrxZb zCdjSi=e9T4yidUv?g|aRtjMaE)dkH2SwMx)sdb+{|2l`wXo~>z#(6Wt6M!mX%c`ZA zkPn){wpcA-c0u60U7yIkngwdzUXaRf5oX&A8}3e& zedStJZ_^copkCPd`q8UPOD6$}zlA}EZRJ+#)&m5(P28?r30H{lc*YpUq0=l{HG39n zwR9c;;#))u!Cvphy#ynki(Myu91O2_`tY23f$$myRbXESDPHV;pXuS@V2-h0U-@C_ zP&0DwAYlB&&t3;;0{Mv3-cI-7k?9026yRC>FhyBPqF+;KZx4r-kQDfV_0%7EKAf(0 zYhEvYgMkLjpu@gbBtFTea={c=Q3POz+L(pb{r9t}=J>Fk)Y(x)ZsVN839W6 z(-vmTzjxlWu2-F@Y*p)Xv+$SK@2Qr23T8g34$s5L5dGWSpg}7)k&;CByjI~!ll%eU zQ;_Y!5Sd54?O3GQr$eB#%f{7}oY*|-n0eC@tEt^}lPusD7u5QiTD|Q+qUS0c^$q8> zW&SZ$T79=H8u?uidOO#h#rG07YCQXHO2mFBsm^0 z^7EAMajKvL40>Fa#Qj5hEetgx)L`Xhsri;HEoP09EOoy! z2&j|-QQFEk)IRrBXf??Nu{-0Pm%aCC7>V0#@eTZp3i?hZ9K+saWLQ*IXOfz{f|5pe zKuF-&rEjN>_NC8C?WzAZAY%+$ZGSY*NqogoV4I;Xq@URsXkxveYd@2%`37BQ@W8Pt^Yu{2z3E`-VT}!ELvREVx!%yKhFH!C)Ypupbs2l zP^5oU5j#Afxwgj>YaO&@1-=v2+h_%)rN~8LdYh+BT|RjSkUjl$k)XC$&dVJ2lTsgidLOZ)$=nzFO?Ao3Q{-%ykMCl<70e(-@w2V|zh^e*PU`|pljTGn&}IgJvMh_PSEfa+YiY@f z=cso$gy#aoF6o2&Bqa>z*q=TOA(^YCxO3D*)9~Q<&6w!`JcEwpNkt$<{@Y!jzJGlE zz2N%Esu#9Ir$Mj#cxs9q15>#S6P}7`r+9~gQ>)>zNVBg~$8Gt;GB7MTESrnFb$lKl z$7cs9_|Os$8xg+WA_w)(DmbP0R^vQ^4qCw@ZBB7|{Mi5Ity{ELu4JsOt?38-So!^t z|FKy9vmay1NCE-^fKLGw4u1{&N7_eDwbg$HMmMB}eFksdyrH{r;TdTa868J*c6O)u zwb;Zz-}mnq_;VBdyI*c=lRSCS1V#{{ik+M{Zam1y$RNd?Xs-n#RHW1+r>lXoB5EA^ z_;I?lj129yYd1CM?g$G%e()gZ=*53_TfeQsKOYILz)2cKzN3`XR2@tysI^05Vv<5b zpGPJ@)zvSaL|=>1B!P+CH>Uq9_w--x{W|sWI6bjB;%{9nIJhW}_sofp27l{egXMG| ztYfmb9L9fE4}bB(M5qBq^^}0~@z(!4*FfEyr0g;`bXUQbH)6-SMuAx`*aF~iT_0 zKV#PaE};KiK>wE|@~_Xf|NkwZ>a=RCQk!1t%u}nseXvrm{rc&vNNHHAK;%*6SEfUG zC8aPo2`o5^vvJ9uWB~%Ig-3x=l{IZ|0GlTM}qY`vWx%J-`b8~&=3O1 z9PttJzx8GRyeH$UjNL5{KMKi=S9`wo5)c#YD~#Qw#{^2h(?Qw_>~vT|Pje|qEp z<}V~cIlK`Np!_$t>F-nch%0|w;9uPy@gPL*et-A}p7gIhWa>ZAQvY9spEwej>4`jv zboCSqbIFg7*iLUePH5J!y^VrHEc2)0(OoqrQ}`Fp33Z{k^?WiR3md1$!-r|k!IsQx zB9VVBIQ((fW+2w+Q|+oJ?6r2#X;qdM6i&rgCK1Wsk-}qV&bF#`{oq2mT`aOyZ|xj9 zCCNtfZ@%;Y`CX6Sxj&A(qfeFCl>#xY0ZwF;@*(OpQ(^XtZkRDW#v9gbY>SojeTWvcuoOl)D?mFVOyO=oF8WH zaX8B`(3PzilF|ic?_V>NQ1H`IY6;nzZg>EC9SwQ4QGaIxl5nXeoPq&9c@J>6u=0__B6EA+<0}rhGvav=gVs_#Q6G^nacX`pv0nUlG4L` z_NhLzYCDwq+BK`ya?>^(@CbO?epamF7_@GR?Pg?#23#6h-gOD~zHi4+*}UbxF?Hf} z<;IlGGo`<@obK1qM~Imf0{EOQV`fbDM95TD(rS_@T;5$=|P8 zZggecwYC}i@|s-iJ2Eba;e%%vz#q<-t~(pLGe;2J*p`kR+z(b^P1Shmnk=8cl#2XVS)NC=vrhPdc3xajEqdpUK;g< z&~SStyu)calT=CqXZ``=iC&}!+ zku%!?8^<1!7UZFUPSMnl41h!wb>B<}(DoE1?*lbesz|3>FSSUcgsNn%hw>p0AHJ>J z-Dapd$`VDsmr@8R^~$3use^GX*mhQfWxfl zFOW@ZsuC&6C+6qZMYkvLdoH^V(U!r*YaEbkcNK2bx0EhhX5xoj@?BQ$vx_vDNYSv~ z5qeRXWFfRBY_`!w6wQA6R{8KC09(-Y6NB`ho?9F7_W>{2-aZ#ts-oh(cL(O`FYegG zCUAgNr@3laVb!wgz4IW1%#|gZ9_DJOrskVz4CLE`^VdpzC1IS7536+&fZaps%-875 z@X1MKgoas1eHf6QKmaE+U807D2Btty2>6P>UX-oY3*#Yy)zn;?7|2?Kq}y{rqW5w< zMX9*s({I^IL@#fC^?LeNez?nkj54<{GC_6Yv!}d*WXh+>6gpZalhqLW$!urIQTZqP zxzMD*(oJ{BWnpN|g`ld=Oj}g(loly6p;OiO>+NVaRI%}($c7=y^628mm-m&pXJO_- zt%l*o)dDHMUV}c?e)!0hLr}@QDS(WF_L)>(*S3e7n( zWMmW?F9J5?9b)8>_0|WE${GqfB=uiJAQa&$7s5I^`oDfjn(luCLIXtGQD?z%Z`ARw z!%|#7W)AVphUyi?Ux{)re~{*a2`dTEmCQVO>g-PWB@)=mDHvAYq2LVVP{rW-Os5L&wEAbhJn+hz+GxtCL$q@XvXJ{h#o7*!&=aj0Gv7_MVn;`f6iX(ep?&=1Oqb*4n$?R{fK|XaD9_p4=`Jj*A zpTUrGp#M2+ILtEzXp_yMPc^3@o3K7;@IwY5`d*4<=hdlj=Zfyq7`Ft*uok_yZ(W~4 z0`E=F%tC9i{t-N&du$~AKEks@;=e%lAgzn@%S>2bpK?NL3b!t{u`TXr=GhO9Vu&yGB zbUuT){05Qj^%l{!;d9{*UyJkn6ixCsXF1kPNHj2Wr~*z`mX%RN?5$Nb-QjgBXT)k6kenEpy7+{N55+x?|Dc+CXWp z7u;G?yx1cJ(Uz5)#8}haeUc&;qzMw1C8s6$q#?_}vd4f{_^a|iXS)AMVsEBdZ7|Ns z%d2Mm<3rb2w2+4Zl@Cvc4-fhkDe9CDn#8$wW8EGw+GeI?ny?DsZ9BSe=#3*)XUH`t z``S4M^TS?~$qH)$zJNsD-okXzs%dGqqJP6%Hx&1Iwt}h83}JA`s-gGj=41k$TALc_ z@=iF~@+jtmeMo)O@V8nD#;|yG6{em;(z@Xw8XbZ>gsGx=l!^a!%k$fvUOvHML#Aw_Ts)cEl_(5Wa-d?nHQlK7; z+08hPGAm-*{?3%1!@?tvm^VBhFrNuUh7}_n5`+phLZ5Z!gKv#YTjyYs1mGu?4cjl-_&n@VkvR6agu$lkHuH!Lf8(V?o4Fd|mqrwl(z zBsxuSMk6Q3Nw={ctd4z6W0h;d(5=XLP88e;sRHul2Q@W_-C9<$UtN}nETU@%3xOs! zrrc6bg97i_JhOJ9+d*u%mT_oK-SoqLg%#k}%PQPO;zQnAGvqt$#BNL0+ZMx2JmM%{ zrKFngzruy(d;2x;A{B{`!7){|cTHDB7E~`e``8F#m~@L)VWs4558EJr268B;Rz9@o z6pTH`FD&Zv>X!Cz$bx^TuKTZju3fq7mgBg1??W}9)VM^N<-P^rW?^dmb(m&{i#x#d zA_5qHA^|@N;keLEM#YmnJ^egZ+)Y}{$a$fqz;X-l@d@we9<2{rqA?$Zh7&j-9LN`4 zNo16iYDSanj6g%c`(WKqt2|d4IQ}xF{ZR#M?N0bH3)p?Z88M)Ne6vKm0uL9K!M1Y3 zX`#RZ(>>x+q?s92Knqk89z3YwgJ2Jdgaog#e6^OZ70JoTzZOk}azNzCXFH0D2;Rw6 zK(Nb_5f9W~(V)UWzMQC)S5PPjau|{t+FC@SEn2>E4g7#-E6|VFH82`tt@^MNK4;6f z@hNXa*sKThyJYDN($!fMIB(w6&&XgGwVONh}^pZ(% zo>9GmMfbGsJ`VVRSgwv%^kD(OHEj36q^+3qQn8Vd(b9;KQ6amqaR1(3UWX*KA;{o> zkx%cabG{pqGcH%v@I;dOn>SRkJHU3-u4L8iy|>!q&lmd&QO~YJ#b~QC-ZVRVHxE9S zHXC9>t=cKwP?M!~TgQ-b8tByczGuHJ+`Gt3%ak!M##bxrk+#(v;B=JNz%k+#0ZJQl zPiu}~>*b|$N^TY<6mXMF(Lyt6w%7yf%m$GP(n<@i{T|9sjBaxxjQX?L_+I%@q5CN- z%uk)3D17MYwo@a06;aC%R?qhLe;Q>o#~hB3?`5M#nBw1ne&RHU55;DDOOI9LRI ze~AmF8dT;y-+4n~e@UFUH{>2}ko(R*?y{gfU`?c5)wlBzN~n* zGOKdW!U;EsF}~e+THA}b1yzc@XK?;}9C>&z653Ik%Bh(?zOK&eQ+({0G__h)wj3Uw zwGeXJNOA7e-8cj0#YJ8Q<91?{AaZMuVYJS_L_*4pZ!K)BqoT^&WhS*MjRQu?w}wfS z@c?TDV@nfaVVGl-QUUV)8H{wyNNLpn-S% zO@zViSjsB5C>G#Y36Ia0}_Wc^~HQ%VV1wC__KAZ@ud9@e8GBcOKolJL;d$21t}`oF;SStE4t;$<*t>DQ1EwwpKkdVpnPTSCn#lS8SB zV+d`OfF12PZzibE$tav?y#~CWRs}JMSP%zd8UR{)c2Ru9dB}Qkr}|W6P|pVsASH?< zi)Npnf_qwxmg@k8-|3jR}s5l;q@j*Cjhr_C`LZ%1dqHz?KLTELF+N1!D#kje(Zk(tB7Xef@G^fr&bbG5E>@%PJc68p<>?jESG9dpGc`WBy{- zG37@vo_*z*r|x0nK$&}{^B`jlLf!6}RjG3@yc&anQ zdfFe3<2su&M9WQ`3k$w3+|}%I*~&E(N=%8R5#{hAhI0qAqtulk@!J7o4Y=~UuiFKD zzCN#$0y8GFQvwm5zOX4%3OK~o(I-&A%I4$eZ0k49lvO=AR}hpU1C32YC7!i~fQG7` zsQ$QNl&nl|#3a}u{@lvaRfM*6WK=2?{V-yJE2H!rD>q-p1qwFWq9RVZA>Fhac|Ycr2M6log9R zN>tm$R?EN5!CY%H3GaEtZO^6y#m`$@aGPgY9UreGC`R&uwVXs(%h!h4vRjv>&oE94 zLbw?!d9)vSuK57J`cP{M)@ecGJ%O-0I^Bb&uMNjMi}#@N+ zp@7@TN>NFp7A7_SJ(!u}u!H$HDO5LNe1gmF4%76sdE|Oq&lg>Thio?MWmZ;d$am7biWYF0sgD{ne8dv2k(;n>? z^Ji zj2k`_a^7c@aMwI_mcsrDd;TPC%z)X0Qd zpyavP#3sUHV_&m7rw3_Pq~q=JIwHDAh`8ssltde1H7h&_xu@>0kjT0Lu>G^Ffjran zhv(&l7XZ<_w~_5yy+Ur`{%V;D$OCh%fq-A?YM+VMQ@uXw&*wcd4f7s>Wzl*s?!0ze z3~wDJ(P|)97HG=2c*FwYwh4!nft~NSPDOR~FQ)A=Vavtc^jn*6&pY4ld>dLSzVozj zYa2HN1?gEq?5OJ$1()~0*4#Ca1Ym*8g*B8)Z+}J?xTjQHSGlf#iZ@kc9ys#glHPOY z290SpdQ1ke71+k#nx7p8c0*~;Wc&sp)slNVx45)FNqi5-&NZNJsQRE^+pmmxg^<2@ zQ`QOnIhY|4NW(r0=YgfBDltMnDMl78V)*6nW@)c~i4rL3WBT^9yNqX7mOK0GByf4)SrPDVR@abdUtkB1$_x`h z_&8Q6dvyds_GWfyfB7=}z4G$j&|Yb6wHt>$X1On(rtkm}8$7oBkwtEZ9Fm?`OJSp> zSz$@5voB9761F0~+hR6|SKMa)BogKS&nLj`i2I*!$~qkpXKU=Tr22qV@JGOG@zTOJ zPXG7C`e$FjjcuHJ&BS!RHzQ=F6tC>TN7Ei9;HF;K1f)C++)QLB+#LNG)9vV!{9?9T7AHa*B(9&T<W!%*^o#a(=%!>(t-&eEs=Wd}qoQPfq1< z&aFppm>FZNSIU2Z1EH1&gyH34dU0OfE<|p=CDx{>LCkVi5mWTI(GH%?#tjf=<{!2Cb$wmFbgR=EeZ#IkD%7+FsxW^ zc32QQQ!7Yq+?QpbH}xZ^09nsvuvb3nxoS|^@ z)c#&-l;IM?G@M+Owohj)JVn4E(fESnt{zbW(ugQHuqE{sjT>~^DYzoKx%dn0>r}2v zeM5N08cR?@Y|)|ySbZr&5~&wm2!%i7CEYZS#2rg5BK$Bj_twHPbNkZwX^)`qN{|^6 zfaP|i%VVRi>Ka<-vUP`1SFjCfyKwIfWOCF?t15q5V{kAhh*2EKvRsxO8yuLhe;R(c z5PrdMQ}iXJ*xN_p8oM7&GA}6lznps;1ja=slyc97{?EknA92m+;O0}w>@vcr z#|Zaao6uPIM4cbL#a`#^KdVOWbCZe#LV9OUsgM$c8!zI(nDxsYQ>ir4-XPoBX|B+1S82*se8`79%kCvJVt}0;Wsa!F9tU z8#WSa_s=4O-Kcee>R{ehM@u#Kdq79y+XzLxrso~c3!eL%m@TXr0=hhqCr4y<`?Y5e z6e3^m=pca3R>v~0%km(kXv7^^Ai>S894jieqUM4*R*l%chiOz4ZqdAo?~Ngjxy><3 z9MzILyExpLjp!aKH;c!l#d|HWgW6+C)tg$j&02I)qS7)oaeruy3T#>=bz`gp8s5aV=%w(@3Vhi zZ&_2gt>M#nay_N*S}8K*1Xi5}GldZI)@0U3g*o-+N|Td6llaN-^(9N}RhOKKNMq?I zc!0YU4!gE5KcsvkleseX+D0s-9#rreI~*>INh*Ho*B$0d(!Bu6$lcO`LOy(!&%W$S zw^6{`r!R%ZstKf}&R{Bg_%_0u7g`a{UhuC84swbOn4{X)k*EA zl$jc_g=KQfpYhqb zH*~E~3dY5g-~BcVV4G5SzuzDRXrOliz@5tA_90f}T(2hoLTM9wHSCvJ^83B^`rr5> z?_F1>G?BAIQfXgiiI@an{0)92r}ct#6hl{fqz%JQd`%j&AP~ojgkmfkrmQ z9@*dx;6=r0+sj#BdI8XiUDP&QQGHqVy#kRx7fMz|3&V%AwpxdH@I>{^_h5?`lI)Dh zcrN)=qKpXz`S>1CQ8GZ3cg8xb08lK7YzIr@)a5r$kyF|(b-Ax`_#cCsXKi%K5bWx+ zC33R}_j(rjyql&8u^^YXbFst2!HSz$Tl%13xYL+*>Y{D4Nk-eso%S9Fo8inI`-uyptRxA^;2&Us3MpTXWft&kBys<(9xJ#^3z>iJ@&LW16*D1zb)kg&zM{GHMOA2r zxnE*TLD5buI7EdM*YLY8Jy=z$og}V6NzUHqB^kAL1S*5~r_0tP6alZTLwT(%Hb?d;jwVq1)N|mUy z;(d;S>!6G%;?Z~%!)#XDB-n47CpP4D1FR&`9yh3by{LU1S|KIj0}7nuY?uj3=LI|+ z;#{J#_2>r%*WS8ee>B-RrehSpg4)Y^T8Vqt{eey0T`o~>>a)Pl3D+NUuf92@P0KN_ zn*zv-d=tPL#Y41KQdHxF;a%8ket{fU>^q}`%!TKVeLG`w^imB*q8y*4S<8bQ_1Lco6mzL8&N8l1WVd~r`DUQliC#!iG2rJEpUwl z#@W^Jy+VDW*n-y~bIu;d^4%3$5H3$O8=erGg%xS^2jz&m%G7s#hfaQ};nHb-8x!ud z{h-h>$Y@aRD_6Yr)5uH$%xa~*!C|wpF-(r3D_^C@(KdP z^_0_TzW6CiPFSkq&G$3wwD_K#lq6$=@Oz(?Q~IpVwiq*1f)e~T!jr;@fTL)R+i|rm zr_Uaa{CF7qZ2Kr*Na7=Yothxo9NSl?U<^FD^sM2kbW9&_{d$mrKk?aVI(UvB10CFu zDe)@PX4ok@-?PDUi=JNU zd$GE&mUnEz@2wdL9kw~FXrDic>zY>U@^ncZTv-2P6`s2oaio5Ka3((0`3i_*oK$1g z%GZqGJ`z*^*mnCz1owAyII@=xsOprC2CS8?kJUMq72i<)g_%>WSma4q>WZYWXIN! zXGC1w{m@bQXCI}C*+8vPJ8fo{@RZt1@WI@a5lvO%>M%F&OjNk;7zXwR)zm}S;kZR6 zy!mh?>Y;7$qurstrZ((q};k&I{Y zc>2oB8MVbgrgw0nLBf6xPWN29oV*ayR(>Msm%GDaUGZwT=yYxFtilC`&R{KA=u?P? zosYyxo%}}a_MgJ{hsJrChp721#V_Su{%Y&-BC&KRjciwXYtJ68*{hM44ANsvD8?moCqM~a(<}8H z;rX_axhxAs6O6WBZumW!}UCy-&QdWkQA! zG%I}B#%-NSP=YoaXV1~*Yt1GhdiWgndYtwhz2sG6`a@|pUIhwA z26;F(Phh56xO@9Ox)Aac&yAsvap)zdgAmEf* zNqf&YXm-C^z%G?tM|>~X`#tRY*RR&m42^8-!ph(@a;((6JS99T=*%hUqEQ`isA#9e z%NK9Kbm&lCAB|c~up9mG#A&|s3~!-L*x2!lyt;%BFL32cN-uoY^tZZ$CoQMK)TOh? zR~01Op=7uV>h|s1jV&$dZJRfPPo@M1J1g9ZWn?WmJ}y6E*Err#y1nE_kU(g)VdZ{# zZI-Iqk@CjG7MXGD(Zwt0ZxS})*ER0Zb{s@E)14Vio27V+;(l4KO;LuhYJyc*uod~K zqk~VrcrDH?-|@>nS8fMPsOKFXI>hl$pLM4+%6p5gr<(AZNvRtqCkb*lvh)^%>`T*= zx_Eea6kDPp<&P!|N|x|oUh6S+qtC8?_T#HF-IKS&>M~ZFj!ktxyzy z=HU5+Z8@Lp^^L8J>0mcVXK@M-!lW`BGs(InY`%|PvDY_!yl4VCy*g$go@76dpW4GF zK`>#DtTXMvIYimFg0^oE&l#zbp%VNG-aC7k4&u_c zF-|5W(^f|hYrXtcke_T(X-A$?>6&v%OLLeJ`Wi2t@+g|sm6td;;xcAHy-G1c7A6wS zTbQM~MiQpAUN-IUiBa>HUWYabUefSIvU|8=Hdgj>dhAr0Eok0qa<#o`iRQ#!KBV#% z%ClM=juxOj<7IfF=&^G7lnC3+Z)>^#Zll!qfb!dNz?aToJrj^Yb?EEo7|1q#Y+_KD zY2=HqeSYL91l~VW#xJBPSWcEJd23==qUG!Bt7Aw3JbAr$KyG05sF+M^r8)LFn$H|w zQ4U!LxZH#ZVvL=j)#B?~K#+R@H;89Db(-QA%jhL_**>-}-^N^ZkxJPoVmAJaZ+@75 zTjgb|(e8qJ_GopZ=+K;gURUvAtxiAaBcxj$U|?wZcGfPNj>_3(K~Td=H)Y@$1v~SfAn*T)_=MNC^ZB@#|-2?HQ0EI&l)2u zR^6^F#RrFQR>OA0g|{?CPcA3YotZH}V5me(>S2lO z8e|t~@g>AyIfK<`iS_FQp9j^ft2nvf1CEbz6Ml|tvH8@fOY;zSjQ+)EaQ8hnWktNs zG^?PQ)hJ{cK(Vcw4_gJpM>9K7+eZtPOy0a@!%Mjh)eCKJ;;?SCWZ@p`4~7@GE3s@% z=X<*dLCp8C&qduIMEeQYnykfsMvHHdgyZyBorenAzZ*yW=z^E}+ta>++6i{82lD1d zBGY+6M?xMHm%4DY<#TCc&<{h%5lv>755TT_VWoXysHT z+w7$-UC7a+cTois^F;+f$yVuwc5zq{Xk#>gs4Cp8Gb3e#CmD5FtZz_P+3ka6^kS1?!IuGXg+c17d@vd2~%gA-tcSd>0NI}*VN2MQ$O4b zJ+D?QE@U}6(g#LXQXGkr+UL}FZHbT?eWgHh9{y7TEXR4Yt%pH>G$UxMsB8;R+b?2) zrVwn4ZnFqC7qFJV~b?Qc1J^FF9oe7W0amx zWNS(mK9%>5i{-*xDUQjutr=Sr5ra-0;3o7;`_POV99r`D9(T>tf{j{e_3TiwjpC5z z3yf+JE+qmsS$$I6njbCZ$GKVg3EM^%81eLAYFR|C{VUIk< z`)~$=q&)C1n!d|0vF&H87g3vANmH`gSxnU`Do_8|zmr(Hm#GmIF9<|kI<4IU6H8fi zK7Q?Kkip{Uj7A%Y4Y1aRGfK3FX|IQGYjh_#G*Wpt8A@PjJ?2a$*f2kK5lz`!PnL2o zhr7)@`LyPp7)~+Kns7tJx=CusWp!s!E@Tcadf1~QS3ZyG zPfS_!j;xTp}sG5rn% ziqr3X7n($-dW!Hf@`{G{cUJK}Hb8{N)pI#E`qHbd=xcV7t{@AY za2FeLe;jZ~N_YP~ApB-P@UBqg-gR=$onc8XU|PLzq5o|aO9Q{-@A#|~Ur~m8Zq!ntYeB;dOtSHw`{qnScgQQUg*hO1}}pm*sc-3-Nv zbhPorYk=Xu%$@TO*1+IO)4@=wrH^N302W<;o`p*i%uEv*d9+Nb;a=`(rE|D!1sk2*PBY9@Q8zsI+ut zr>WoL8~MDat^-h?PE2CgaPxAWd;96#7d-#BUSsjIqaZB0ikx*VE20?BxC65m8Sg%3 zgv<(3JBf1mN_&Z&GRjwcn@DHlSp>b`(;eiRB=x--+mCMAHXU6Ah($C$22Xdu^DJA; zpaQ_*v$uMArvm9wv(?+m$~~F-M7tgmQE31<%A{~UJp1nS5is&sr*r_wjmZJ4TL689 z)@aJN5jq#rlWU>;0<~%59}ocOQtP8n4YD7Y<`jbC4q!*H%c=Femo9ybo~#LEix#%P zGINRRjj;pDA^s`%!(ObkWp|-nk3gua+LLDkY!~&*@DuzodR7u=<3EVLSDte*Q@eex|w!jfyjk9=ZyeKoEoQuK1Jo3JphmxP$y!} z;Z{SXJh5&IL#|&-0UgPjKva2Y|$TQZYyK;z#3IP<=2ihOu&3IMd!PQi5U%~o_ zzqIVLzz91J3ins`paIh9sG+>RFMikQy*i`V2pbXV`J87};9dQ5#cH>q>&I&Pyv?=w zBq+Z86PG82G#D*up%fuzR2&p};vR7lV^xcIsM|pgUoz0n4+Kwwv8ejZR{Fp~`$5Y%4=1HuBoT%y zEpp=?bkXJkQf3B}*RNj#>MHpNW$Z}?n|U-U%F2fP_PVRic_>tw8@0kxQ8^_)?jo;{Q4!v$J0mS z=I^+o-xjp~L{^1A0J}oAI3|p2Jc_o}^T+1`W>p-TNUx&OR)b1Ov(l@=vWwDz>^j-l zqQQ$+%_5^`ivLm{s_U_E-ul>O{+mGct)N~Q3{?W)N<>^%^r+~3_A8s0Xmt7pnBmGX zR}6IalptH2M_)DdGbpm37s8|mSYma%9x&+Jx$Fy5Ndk(;vkjW+29Q`L#P01psqomQ zt_?O0tS0;Vn=R#o^$`>@C~T!xqBh;<+NoajKmW`tEd1%qXQ70OKsKI8@omu_qojIn zPZd*BQ`eZ-*n7}-mN)>j{Jckg`SX+JV*)B|GBP_>f#%;HMp7-y$*ZzO$cmOPal%9; zTidD~)k}@BFN)s!SC1 zvzy(Z}j#SstU?vC~zVx^W$AG6ESG!ue(?#*9bLnqt#VnL`?2ebe( zxTGHTdR_!_Y9dz>5+(3=))b;9ab*uZ&Id5Fxx>MI=o0`v=-JAiYij>&^YN|Hl@k&4bLBuBYIP2}@{>ew)cZG&ix0l| zk!%0w^5Fjvqrv0>#YZ9EdY6g)Ctm*Dmt5r~KmWOMY-}Q3F;rr19G2OM@)Fy4@L>v-RH=Yqcb2mkjA zGBNK30qe6YR>G~Y)Q#}PYCno~ee-iX^!$Ieitek#xIG5S5|-N2yV~&}l*p_();MfI zjF$>}5vRGsod1{H!XG{>@0)utKu#lg%YyF@-~Dc)^MecTt#%P?bM4ue{#!f+^MAVfzh{X?Xg|r+)gb9gc1*!v^3!bv LHF=!e9l!qqwti(q literal 0 HcmV?d00001 diff --git a/src/content/tools/devtools/deep-links.md b/src/content/tools/devtools/deep-links.md new file mode 100644 index 0000000000..469cac23fd --- /dev/null +++ b/src/content/tools/devtools/deep-links.md @@ -0,0 +1,27 @@ +--- +title: Validate deep links +description: Learn how to validate deep links in your app. +--- + +:::note +The deep link validator was added to DevTools +in Flutter SDK 3.19. It currently works only for +Android, but will be expanded to cover iOS +in a future release. +::: + +The deep link view validates any deep links +that are defined in your app. + +To use this feature, open DevTools, +click into the **Deep Links** tab, +and import a Flutter project that contains deep links. + +![Screenshot of the Deep Link Validator](/assets/images/docs/tools/devtools/deep-link-validator.png){:width="100%"} + +This tool helps you identify and troubleshoot any errors +in your Android deep link setup, +from website configuration to Android manifest files. +DevTools provides instructions on how to fix any issues, +making the implementation process easier. + diff --git a/src/content/tools/devtools/overview.md b/src/content/tools/devtools/overview.md index 5d95319c19..b43bd565fc 100644 --- a/src/content/tools/devtools/overview.md +++ b/src/content/tools/devtools/overview.md @@ -7,7 +7,7 @@ description: How to use Flutter DevTools with Flutter. DevTools is a suite of performance and debugging tools for Dart and Flutter. -Flutter DevTools_ and _Dart DevTools_ refer to the +_Flutter DevTools_ and _Dart DevTools_ refer to the same set of tools. ![Dart DevTools Screens](/assets/images/docs/tools/devtools/dart-devtools.gif){:width="100%"} @@ -34,6 +34,7 @@ Here are some of the things you can do with DevTools: about a running Flutter or Dart command-line app. * Analyze code and app size. +* Validate deep links in your Android app. We expect you to use DevTools in conjunction with your existing IDE or command-line based development workflow. From e73c3fe50760005dfd284e7a47b01ff3f3b1535a Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Wed, 8 May 2024 07:26:37 -0500 Subject: [PATCH 056/109] Migrate `app-figure.md` includes to `render` (#10526) Contributes to https://github.com/flutter/website/issues/10525 by migrating all usages of `app-figure.md` to the newer `render` syntax instead of `include`, for improved encapsulation. --- src/_includes/docs/app-figure.md | 16 ++++----- .../docs/install/test-drive/try-hot-reload.md | 4 +-- .../add-to-app/android/project-setup.md | 4 +-- src/content/add-to-app/debugging.md | 7 ++-- src/content/add-to-app/index.md | 4 +-- src/content/add-to-app/ios/project-setup.md | 19 +++++----- src/content/add-to-app/multiple-flutters.md | 2 +- src/content/perf/app-size.md | 6 ++-- .../ios/app-extensions.md | 2 +- .../platform-integration/ios/ios-app-clip.md | 36 +++++++++---------- .../accessibility.md | 4 +-- src/content/ui/interactivity/index.md | 3 +- src/content/ui/layout/index.md | 3 +- src/content/ui/layout/tutorial.md | 16 ++++----- 14 files changed, 62 insertions(+), 64 deletions(-) diff --git a/src/_includes/docs/app-figure.md b/src/_includes/docs/app-figure.md index be8fab61f8..65c39d9ffb 100644 --- a/src/_includes/docs/app-figure.md +++ b/src/_includes/docs/app-figure.md @@ -1,19 +1,19 @@ -{% assign alt = include.alt | default: include.caption -%} -{% assign caption = include.caption | default: '' -%} -{% if include.width -%} -{% assign width = 'width: ' | append: include.width | append: ';' -%} +{% assign alt = alt | default: caption -%} +{% assign caption = caption | default: '' -%} +{% if width -%} +{% assign width = 'width: ' | append: width | append: ';' -%} {% else -%} {% assign width = '' -%} {% endif -%} -{% if include.height -%} -{% assign height = 'height: ' | append: include.height | append: ';' -%} +{% if height -%} +{% assign height = 'height: ' | append: height | append: ';' -%} {% else -%} {% assign height = '' -%} {% endif -%} -

    +
    - {{alt}} + {{alt}} {% if caption -%}
    {{caption}}
    {% endif -%} diff --git a/src/_includes/docs/install/test-drive/try-hot-reload.md b/src/_includes/docs/install/test-drive/try-hot-reload.md index 0352adc11c..c07ec5ea4e 100644 --- a/src/_includes/docs/install/test-drive/try-hot-reload.md +++ b/src/_includes/docs/install/test-drive/try-hot-reload.md @@ -1,6 +1,6 @@ After the app build completes, your device displays your app. -{% include docs/app-figure.md img-class="site-mobile-screenshot border" image="get-started/macos/starter-app.png" caption="Starter app on macOS" %} +{% render docs/app-figure.md, img-class:"site-mobile-screenshot border", image:"get-started/macos/starter-app.png", caption:"Starter app on macOS" %} ## Try hot reload @@ -30,4 +30,4 @@ You can change your app source code, run the hot reload command in Your app updates the string as you watch. -{% include docs/app-figure.md img-class="site-mobile-screenshot border" image="get-started/macos/starter-app-hot-reload.png" caption="Starter app after hot reload" %} +{% render docs/app-figure.md, img-class:"site-mobile-screenshot border", image:"get-started/macos/starter-app-hot-reload.png", caption:"Starter app after hot reload" %} diff --git a/src/content/add-to-app/android/project-setup.md b/src/content/add-to-app/android/project-setup.md index f24c8e3d72..976b85183f 100644 --- a/src/content/add-to-app/android/project-setup.md +++ b/src/content/add-to-app/android/project-setup.md @@ -258,7 +258,7 @@ flutter build aar Then, follow the on-screen instructions to integrate. -{% include docs/app-figure.md image="development/add-to-app/android/project-setup/build-aar-instructions.png" %} +{% render docs/app-figure.md, image:"development/add-to-app/android/project-setup/build-aar-instructions.png" %} More specifically, this command creates (by default all debug/profile/release modes) @@ -376,7 +376,7 @@ check out [Using Flutter in China][] page. You can also build an AAR for your Flutter module in Android Studio using the `Build > Flutter > Build AAR` menu. -{% include docs/app-figure.md image="development/add-to-app/android/project-setup/ide-build-aar.png" %} +{% render docs/app-figure.md, image:"development/add-to-app/android/project-setup/ide-build-aar.png" %} :::
    diff --git a/src/content/add-to-app/debugging.md b/src/content/add-to-app/debugging.md index 4a738d0250..319a0eadc4 100644 --- a/src/content/add-to-app/debugging.md +++ b/src/content/add-to-app/debugging.md @@ -94,9 +94,8 @@ For an iOS target, complete the follow steps: 1. If your dev machine uses IPv6, add `--vm-service-host=::0`. - {% include docs/app-figure.md img-class="site-mobile-screenshot - border" image="development/add-to-app/debugging/wireless-port.png" - caption="Arguments Passed On Launch with an IPv4 network added" width="100%" %} + {% render docs/app-figure.md, img-class:"site-mobile-screenshot border", image:"development/add-to-app/debugging/wireless-port.png", + caption:"Arguments Passed On Launch with an IPv4 network added", width:"100%" %} #### To determine if you're on an IPv6 network @@ -110,7 +109,7 @@ For an iOS target, complete the follow steps: 1. Check for an **IPv6 address** section. - {% include docs/app-figure.md img-class="site-mobile-screenshot border" image="development/add-to-app/ipv6.png" caption="WiFi dialog box for macOS System Settings" width="60%" %} + {% render docs/app-figure.md, img-class:"site-mobile-screenshot border", image:"development/add-to-app/ipv6.png", caption:"WiFi dialog box for macOS System Settings", width:"60%" %} ### Debug over Wi-Fi on Android devices diff --git a/src/content/add-to-app/index.md b/src/content/add-to-app/index.md index 4994160e81..c02fa31194 100644 --- a/src/content/add-to-app/index.md +++ b/src/content/add-to-app/index.md @@ -30,7 +30,7 @@ memory resources. See more in the [multiple Flutters][] page. ### Add to Android applications -{% include docs/app-figure.md image="development/add-to-app/android-overview.gif" alt="Add-to-app steps on Android" %} +{% render docs/app-figure.md, image:"development/add-to-app/android-overview.gif", alt:"Add-to-app steps on Android" %} * Auto-build and import the Flutter module by adding a Flutter SDK hook to your Gradle script. @@ -52,7 +52,7 @@ memory resources. See more in the [multiple Flutters][] page. ### Add to iOS applications -{% include docs/app-figure.md image="development/add-to-app/ios-overview.gif" alt="Add-to-app steps on iOS" %} +{% render docs/app-figure.md, image:"development/add-to-app/ios-overview.gif", alt:"Add-to-app steps on iOS" %} * Auto-build and import the Flutter module by adding a Flutter SDK hook to your CocoaPods and to your Xcode build phase. diff --git a/src/content/add-to-app/ios/project-setup.md b/src/content/add-to-app/ios/project-setup.md index ec5ee4b100..d62375bca5 100644 --- a/src/content/add-to-app/ios/project-setup.md +++ b/src/content/add-to-app/ios/project-setup.md @@ -293,7 +293,7 @@ Settings > Build Phases > Link Binary With Libraries**. In the target's build settings, add `$(PROJECT_DIR)/Flutter/Release/` to the **Framework Search Paths** (`FRAMEWORK_SEARCH_PATHS`). -{% include docs/app-figure.md image="development/add-to-app/ios/project-setup/framework-search-paths.png" alt="Update Framework Search Paths in Xcode" %} +{% render docs/app-figure.md, image:"development/add-to-app/ios/project-setup/framework-search-paths.png", alt:"Update Framework Search Paths in Xcode" %} :::tip To use the simulator, you will need to @@ -333,7 +333,7 @@ select **Embed & Sign**. They will then appear under **Embed Frameworks** within **Build Phases** as follows: -{% include docs/app-figure.md image="development/add-to-app/ios/project-setup/embed-xcode.png" alt="Embed frameworks in Xcode" %} +{% render docs/app-figure.md, image:"development/add-to-app/ios/project-setup/embed-xcode.png", alt:"Embed frameworks in Xcode" %} You should now be able to build the project in Xcode using `⌘B`. @@ -414,7 +414,7 @@ Adjust the names as needed depending on your app's build configurations. Rename your app's **Info.plist** to **Info-Debug.plist**. Make a copy of it called **Info-Release.plist** and add it to your Xcode project. -{% include docs/app-figure.md image="development/add-to-app/ios/project-setup/info-plists.png" alt="Info-Debug.plist and Info-Release.plist in Xcode" %} +{% render docs/app-figure.md, image:"development/add-to-app/ios/project-setup/info-plists.png", alt:"Info-Debug.plist and Info-Release.plist in Xcode" %} @@ -427,7 +427,7 @@ Note Xcode will display this as "Bonjour services". Optionally, add the key `NSLocalNetworkUsageDescription` set to your desired customized permission dialog text. -{% include docs/app-figure.md image="development/add-to-app/ios/project-setup/debug-plist.png" alt="Info-Debug.plist with additional keys" %} +{% render docs/app-figure.md, image:"development/add-to-app/ios/project-setup/debug-plist.png", alt:"Info-Debug.plist with additional keys" %} @@ -436,12 +436,12 @@ desired customized permission dialog text. In your target's build settings, change the **Info.plist File** (`INFOPLIST_FILE`) setting path from `path/to/Info.plist` to `path/to/Info-$(CONFIGURATION).plist`. -{% include docs/app-figure.md image="development/add-to-app/ios/project-setup/set-plist-build-setting.png" alt="Set INFOPLIST_FILE build setting" %} +{% render docs/app-figure.md, image:"development/add-to-app/ios/project-setup/set-plist-build-setting.png", alt:"Set INFOPLIST_FILE build setting" %} This will resolve to the path **Info-Debug.plist** in **Debug** and **Info-Release.plist** in **Release**. -{% include docs/app-figure.md image="development/add-to-app/ios/project-setup/plist-build-setting.png" alt="Resolved INFOPLIST_FILE build setting" %} +{% render docs/app-figure.md, image:"development/add-to-app/ios/project-setup/plist-build-setting.png", alt:"Resolved INFOPLIST_FILE build setting" %} Alternatively, you can explicitly set the **Debug** path to **Info-Debug.plist** and the **Release** path to **Info-Release.plist**. @@ -453,12 +453,13 @@ and the **Release** path to **Info-Release.plist**. If the **Info-Release.plist** copy is in your target's **Build Settings > Build Phases > Copy Bundle** Resources build phase, remove it. -{% include docs/app-figure.md image="development/add-to-app/ios/project-setup/copy-bundle.png" alt="Copy Bundle build phase" %} +{% render docs/app-figure.md, image:"development/add-to-app/ios/project-setup/copy-bundle.png", alt:"Copy Bundle build phase" %} The first Flutter screen loaded by your Debug app will now prompt for local network permission. The permission can also be allowed by enabling **Settings > Privacy > Local Network > Your App**. -{% include docs/app-figure.md image="development/add-to-app/ios/project-setup/network-permission.png" alt="Local network permission dialog" %} + +{% render docs/app-figure.md, image:"development/add-to-app/ios/project-setup/network-permission.png", alt:"Local network permission dialog" %} @@ -476,7 +477,7 @@ Click the right arrow disclosure indicator icon to expand the available build co Hover over **Debug** and click the plus icon. Change **Any SDK** to **Any iOS Simulator SDK**. Add `arm64` to the build settings value. -{% include docs/app-figure.md image="development/add-to-app/ios/project-setup/excluded-archs.png" alt="Set conditional EXCLUDED_ARCHS build setting" %} +{% render docs/app-figure.md, image:"development/add-to-app/ios/project-setup/excluded-archs.png", alt:"Set conditional EXCLUDED_ARCHS build setting" %} When done correctly, Xcode will add `"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;` to your **project.pbxproj** file. diff --git a/src/content/add-to-app/multiple-flutters.md b/src/content/add-to-app/multiple-flutters.md index dde0794adf..8860a27e29 100644 --- a/src/content/add-to-app/multiple-flutters.md +++ b/src/content/add-to-app/multiple-flutters.md @@ -80,7 +80,7 @@ or other planned work on enhancing multiple Flutter instances, check out You can find a sample demonstrating how to use `FlutterEngineGroup` on both Android and iOS on [GitHub][]. -{% include docs/app-figure.md image="development/add-to-app/multiple-flutters-sample.gif" alt="A sample demonstrating multiple-Flutters" %} +{% render docs/app-figure.md, image:"development/add-to-app/multiple-flutters-sample.gif", alt:"A sample demonstrating multiple-Flutters" %} [GitHub]: {{site.repo.samples}}/tree/main/add_to_app/multiple_flutters [`FlutterActivity`]: {{site.api}}/javadoc/io/flutter/embedding/android/FlutterActivity.html diff --git a/src/content/perf/app-size.md b/src/content/perf/app-size.md index 9604097b3e..f5e273a41a 100644 --- a/src/content/perf/app-size.md +++ b/src/content/perf/app-size.md @@ -56,7 +56,7 @@ dropping the .aab file. View the application's download and install size in the **Android vitals** -> **App size** tab. -{% include docs/app-figure.md image="perf/vital-size.png" alt="App size tab in Google Play Console" %} +{% render docs/app-figure.md, image:"perf/vital-size.png", alt:"App size tab in Google Play Console" %} The download size is calculated based on an XXXHDPI (~640dpi) device on an arm64-v8a architecture. Your end users' download sizes might vary depending on @@ -145,7 +145,7 @@ In addition to analyzing a single build, two builds can also be diffed by loading two `*-code-size-analysis_*.json` files into DevTools. Check out the [DevTools documentation][] for details. -{% include docs/app-figure.md image="perf/size-summary.png" alt="Size summary of an Android application in terminal" %} +{% render docs/app-figure.md, image:"perf/size-summary.png", alt:"Size summary of an Android application in terminal" %} Through the summary, you can get a quick idea of the size usage per category (such as asset, native code, Flutter libraries, etc). The compiled Dart @@ -168,7 +168,7 @@ up to function level for the Dart AOT artifact. This can be done by `dart devtools`, selecting `Open app size tool` and uploading the JSON file. -{% include docs/app-figure.md image="perf/devtools-size.png" alt="Example breakdown of app in DevTools" %} +{% render docs/app-figure.md, image:"perf/devtools-size.png", alt:"Example breakdown of app in DevTools" %} For further information on using the DevTools app size tool, check out the [DevTools documentation][]. diff --git a/src/content/platform-integration/ios/app-extensions.md b/src/content/platform-integration/ios/app-extensions.md index d8e9da2c99..a1bd26d42f 100644 --- a/src/content/platform-integration/ios/app-extensions.md +++ b/src/content/platform-integration/ios/app-extensions.md @@ -96,7 +96,7 @@ To add a target to an App Group: 1. Select an App Group from the list. 1. Click **+** to add a new App Group. -{% include docs/app-figure.md image="development/platform-integration/app-extensions/xcode-app-groups.png" alt="Selecting an App Group within an Xcode Runner target configuration." %} +{% render docs/app-figure.md, image:"development/platform-integration/app-extensions/xcode-app-groups.png", alt:"Selecting an App Group within an Xcode Runner target configuration." %} When two targets belong to the same App Group, they can read from and write to the same source. diff --git a/src/content/platform-integration/ios/ios-app-clip.md b/src/content/platform-integration/ios/ios-app-clip.md index 8e43ff3ba3..73b736bab5 100644 --- a/src/content/platform-integration/ios/ios-app-clip.md +++ b/src/content/platform-integration/ios/ios-app-clip.md @@ -38,13 +38,13 @@ the project settings. Press **+** at the bottom of the target list to add a new target. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/add-target.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/add-target.png" %} **2.2** Select the **App Clip** type for your new target. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/add-app-clip.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/add-app-clip.png" %} **2.3** @@ -58,21 +58,21 @@ Select the same language as your original target for **Language**. don't create a Swift App Clip target for an Objective-C main target, and vice versa.) -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/app-clip-details.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/app-clip-details.png" %} **2.4** In the following dialog, activate the new scheme for the new target. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/activate-scheme.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/activate-scheme.png" %} **2.5** Back in the project settings, open the **Build Phases** tab. Drag **Embedded App Clips** to above **Thin Binary**. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/embedded-app-clips.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/embedded-app-clips.png" %}
    ## Step 3 - Remove unneeded files @@ -90,7 +90,7 @@ how much of this template to keep to invoke from this code later. ::: -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/clean-files.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/clean-files.png" %} Move files to trash. @@ -103,7 +103,7 @@ Open the `Info.plist` file in the App Clip group. Delete the entire dictionary entry for **Application Scene Manifest**. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/scene-manifest.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/scene-manifest.png" %} ## Step 4 - Share build configurations @@ -130,7 +130,7 @@ required build settings. Set **iOS Deployment Target** to at least **16.0** to take advantage of the 15MB size limit. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/configuration.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/configuration.png" %} **4.2** @@ -154,7 +154,7 @@ select the file, then in the first tab of the inspector, also include the App Clip target in the `Target Membership` checkbox group. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/add-target-membership.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/add-target-membership.png" %} ### Option 2 - Customize Flutter launch for App Clip @@ -180,7 +180,7 @@ Open the `.entitlements` file. Add an `Associated Domains` Array type. Add a row to the array with `appclips:`. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/app-clip-entitlements.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/app-clip-entitlements.png" %} **6.2** @@ -197,7 +197,7 @@ Open the file and delete the entry for the main app's entitlement file (leave that entry for the App Clip's entitlement file). -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/main-app-entitlements.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/main-app-entitlements.png" %} **6.3** @@ -207,7 +207,7 @@ Set the **Code Signing Entitlements** setting to the relative path of the second entitlements file created for the main app. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/main-app-entitlements-setting.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/main-app-entitlements-setting.png" %} ## Step 7 - Integrate Flutter @@ -222,14 +222,14 @@ build setting to `Runner/Runner-Bridging-Header.h` In other words, the same as the main app target's build settings. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/bridge-header.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/bridge-header.png" %} **7.2** Now open the **Build Phases** tab. Press the **+** sign and select **New Run Script Phase**. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/new-build-phase.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/new-build-phase.png" %} Drag that new phase to below the **Dependencies** phase. @@ -244,7 +244,7 @@ Uncheck **Based on dependency analysis**. In other words, the same as the main app target's build phases. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/xcode-backend-build.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/xcode-backend-build.png" %} This ensures that your Flutter Dart code is compiled when running the App Clip target. @@ -265,7 +265,7 @@ Uncheck **Based on dependency analysis**. In other words, the same as the main app target's build phases. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/xcode-backend-embed.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/xcode-backend-embed.png" %} This ensures that your Flutter app and engine are embedded into the App Clip bundle. @@ -341,7 +341,7 @@ You can now run your App Clip target from Xcode by selecting your App Clip target from the scheme drop-down, selecting an iOS 16 or higher device and pressing run. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/run-select.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/run-select.png" %} To test launching an App Clip from the beginning, also consult Apple's doc on @@ -359,7 +359,7 @@ In order to debug your App Clip and use functionalities like hot reload, you must look for the Observatory URI from the console output in Xcode after running. -{% include docs/app-figure.md image="development/platform-integration/ios-app-clip/observatory-uri.png" %} +{% render docs/app-figure.md, image:"development/platform-integration/ios-app-clip/observatory-uri.png" %} You must then copy and paste it back into the `flutter attach` command to connect. diff --git a/src/content/ui/accessibility-and-internationalization/accessibility.md b/src/content/ui/accessibility-and-internationalization/accessibility.md index 4eabacb4a7..a0a784f4a5 100644 --- a/src/content/ui/accessibility-and-internationalization/accessibility.md +++ b/src/content/ui/accessibility-and-internationalization/accessibility.md @@ -80,10 +80,10 @@ and with the largest font setting selected in iOS accessibility settings.
    - {% include docs/app-figure.md image="a18n/app-regular-fonts.png" caption="Default font setting" img-class="border" %} + {% render docs/app-figure.md, image:"a18n/app-regular-fonts.png", caption:"Default font setting", img-class:"border" %}
    - {% include docs/app-figure.md image="a18n/app-large-fonts.png" caption="Largest accessibility font setting" img-class="border" %} + {% render docs/app-figure.md, image:"a18n/app-large-fonts.png", caption:"Largest accessibility font setting", img-class:"border" %}
    diff --git a/src/content/ui/interactivity/index.md b/src/content/ui/interactivity/index.md index 6ecbd57567..9a3ed7b608 100644 --- a/src/content/ui/interactivity/index.md +++ b/src/content/ui/interactivity/index.md @@ -23,8 +23,7 @@ stateless widgets. The [building layouts tutorial][] showed you how to create the layout for the following screenshot. -{% include docs/app-figure.md img-class="site-mobile-screenshot border" - image="ui/layout/lakes.jpg" caption="The layout tutorial app" %} +{% render docs/app-figure.md, img-class:"site-mobile-screenshot border", image:"ui/layout/lakes.jpg", caption:"The layout tutorial app" %} When the app first launches, the star is solid red, indicating that this lake has previously been favorited. diff --git a/src/content/ui/layout/index.md b/src/content/ui/layout/index.md index 6348edf66a..e40c6161aa 100644 --- a/src/content/ui/layout/index.md +++ b/src/content/ui/layout/index.md @@ -298,8 +298,7 @@ color to white and the text to dark grey to mimic a Material app.
    - {% include docs/app-figure.md img-class="site-mobile-screenshot border w-75" - image="ui/layout/hello-world.png" alt="Hello World" %} + {% render docs/app-figure.md, img-class:"site-mobile-screenshot border w-75", image:"ui/layout/hello-world.png", alt:"Hello World" %}
    diff --git a/src/content/ui/layout/tutorial.md b/src/content/ui/layout/tutorial.md index 0369e67c40..561ba2e556 100644 --- a/src/content/ui/layout/tutorial.md +++ b/src/content/ui/layout/tutorial.md @@ -19,7 +19,7 @@ This tutorial explains how to design and build layouts in Flutter. If you use the example code provided, you can build the following app. -{% include docs/app-figure.md img-class="site-mobile-screenshot border" image="ui/layout/layout-demo-app.png" caption="The finished app." width="50%" %} +{% render docs/app-figure.md, img-class:"site-mobile-screenshot border", image:"ui/layout/layout-demo-app.png", caption:"The finished app.", width:"50%" %}
    @@ -67,7 +67,7 @@ Ask these questions to break the layout down to its basic elements. Identify the larger elements. In this example, you arrange the image, title, buttons, and description into a column. -{% include docs/app-figure.md img-class="site-mobile-screenshot border" image="ui/layout/layout-sketch-intro.svg" caption="Major elements in the layout: image, row, row, and text block" width="50%" %} +{% render docs/app-figure.md, img-class:"site-mobile-screenshot border", image:"ui/layout/layout-sketch-intro.svg", caption:"Major elements in the layout: image, row, row, and text block", width:"50%" %}
  • @@ -83,7 +83,7 @@ a column of text, a star icon, and a number. Its first child, the column, contains two lines of text. That first column might need more space. -{% include docs/app-figure.md image="ui/layout/layout-sketch-title-block.svg" caption="Title section with text blocks and an icon" -%} +{% render docs/app-figure.md, image:"ui/layout/layout-sketch-title-block.svg", caption:"Title section with text blocks and an icon" -%}
  • @@ -92,7 +92,7 @@ That first column might need more space. Row 2, the **Button** section, has three children: each child contains a column which then contains an icon and text. -{% include docs/app-figure.md image="ui/layout/layout-sketch-button-block.svg" caption="The Button section with three labeled buttons" width="50%" %} +{% render docs/app-figure.md, image:"ui/layout/layout-sketch-button-block.svg", caption:"The Button section with three labeled buttons", width:"50%" %} @@ -167,7 +167,7 @@ the following layout. -{% include docs/app-figure.md image="ui/layout/layout-sketch-title-block-unlabeled.svg" caption="The Title section as sketch and prototype UI" %} +{% render docs/app-figure.md, image:"ui/layout/layout-sketch-title-block-unlabeled.svg", caption:"The Title section as sketch and prototype UI" %} ### Add the `TitleSection` Widget @@ -309,7 +309,7 @@ In this section, add the buttons that will add functionality to your app. The **Button** section contains three columns that use the same layout: an icon over a row of text. -{% include docs/app-figure.md image="ui/layout/layout-sketch-button-block-unlabeled.svg" caption="The Button section as sketch and prototype UI" %} +{% render docs/app-figure.md, image:"ui/layout/layout-sketch-button-block-unlabeled.svg", caption:"The Button section as sketch and prototype UI" %} Plan to distribute these columns in one row so each takes the same amount of space. Paint all text and icons with the primary color. @@ -477,7 +477,7 @@ Add the button section to the `children` list. In this section, add the text description to this app. -{% include docs/app-figure.md image="ui/layout/layout-sketch-add-text-block.svg" caption="The text block as sketch and prototype UI" %} +{% render docs/app-figure.md, image:"ui/layout/layout-sketch-add-text-block.svg", caption:"The text block as sketch and prototype UI" %} @@ -640,7 +640,7 @@ Set the `image` property to the path of the image you added in That's it! When you hot reload the app, your app should look like this. -{% include docs/app-figure.md img-class="site-mobile-screenshot border" image="ui/layout/layout-demo-app.png" caption="The finished app" width="50%" %} +{% render docs/app-figure.md, img-class:"site-mobile-screenshot border", image:"ui/layout/layout-demo-app.png", caption:"The finished app", width:"50%" %} ## Resources From dce6e6791c164b2270a3e02bdef985ed400bc30a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 May 2024 05:34:53 -0700 Subject: [PATCH 057/109] Bump site-shared from `a51135f` to `0126475` (#10527) Bumps [site-shared](https://github.com/dart-lang/site-shared) from `a51135f` to `0126475`.
    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- site-shared | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site-shared b/site-shared index a51135f262..01264751bd 160000 --- a/site-shared +++ b/site-shared @@ -1 +1 @@ -Subproject commit a51135f2625a41663118e8ced88c90cac4bcb9da +Subproject commit 01264751bdd7cc70d06f57d80cf4e4693e9bd406 From d0dfd2bed66f5fdc495ecf85e96996df3865b8fe Mon Sep 17 00:00:00 2001 From: Felipe Sales Date: Wed, 8 May 2024 09:42:18 -0300 Subject: [PATCH 058/109] Solves bad use of FutureBuilder (#10520) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Aims to enhance example and promote good pratice when use FutureBuider; converting to Stateful widget for better lifecycle and follow approaches for performance. Like reported here: https://github.com/flutter/flutter/issues/112676; It is good that the documentation and materials recommend and show how to use it (and how to use it in practice). In the docs it says: "The [future](https://api.flutter.dev/flutter/widgets/FutureBuilder/future.html) must have been obtained earlier [...]"; so, applying here. ## 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: Brett Morgan --- .../background_parsing/lib/main.dart | 19 ++++++++++++++++--- .../cookbook/networking/background-parsing.md | 19 ++++++++++++++++--- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/examples/cookbook/networking/background_parsing/lib/main.dart b/examples/cookbook/networking/background_parsing/lib/main.dart index 0ae3af629d..620d98c15e 100644 --- a/examples/cookbook/networking/background_parsing/lib/main.dart +++ b/examples/cookbook/networking/background_parsing/lib/main.dart @@ -65,19 +65,32 @@ class MyApp extends StatelessWidget { } } -class MyHomePage extends StatelessWidget { +class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title}); final String title; + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + late Future> futurePhotos; + + @override + void initState() { + super.initState(); + futurePhotos = fetchPhotos(http.Client()); + } + @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( - title: Text(title), + title: Text(widget.title), ), body: FutureBuilder>( - future: fetchPhotos(http.Client()), + future: futurePhotos, builder: (context, snapshot) { if (snapshot.hasError) { return const Center( diff --git a/src/content/cookbook/networking/background-parsing.md b/src/content/cookbook/networking/background-parsing.md index dd32b925ed..a95e5de9da 100644 --- a/src/content/cookbook/networking/background-parsing.md +++ b/src/content/cookbook/networking/background-parsing.md @@ -236,19 +236,32 @@ class MyApp extends StatelessWidget { } } -class MyHomePage extends StatelessWidget { +class MyHomePage extends StatefulWidget { const MyHomePage({super.key, required this.title}); final String title; + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + late Future> futurePhotos; + + @override + void initState() { + super.initState(); + futurePhotos = fetchPhotos(http.Client()); + } + @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( - title: Text(title), + title: Text(widget.title), ), body: FutureBuilder>( - future: fetchPhotos(http.Client()), + future: futurePhotos, builder: (context, snapshot) { if (snapshot.hasError) { return const Center( From d40b96452493eb03cabc2c341a1b02ed3a6cfbd9 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Wed, 8 May 2024 13:02:49 -0500 Subject: [PATCH 059/109] Prevent a few icons from being mistakenly read by screen readers (#10524) --- src/_includes/inline-toc.html | 6 +++--- src/_sass/components/_header.scss | 1 + src/_sass/components/_sidebar.scss | 8 +++++++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/_includes/inline-toc.html b/src/_includes/inline-toc.html index 845f5278cc..0827b05ac4 100644 --- a/src/_includes/inline-toc.html +++ b/src/_includes/inline-toc.html @@ -13,8 +13,8 @@
    Contents {% if collapsible %} - keyboard_arrow_down - keyboard_arrow_up + + {% endif -%}
      @@ -34,7 +34,7 @@ {% endfor -%}
    {% if collapsible %} - more_horiz + {% endif -%} {% endif -%} diff --git a/src/_sass/components/_header.scss b/src/_sass/components/_header.scss index 45950ecdc6..3e055e47a5 100644 --- a/src/_sass/components/_header.scss +++ b/src/_sass/components/_header.scss @@ -156,6 +156,7 @@ &::before { content: 'search'; + content: 'search' / ''; font: $site-font-icon; pointer-events: none; position: absolute; diff --git a/src/_sass/components/_sidebar.scss b/src/_sass/components/_sidebar.scss index ba3ae64bbb..bb8dd52025 100644 --- a/src/_sass/components/_sidebar.scss +++ b/src/_sass/components/_sidebar.scss @@ -83,13 +83,16 @@ justify-content: space-between; &::after { + // Duplicated since Firefox doesn't support content alt text. content: 'keyboard_arrow_down'; + content: 'keyboard_arrow_down' / ''; font: $site-font-icon; transition: transform .25s ease-in-out; } &:not(.collapsed) { &::after { + content: 'keyboard_arrow_down' / ''; transform: rotate(180deg); } } @@ -161,8 +164,10 @@ @include nav-link-active-style; &.collapsible { - &::before{ + &::before { + // Duplicated since Firefox doesn't support content alt text. content: 'arrow_drop_down'; + content: 'arrow_drop_down' / ''; font: $site-font-icon; left: -24px; position: absolute; @@ -171,6 +176,7 @@ &.collapsed { &::before { + content: 'arrow_drop_down' / ''; transform: rotate(-90deg); } } From a216a9810a92c2f48d90d2fae58595e8fdb8031c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 9 May 2024 06:08:51 -0500 Subject: [PATCH 060/109] Bump github/codeql-action from 3.25.3 to 3.25.4 (#10549) --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards-analysis.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 6c2ffe5b6f..7fb91fca3b 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -33,7 +33,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@d39d31e687223d841ef683f52467bd88e9b21c14 + uses: github/codeql-action/init@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -44,7 +44,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@d39d31e687223d841ef683f52467bd88e9b21c14 + uses: github/codeql-action/autobuild@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -58,4 +58,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@d39d31e687223d841ef683f52467bd88e9b21c14 + uses: github/codeql-action/analyze@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index efe0540fb6..694f8ac95e 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 + uses: github/codeql-action/upload-sarif@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 with: sarif_file: results.sarif From 027c85ea861fe77dcd951ec9019c01dd2f067f30 Mon Sep 17 00:00:00 2001 From: chunhtai <47866232+chunhtai@users.noreply.github.com> Date: Thu, 9 May 2024 14:49:25 -0700 Subject: [PATCH 061/109] Update firebase.json (#10529) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ _Issues fixed by this PR (if any):_ ## Presubmit checklist - [ ] 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. --- firebase.json | 1 + 1 file changed, 1 insertion(+) diff --git a/firebase.json b/firebase.json index af437c42dc..8c9f48472d 100644 --- a/firebase.json +++ b/firebase.json @@ -533,6 +533,7 @@ { "source": "/go/respecting-tabcontroller-animateto-duration", "destination": "https://docs.google.com/document/d/1wzSzUYstDM-Kg5kwskyXcEUX7QTb-lBOso7Z5ebrCTk/edit", "type": 301 }, { "source": "/go/restoring-anonymous-routes", "destination": "https://docs.google.com/document/d/1vnjDruoiDz0eEd4eVzg3IS6W_LRaFxNSlKWtU6iXp2M/edit", "type": 301 }, { "source": "/go/router-api-improvement", "destination": "https://docs.google.com/document/d/1kbUPagtDl30jqYAq-mDMdd-ftHm3q9AMq55ufZCo9lE/edit?usp=sharing&resourcekey=0-JBqYh_UD3h9OSA8NS5OO4g", "type": 301 }, + { "source": "/go/runtime-flutter-analyzer", "destination": "https://docs.google.com/document/d/1VZOv9NsmNeXaqM9h9EjKTz5cg7lEsA623XBfbojXU5U/edit?usp=sharing", "type": 301 }, { "source": "/go/rfc-32-bit-ios-support", "destination": "https://docs.google.com/document/d/1Xz8B2w42ZGmrSdvQHo6LVLhiSZBIxnHxZxoZ-8oyRUc/edit", "type": 301 }, { "source": "/go/rfc-32-bit-ios-unsupported", "destination": "https://docs.google.com/document/d/1cc5EOsuTlbf4dTDTwmkD3aKjS8XEbVCIqi9BFct9XHM/edit?resourcekey=0-Iv0gXDx7nSDCe3YDfxDKqw", "type": 301 }, { "source": "/go/rfc-android-j-deprecation", "destination": "https://docs.google.com/document/d/1N06Pm1x19AIWorENk6OdmY5T8kMzPJUOZs8aL9VccG4/edit", "type": 301 }, From dba6a1525e096c636f607b21aeaeca845c3d90eb Mon Sep 17 00:00:00 2001 From: chunhtai <47866232+chunhtai@users.noreply.github.com> Date: Thu, 9 May 2024 14:50:13 -0700 Subject: [PATCH 062/109] Add migration guide for page apis (#10523) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit migration guide for https://github.com/flutter/flutter/pull/137792 ## Presubmit checklist - [ ] 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. --- src/content/release/breaking-changes/index.md | 2 + .../navigator-and-page-api.md | 110 ++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 src/content/release/breaking-changes/navigator-and-page-api.md diff --git a/src/content/release/breaking-changes/index.md b/src/content/release/breaking-changes/index.md index 99e3da2b8f..5ce2b28d41 100644 --- a/src/content/release/breaking-changes/index.md +++ b/src/content/release/breaking-changes/index.md @@ -33,6 +33,7 @@ release, and listed in alphabetical order: ### Not yet released to stable +* [Navigator's page APIs breaking change][] * [Generic types in `PopScope`][] * [Rename `MaterialState` to `WidgetState`][] * [Introduce new `ColorScheme` roles][] @@ -45,6 +46,7 @@ release, and listed in alphabetical order: * [Dropping support for Android KitKat][] * [New APIs for Android plugins that render to a `Surface`][] +[Navigator's page APIs breaking change]: /release/breaking-changes/navigator-and-page-api [Generic types in `PopScope`]: /release/breaking-changes/popscope-with-result [Rename `MaterialState` to `WidgetState`]: /release/breaking-changes/material-state [Introduce new `ColorScheme` roles]: /release/breaking-changes/new-color-scheme-roles diff --git a/src/content/release/breaking-changes/navigator-and-page-api.md b/src/content/release/breaking-changes/navigator-and-page-api.md new file mode 100644 index 0000000000..3dd0fc1476 --- /dev/null +++ b/src/content/release/breaking-changes/navigator-and-page-api.md @@ -0,0 +1,110 @@ +--- +title: Navigator's page APIs breaking change +description: > + Replace Navigator's `onPopPage` property with `onDidRemovePage` property. +--- + +## Summary + +The [`Navigator`]'s page APIs are refactored so that they can integrate +into Flutter's other pop mechanisms. + +## Context + +The `onPopPage` was added for cleaning up pages after a page is about to be popped. +To veto pop, return `false` in the callback. This does not work well with other popping +mechanisms in the framework, such as [`PopScope`] and iOS back gestures. + +To integrate the other pop mechanisms together, the page APIs need to be refactored. + +## Description of change + +The `onDidRemovePage` property replaces the `onPopPage` property. You can no longer veto a pop in +the `onDidRemovePage` property. Instead, you are only responsible for updating the [`pages`]. + +The veto mechanism moves to the `Page.canPop` and `Page.onPopInvoked`. +These function similar to how one uses the `PopScope` widget. + +## Migration guide + +Code before migration + +```dart +import 'package:flutter/material.dart'; +const MaterialPage page1 = MaterialPage(child: PlaceHolder()); +const MaterialPage page2 = MaterialPage(child: PlaceHolder()); +const MaterialPage page3 = MaterialPage(child: PlaceHolder()); + +void main() { + final List> pages = >[page1, page2, page3]; + runApp( + MaterialApp( + home: Navigator( + pages: pages, + onPopPage: (Route route, Object? result) { + if (route.settings == page2) { + return false; + } + if (route.didPop) { + pages.remove(route.settings); + pages = pages.toList(); + return true; + } + return false; + } + + ), + ), + ); +} +``` + +Code after migration + +```dart +import 'package:flutter/material.dart'; +const MaterialPage page1 = MaterialPage(child: PlaceHolder()); +const MaterialPage page2 = MaterialPage(canPop: false, child: PlaceHolder()); +const MaterialPage page3 = MaterialPage(child: PlaceHolder()); + +void main() { + final List> pages = >[page1, page2, page3]; + runApp( + MaterialApp( + home: Navigator( + pages: pages, + onDidRemovePage: (Page page) { + pages.remove(page); + pages = pages.toList(); + } + + ), + ), + ); +} +``` + +## Timeline + +Landed in version: TBD +In stable release: TBD + +## References + +API documentation: + +* [`Navigator`][] +* [`PopScope`][] + +Relevant issue: + +* [Issue 137458][] + +Relevant PR: + +* [Refactors page API][] + +[Refactors page API]: {{site.repo.flutter}}/pull/137792 +[`Navigator`]: {{site.api}}/flutter/widgets/Navigator-class.html +[`PopScope`]: {{site.api}}/flutter/widgets/PopScope-class.html +[Issue 137458]: {{site.repo.flutter}}/issues/137458 From 2ead8e69d0be5a0fb9294652ee7dc7d101c126e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 06:13:50 -0500 Subject: [PATCH 063/109] Bump examples/codelabs from `92731e0` to `40e0612` (#10557) --- examples/codelabs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/codelabs b/examples/codelabs index 92731e07c6..40e061249c 160000 --- a/examples/codelabs +++ b/examples/codelabs @@ -1 +1 @@ -Subproject commit 92731e07c687cbb49aa3da5196a00e0fe112d31a +Subproject commit 40e061249cd843be0e676d2438820887e1db4458 From 07257aef7b1106aeed50531ad605f4967a6e1f08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 May 2024 06:14:08 -0500 Subject: [PATCH 064/109] Bump ossf/scorecard-action from 2.3.1 to 2.3.3 (#10556) --- .github/workflows/scorecards-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 694f8ac95e..fa7e3252ab 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -27,7 +27,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 + uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 with: results_file: results.sarif results_format: sarif From 210b3a984c620a526cd62b02efba30c1f7f8ef9a Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Fri, 10 May 2024 10:47:06 -0500 Subject: [PATCH 065/109] Update for flutter_lints v4 (#10559) --- examples/example_utils/pubspec.yaml | 2 +- src/content/cookbook/testing/integration/introduction.md | 2 +- src/content/tools/pubspec.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/example_utils/pubspec.yaml b/examples/example_utils/pubspec.yaml index 5463e06fd7..2f39bcc218 100644 --- a/examples/example_utils/pubspec.yaml +++ b/examples/example_utils/pubspec.yaml @@ -6,4 +6,4 @@ environment: sdk: ^3.3.0 dependencies: - flutter_lints: ^3.0.1 + flutter_lints: ^4.0.0 diff --git a/src/content/cookbook/testing/integration/introduction.md b/src/content/cookbook/testing/integration/introduction.md index 9c8d0100c1..76ba30a78f 100644 --- a/src/content/cookbook/testing/integration/introduction.md +++ b/src/content/cookbook/testing/integration/introduction.md @@ -175,7 +175,7 @@ dev_dependencies: # ... added depencies flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^4.0.0 [!integration_test:!] [!sdk: flutter!] # ... diff --git a/src/content/tools/pubspec.md b/src/content/tools/pubspec.md index 2b1caaad41..354e52d7cc 100644 --- a/src/content/tools/pubspec.md +++ b/src/content/tools/pubspec.md @@ -78,7 +78,7 @@ dev_dependencies: [!flutter_test:!] [!sdk: flutter!] # Required for a Flutter project that includes tests - [!flutter_lints: ^3.0.1!] # Contains a set of recommended lints for Flutter code + [!flutter_lints: ^4.0.0!] # Contains a set of recommended lints for Flutter code [!flutter:!] From 322bc76be350c4d100d417cd259646228cf9e782 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Fri, 10 May 2024 08:48:33 -0700 Subject: [PATCH 066/109] Added note about updates to predictive back behavior. (#10553) As it says. Ultimately, it sounds like we need a page on the website about this feature but, for now... @justinmc @itsjustkevin Co-authored-by: Brett Morgan --- .../release/breaking-changes/android-predictive-back.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/content/release/breaking-changes/android-predictive-back.md b/src/content/release/breaking-changes/android-predictive-back.md index 04d04f621e..5e3f4d597b 100644 --- a/src/content/release/breaking-changes/android-predictive-back.md +++ b/src/content/release/breaking-changes/android-predictive-back.md @@ -12,6 +12,14 @@ To support Android 14's Predictive Back feature, a set of ahead-of-time APIs have replaced just-in-time navigation APIs, like `WillPopScope` and `Navigator.willPop`. +:::note +The Flutter 3.22 release includes some updates +to predictive back behavior. For more info, check out +[Issue #132504][]. +::: + +[Issue #132504]: {{site.github}}/flutter/flutter/issues/132504#issuecomment-2025776552 + ## Background Android 14 introduced the From a40e4a740970f03f528d01702ee68015cb9e4d4b Mon Sep 17 00:00:00 2001 From: Ann Marie Mossman <233583+mossmana@users.noreply.github.com> Date: Fri, 10 May 2024 08:49:36 -0700 Subject: [PATCH 067/109] Add design doc for performant android orientation changes (#10552) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ Requesting to add a design doc to address long standing issues with device rotation on Android. _Issues fixed by this PR (if any):_ N/A ## 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. --- firebase.json | 1 + 1 file changed, 1 insertion(+) diff --git a/firebase.json b/firebase.json index 8c9f48472d..98cd763302 100644 --- a/firebase.json +++ b/firebase.json @@ -503,6 +503,7 @@ { "source": "/go/outline-input-border-padding-fix", "destination": "https://docs.google.com/document/d/1QBM5oM9qPWVeFSPSqpXOFbdXV9dH9A9ABKsNMs1J2XU/edit?usp=sharing", "type": 301 }, { "source": "/go/overridable-text-actions", "destination": "https://docs.google.com/document/d/11vmEZTjB4_E4el1IjTo2VBI2d_fR7tjQWeCajsQc-q4/edit?usp=sharing", "type": 301 }, { "source": "/go/performance-best-practices", "destination": "https://docs.google.com/document/d/16bd3HtkuvzAk0uizDGTT3aNtjI8Mfr0f6C3ZVrYYqvI", "type": 301 }, + { "source": "/go/performance-android-orientation-changes", "destination": "https://docs.google.com/document/d/1L7NMG8YfWXoAuCFPv9oX11M1FEWXKbyaWc03mOmXJGc/edit?usp=sharing", "type": 301 }, { "source": "/go/permissible-slider-interaction", "destination": "https://docs.google.com/document/d/151iaqbK-rZSRI34NdkvfIk4RkzOpAevoJ87TwiXfTpM/edit?usp=sharing&resourcekey=0-o0Gx6nrgl-fpw7_zUdMaQA", "type": 301 }, { "source": "/go/picture-lifecycle", "destination": "https://docs.google.com/document/d/1aTBj38k6NSVsYRwySEBItlqxdQbjzurjmHsXAr3yGiI/edit?usp=sharing&resourcekey=0-TbKDu4BVInqphkzAlasBnw", "type": 301 }, { "source": "/go/platform-api-breakages", "destination": "https://docs.google.com/document/d/1OxDsf_eot7TlsRn57z-1_dGbvuqnMxO7QEGIAmOCZtA/edit?usp=sharing", "type": 301 }, From ee8dc9508ef62648dde0e125715fbdbfe6c5a8b6 Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Fri, 10 May 2024 08:52:46 -0700 Subject: [PATCH 068/109] [wasm] Update for stable (#10546) Fixes https://github.com/flutter/website/issues/10519 --------- Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> --- src/_data/sidenav.yml | 2 + src/content/platform-integration/web/wasm.md | 122 +++++++------------ 2 files changed, 43 insertions(+), 81 deletions(-) diff --git a/src/_data/sidenav.yml b/src/_data/sidenav.yml index ba632fbc3f..5bb8d479e4 100644 --- a/src/_data/sidenav.yml +++ b/src/_data/sidenav.yml @@ -457,6 +457,8 @@ permalink: /platform-integration/web/install-web - title: Build a web app permalink: /platform-integration/web/building + - title: WebAssembly + permalink: /platform-integration/web/wasm - title: Web FAQ permalink: /platform-integration/web/faq - title: Web renderers diff --git a/src/content/platform-integration/web/wasm.md b/src/content/platform-integration/web/wasm.md index f29e6ed36f..993317abee 100644 --- a/src/content/platform-integration/web/wasm.md +++ b/src/content/platform-integration/web/wasm.md @@ -3,7 +3,7 @@ title: Support for WebAssembly (Wasm) description: >- Current status of Flutter's experimental support for WebAssembly (Wasm). short-title: Wasm -last-update: March 13, 2024 +last-update: May 14, 2024 --- **_Last updated {{last-update}}_** @@ -13,41 +13,25 @@ The Flutter and Dart teams are excited to add as a compilation target when building applications for the web. -Development of WebAssembly support for Dart and Flutter remains ongoing, -which will potentially result in frequent changes. -Revisit this page for the latest updates. - :::note -**Support for Wasm is now in beta!** -: WebAssembly support for Flutter web is - available on the Flutter [`beta`][] and [`main`][] channels. +**Support for Wasm is now stable!** +: WebAssembly support for Flutter web is available on the Flutter [`stable`][] channel. -**Dart's next-gen Web interop is now stable!** +**Dart's next-gen web interop is now stable!** : Migrate your packages to [`package:web`][] and [`dart:js_interop`][] to make them compatible with Wasm. Read the [Requires JS-interop](#js-interop-wasm) section to learn more. ::: -[`beta`]: {{site.github}}/flutter/flutter/wiki/flutter-build-release-channels#beta -[`main`]: {{site.github}}/flutter/flutter/wiki/flutter-build-release-channels#master-aka-main +[`stable`]: {{site.github}}/flutter/flutter/wiki/flutter-build-release-channels#stable [`package:web`]: {{site.pub-pkg}}/web [`dart:js_interop`]: {{site.dart.api}}/{{site.dart.sdk.channel}}/dart-js_interop -:::note -For information on how to optimize web loading speed, -check out the (free) article on Medium, -[Best practices for optimizing Flutter web loading speed][article]. - -[article]: {{site.flutter-medium}}/best-practices-for-optimizing-flutter-web-loading-speed-7cc0df14ce5c -::: - ## Background To run a Flutter app that has been compiled to Wasm, you need a browser that supports [WasmGC][]. -The Wasm standard plans to add WasmGC to help garbage-collected languages -like Dart execute code in an efficient manner. [Chromium and V8][] released stable support for WasmGC in Chromium 119. Note that Chrome on iOS uses WebKit, which doesn't yet [support WasmGC][]. @@ -66,17 +50,9 @@ To try a pre-built Flutter web app using Wasm, check out the To experiment with Wasm in your own apps, use the following steps. -### Switch to the Flutter `beta` channel and upgrade - -Wasm compilation is available on the latest builds of -the `beta` channel (preferred) or `main`. - -To learn more about Flutter build release channels and how to switch to -the `beta` channel, check out the -[Flutter wiki]({{site.github}}/flutter/flutter/wiki/Flutter-build-release-channels). +### Switch to the Flutter 3.22 stable or newer -To ensure you are running the latest version, -run `flutter upgrade`. +To ensure you are running the latest version, run `flutter upgrade`. To verify that your Flutter install supports Wasm, run `flutter build web --help`. @@ -85,7 +61,7 @@ At the bottom of the output, you should find experimental Wasm options like: ```console Experimental options - --wasm Compile to WebAssembly rather than JavaScript. + --wasm Compile to WebAssembly (with fallback to JavaScript). See https://flutter.dev/wasm for more information. --[no-]strip-wasm Whether to strip the resulting wasm file of static symbol names. (defaults to on) @@ -102,40 +78,11 @@ that has been migrated to be ### Modify `index.html` -:::tip -For more information about using the bootstrapping APIs required to load Flutter -applications compiled to wasm, see the [Flutter web app initialization][] -page. -::: +Make sure your app's `web/index.html` is updated to the latest +[Flutter web app initialization][] for Flutter 3.22 and later. [Flutter web app initialization]: /platform-integration/web/bootstrapping -Before building with Wasm, you'll need to modify the bootstrap logic in -your app's `web/index.html` file. - -```html - - - - - Flutter web app - - - - - - -``` - -This feature is under development. The current syntax -(`flutter.js`, `{% raw %}{{flutter_build_config}}{% endraw %}`, -`_flutter.loader.load()`) is a temporary solution in the `beta` and `main` -channels now, but will be replaced by the actual syntax in an upcoming stable -release. Stay tuned! - ### Run `flutter build web --wasm` To build a web application with Wasm, add the `--wasm` flag to @@ -145,10 +92,37 @@ the existing `flutter build web` command. flutter build web --wasm ``` -The command sends its output to the `build/web` directory relative to +The command produces output into the `build/web` directory relative to the package root. -### Serve the output locally with an HTTP server +### Serve the output with an HTTP server + +Flutter web WebAssembly uses multiple threads to render your application +faster, with less jank. To do this, advanced browser features are used that +require specific HTTP response headers. + +:::warning +Flutter web applications won't run with WebAssembly unless the server is +configured to send specific HTTP headers. +::: + +
    + +| Name | Value | +|-|-| +| `Cross-Origin-Embedder-Policy` | `credentialless`
    or
    `require-corp` | +| `Cross-Origin-Opener-Policy` | `same-origin` | + +{:.table} + +
    + +To learn more about these headers, check out +[Load cross-origin resources without CORP headers using COEP: credentialless][coep]. + +[coep]: https://developer.chrome.com/blog/coep-credentialless-origin-trial + +### Serving Wasm locally If you don't have a local HTTP server installed, you can use the [`dhttpd` package]({{site.pub-pkg}}/dhttpd): @@ -255,19 +229,5 @@ Context: The unavailable library 'dart:html' is imported through these packages: ### Only build support Neither `flutter run` nor [DevTools](/tools/devtools) support -Wasm at the moment. - -## Learn more - -Check out Flutter's -[existing web support]({{site.main-url}}/multi-platform/web). -Work on Flutter and Dart Wasm support continues. -Once finished, your existing Flutter web apps -shouldn't need much work to support Wasm. - -If you want to learn more, -check out this talk from our team at Wasm I/O 2023: -[Flutter, Dart, and WasmGC: A new model for web applications](https://youtu.be/Nkjc9r0WDNo). - -To follow the latest changes in the Flutter and Dart WebAssembly effort, -revisit [flutter.dev/wasm]({{site.main-url}}/wasm). +Wasm in Flutter 3.22. This feature has been +implemented, though, and will be available in the next stable release. From afebe6ab1986c3e66a9a2a1c166a0f0d3cafe440 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Fri, 10 May 2024 16:54:27 -0500 Subject: [PATCH 069/109] Fix drag a widget image link (#10560) --- eleventy.config.js | 1 + .../effects/drag_a_widget/lib/main.dart | 24 +++++++++---------- src/content/cookbook/effects/drag-a-widget.md | 24 +++++++++---------- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/eleventy.config.js b/eleventy.config.js index bd46e26c46..f5b3f892b8 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -144,6 +144,7 @@ ${content} eleventyConfig.addPassthroughCopy('src/content/assets/js'); eleventyConfig.addPassthroughCopy({'site-shared/packages/inject_dartpad/lib/inject_dartpad.js': 'assets/js/inject_dartpad.js'}); eleventyConfig.addPassthroughCopy('src/content/assets/images', { expand: true }); + eleventyConfig.addPassthroughCopy('src/content/cookbook/img-files', { expand: true }); eleventyConfig.addPassthroughCopy('src/content/f', { expand: true, filter: /^(?!_).+/, diff --git a/examples/cookbook/effects/drag_a_widget/lib/main.dart b/examples/cookbook/effects/drag_a_widget/lib/main.dart index cf714e7b4e..528aad2705 100644 --- a/examples/cookbook/effects/drag_a_widget/lib/main.dart +++ b/examples/cookbook/effects/drag_a_widget/lib/main.dart @@ -14,22 +14,22 @@ const List _items = [ name: 'Spinach Pizza', totalPriceCents: 1299, uid: '1', - imageProvider: NetworkImage('https://flutter' - '.dev/docs/cookbook/img-files/effects/split-check/Food1.jpg'), + imageProvider: NetworkImage('https://docs.flutter.dev' + 'cookbook/img-files/effects/split-check/Food1.jpg'), ), Item( name: 'Veggie Delight', totalPriceCents: 799, uid: '2', - imageProvider: NetworkImage('https://flutter' - '.dev/docs/cookbook/img-files/effects/split-check/Food2.jpg'), + imageProvider: NetworkImage('https://docs.flutter.dev' + '/cookbook/img-files/effects/split-check/Food2.jpg'), ), Item( name: 'Chicken Parmesan', totalPriceCents: 1499, uid: '3', - imageProvider: NetworkImage('https://flutter' - '.dev/docs/cookbook/img-files/effects/split-check/Food3.jpg'), + imageProvider: NetworkImage('https://docs.flutter.dev' + '/cookbook/img-files/effects/split-check/Food3.jpg'), ), ]; @@ -46,18 +46,18 @@ class _ExampleDragAndDropState extends State final List _people = [ Customer( name: 'Makayla', - imageProvider: const NetworkImage('https://flutter' - '.dev/docs/cookbook/img-files/effects/split-check/Avatar1.jpg'), + imageProvider: const NetworkImage('https://docs.flutter.dev' + '/cookbook/img-files/effects/split-check/Avatar1.jpg'), ), Customer( name: 'Nathan', - imageProvider: const NetworkImage('https://flutter' - '.dev/docs/cookbook/img-files/effects/split-check/Avatar2.jpg'), + imageProvider: const NetworkImage('https://docs.flutter.dev' + '/cookbook/img-files/effects/split-check/Avatar2.jpg'), ), Customer( name: 'Emilio', - imageProvider: const NetworkImage('https://flutter' - '.dev/docs/cookbook/img-files/effects/split-check/Avatar3.jpg'), + imageProvider: const NetworkImage('https://docs.flutter.dev' + '/cookbook/img-files/effects/split-check/Avatar3.jpg'), ), ]; diff --git a/src/content/cookbook/effects/drag-a-widget.md b/src/content/cookbook/effects/drag-a-widget.md index 6bc548f8bf..a6ff153806 100644 --- a/src/content/cookbook/effects/drag-a-widget.md +++ b/src/content/cookbook/effects/drag-a-widget.md @@ -260,22 +260,22 @@ const List _items = [ name: 'Spinach Pizza', totalPriceCents: 1299, uid: '1', - imageProvider: NetworkImage('https://flutter' - '.dev/docs/cookbook/img-files/effects/split-check/Food1.jpg'), + imageProvider: NetworkImage('https://docs.flutter.dev' + 'cookbook/img-files/effects/split-check/Food1.jpg'), ), Item( name: 'Veggie Delight', totalPriceCents: 799, uid: '2', - imageProvider: NetworkImage('https://flutter' - '.dev/docs/cookbook/img-files/effects/split-check/Food2.jpg'), + imageProvider: NetworkImage('https://docs.flutter.dev' + '/cookbook/img-files/effects/split-check/Food2.jpg'), ), Item( name: 'Chicken Parmesan', totalPriceCents: 1499, uid: '3', - imageProvider: NetworkImage('https://flutter' - '.dev/docs/cookbook/img-files/effects/split-check/Food3.jpg'), + imageProvider: NetworkImage('https://docs.flutter.dev' + '/cookbook/img-files/effects/split-check/Food3.jpg'), ), ]; @@ -292,18 +292,18 @@ class _ExampleDragAndDropState extends State final List _people = [ Customer( name: 'Makayla', - imageProvider: const NetworkImage('https://flutter' - '.dev/docs/cookbook/img-files/effects/split-check/Avatar1.jpg'), + imageProvider: const NetworkImage('https://docs.flutter.dev' + '/cookbook/img-files/effects/split-check/Avatar1.jpg'), ), Customer( name: 'Nathan', - imageProvider: const NetworkImage('https://flutter' - '.dev/docs/cookbook/img-files/effects/split-check/Avatar2.jpg'), + imageProvider: const NetworkImage('https://docs.flutter.dev' + '/cookbook/img-files/effects/split-check/Avatar2.jpg'), ), Customer( name: 'Emilio', - imageProvider: const NetworkImage('https://flutter' - '.dev/docs/cookbook/img-files/effects/split-check/Avatar3.jpg'), + imageProvider: const NetworkImage('https://docs.flutter.dev' + '/cookbook/img-files/effects/split-check/Avatar3.jpg'), ), ]; From a3bddbe445b56dab0f3008e3e15ee9aea4ef4a41 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Fri, 10 May 2024 18:08:27 -0700 Subject: [PATCH 070/109] Adding AI to the sidenav (#10565) Addresses https://github.com/flutter/website/issues/10448 --------- Co-authored-by: Parker Lougheed --- src/_data/sidenav.yml | 10 +++++++++ src/content/assets/images/docs/gemini.png | Bin 0 -> 16635 bytes src/content/resources/ai-overview.md | 26 ++++++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 src/content/assets/images/docs/gemini.png create mode 100644 src/content/resources/ai-overview.md diff --git a/src/_data/sidenav.yml b/src/_data/sidenav.yml index 5bb8d479e4..7bf8bc5903 100644 --- a/src/_data/sidenav.yml +++ b/src/_data/sidenav.yml @@ -60,6 +60,16 @@ - title: App solutions children: + - title: AI + children: + - title: Overview + permalink: /resources/ai-overview + - title: Get started with the Gemini API + permalink: https://ai.google.dev/gemini-api/docs/get-started/dart + - title: Google AI Dart SDK (pub.dev) + permalink: https://pub.dev/packages/google_generative_ai + - title: Build with Google AI Dart SDK (video) + permalink: https://www.youtube.com/watch?v=1AuzJEiHjO4 - title: Firebase & Firestore children: - title: Overview diff --git a/src/content/assets/images/docs/gemini.png b/src/content/assets/images/docs/gemini.png new file mode 100644 index 0000000000000000000000000000000000000000..5a7b45d94c59da4bef33bea6d06cfb9f42b7c8aa GIT binary patch literal 16635 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 G!T$%un0VI! literal 0 HcmV?d00001 diff --git a/src/content/resources/ai-overview.md b/src/content/resources/ai-overview.md new file mode 100644 index 0000000000..19d4058963 --- /dev/null +++ b/src/content/resources/ai-overview.md @@ -0,0 +1,26 @@ +--- +title: AI +description: > + Learn about the resources available for adding + generative AI to your Flutter application. +--- + +![gemini-logo](/assets/images/docs/gemini.png) + +The Google AI Dart SDK enables you to use Google's +state-of-the-art generative AI models (like Gemini) +to build AI-powered features and applications. + +Integrate features like advanced text generation, +summarization, chat, and more to your Dart or Flutter +apps with minimal setup, and deploy across multiple platforms. + + + +The following resources can help you get started: + +* [Get started with the Gemini API in Dart or Flutter apps][tutorial] +* [Google Generative AI SDK for Dart and Flutter][pkg] + +[pkg]: {{site.pub-pkg}}/packages/google_generative_ai +[tutorial]: https://ai.google.dev/gemini-api/docs/get-started/dart From 5df25cc49fe459fced85bc1779b4b3d39703bc74 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Sat, 11 May 2024 10:49:50 -0700 Subject: [PATCH 071/109] tweaking the UI of the AI overview page (#10568) (The page looked pretty strange before...) cc @parlough --- src/content/resources/ai-overview.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/content/resources/ai-overview.md b/src/content/resources/ai-overview.md index 19d4058963..ed69319dfa 100644 --- a/src/content/resources/ai-overview.md +++ b/src/content/resources/ai-overview.md @@ -5,7 +5,7 @@ description: > generative AI to your Flutter application. --- -![gemini-logo](/assets/images/docs/gemini.png) + The Google AI Dart SDK enables you to use Google's state-of-the-art generative AI models (like Gemini) @@ -15,8 +15,6 @@ Integrate features like advanced text generation, summarization, chat, and more to your Dart or Flutter apps with minimal setup, and deploy across multiple platforms. - - The following resources can help you get started: * [Get started with the Gemini API in Dart or Flutter apps][tutorial] From 3d5debe8a09e0aedc201e8220209020740736326 Mon Sep 17 00:00:00 2001 From: Anthony Sansone Date: Sat, 11 May 2024 12:51:09 -0500 Subject: [PATCH 072/109] Update universal links page (#10561) Fixes #10488 --- src/content/assets/js/main.js | 1 + .../navigation/set-up-universal-links.md | 260 ++++++++++++++---- 2 files changed, 203 insertions(+), 58 deletions(-) diff --git a/src/content/assets/js/main.js b/src/content/assets/js/main.js index dcd2452cd6..a8ec380c61 100644 --- a/src/content/assets/js/main.js +++ b/src/content/assets/js/main.js @@ -29,6 +29,7 @@ document.addEventListener("DOMContentLoaded", function(_) { setupTabs($('#china-os-dl-tabs'), 'dev.flutter.china-os-dl'); setupTabs($('#china-os-pub-tabs'), 'dev.flutter.china-os-pub'); setupTabs($('#base-os-tabs'), 'dev.flutter.os'); + setupTabs($('#xcode-ide-vs-ui'), 'dev.flutter.xcode-ux'); }); function _getOSForArchive() { diff --git a/src/content/cookbook/navigation/set-up-universal-links.md b/src/content/cookbook/navigation/set-up-universal-links.md index 16d72b6d71..8983b58e21 100644 --- a/src/content/cookbook/navigation/set-up-universal-links.md +++ b/src/content/cookbook/navigation/set-up-universal-links.md @@ -8,20 +8,21 @@ js: -Deep linking is a mechanism for launching an app with a URI. This URI -contains scheme, host, and path, and opens the app to a specific -screen. +Deep linking allows an app user to launch an app with a URI. +This URI contains scheme, host, and path, +and opens the app to a specific screen. -A _universal link_ is a type of deep link that uses `http` or `https` -and is exclusive to Apple devices. +A _universal link_, a type of deep link exclusive to iOS devices, +uses only the `http` or `https` protocols. -Setting up universal links requires one to own a web domain. -Otherwise, consider using [Firebase Hosting][] or [GitHub Pages][] -as a temporary solution. +To set up universal links, you need to own a web domain. +As a temporary solution, +consider using [Firebase Hosting][] or [GitHub Pages][]. -## 1. Customize a Flutter application +## Create or modify a Flutter app Write a Flutter app that can handle an incoming URL. + This example uses the [go_router][] package to handle the routing. The Flutter team maintains the `go_router` package. It provides a simple API to handle complex routing scenarios. @@ -69,121 +70,264 @@ It provides a simple API to handle complex routing scenarios. ); ``` -## 2. Adjust iOS build settings +## Adjust iOS build settings 1. Launch Xcode. -1. Open the `ios/Runner.xcworkspace` file inside the project's `ios` folder. -1. Navigate to the `Info` Plist file in the `ios/Runner` folder. - Xcode info.Plist screenshot +1. Open the `ios/Runner.xcworkspace` file inside the + Flutter project's `ios` folder. + +### Add support for go_router + +1. In the Xcode Navigator, expand **Runner** then click **Info**. + + Xcode info.Plist screenshot + +1. In the Editor, Ctrl + click and + select **Raw Keys and Values** from the context menu. -1. In the `Info` property list, control-click at the list to add a row. -1. Control-click the newly added row and turn on the **Raw Keys and Values** mode -1. Update the key to `FlutterDeepLinkingEnabled` with a `Boolean` value set to `YES`. +1. In the Editor, Ctrl + click and + select **Add Row** from the context menu. - flutter deeplinking enabled screenshot + A new **Key** should display. + +1. Change the new key properties to meet the following: + + * Change the **Key** to `FlutterDeepLinkingEnabled` + * Change the **Type** to `Boolean` + * Change the **Value** to `YES`. + + flutter deeplinking enabled screenshot :::note - The FlutterDeepLinkingEnabled property opts into Flutter's default deeplink handler. If - you are using the third-party plugins, such as [uni_links][], setting this property will - break these plugins. Skip this step if you prefer to use third-party plugins. + The `FlutterDeepLinkingEnabled` property enables + Flutter's default deeplink handler. + If you use a third-party plugin, such as [uni_links][], + setting this property breaks the third-party plugin. + Skip this step if you prefer to use a third-party plugin. ::: +### Add associated domains + +:::warning +Personal development teams don't support the Associated Domains +capability. To add associated domains, choose the IDE tab. +::: + +{% comment %} Nav tabs {% endcomment -%} + + +{% comment %} Tab panes {% endcomment -%} +
    + +
    + +1. Launch Xcode if necessary. + 1. Click the top-level **Runner**. + +1. In the Editor, click the **Runner** target. + 1. Click **Signing & Capabilities**. -1. Click **+ Capability** to add a new domain. + +1. To add a new domain, click **+ Capability** under + **Signing & Capabilities**. + 1. Click **Associated Domains**. - Xcode associated domains screenshot + Xcode associated domains screenshot 1. In the **Associated Domains** section, click **+**. + 1. Enter `applinks:`. Replace `` with your own domain name. - Xcode add associated domains screenshot + Xcode add associated domains screenshot +
    + +
    + +1. Open the `ios/Runner/Runner.entitlements` XML file in your preferred IDE. + +1. Add an associated domain inside the `` tag. + + ```xml + + + + + [!com.apple.developer.associated-domains!] + [!!] + [!applinks:example.com!] + [!!] + + + ``` + +1. Save the `ios/Runner/Runner.entitlements` file. + +To check that the associated domains you created are available, perform +the following steps. + +1. Launch Xcode if necessary. + +1. Click the top-level **Runner**. + +1. In the Editor, click the **Runner** target. + +1. Click **Signing & Capabilities**. + The domains should appear in the + **Associated Domains** section. + + Xcode add associated domains screenshot + +
    + +
    +{% comment %} End: Tab panes. {% endcomment -%} You have finished configuring the application for deep linking. -## 3. Hosting apple-app-site-association file +## Associate your app with your web domain You need to host an `apple-app-site-association` file in the web domain. This file tells the mobile browser which iOS application to open instead of the browser. -To create the file, get the app ID of the Flutter app you created in the previous step. +To create the file, find the `appID` of the Flutter app you created in the previous section. -### App ID +### Locate components of the `appID` -Apple formats the app ID as `.`. +Apple formats the `appID` as `.`. * Locate the bundle ID in the Xcode project. * Locate the team ID in the [developer account][]. **For example:** Given a team ID of `S8QB4VV633` -and a bundle ID of `com.example.deeplinkCookbook`, The app ID is +and a bundle ID of `com.example.deeplinkCookbook`, +You would enter an `appID` entry of `S8QB4VV633.com.example.deeplinkCookbook`. -### apple-app-site-association +### Create and host `apple-app-site-association` JSON file -The hosted file should have the following content: +This file uses the JSON format. +Don't include the `.json` file extension when you save this file. +Per [Apple's documentation][apple-app-site-assoc], +this file should resemble the following content: ```json { "applinks": { - "apps": [], - "details": [ + "apps": [], + "details": [ { - "appID": "S8QB4VV633.com.example.deeplinkCookbook", - "paths": ["*"] + "appIDs": [ + "S8QB4VV633.com.example.deeplinkCookbook" + ], + "paths": [ + "*" + ], + "components": [ + { + "/": "/*" + } + ] } ] + }, + "webcredentials": { + "apps": [ + "S8QB4VV633.com.example.deeplinkCookbook" + ] } } ``` -1. Set the `appID` value to `.`. +1. Set one value in the `appIDs` array to + `.`. + +1. Set the `paths` array to `["*"]`. + The `paths` array specifies the allowed universal links. + Using the asterisk, `*` redirects every path to the Flutter app. + If needed, change the `paths` array value to a setting more + appropriate to your app. -1. Set the `paths` value to `["*"]`. - The `paths` field specifies the allowed universal links. - Using the asterisk, `*` redirects every path to the Flutter application. - If needed, change the `paths` value to a setting more appropriate - to your app. +1. Host the file at a URL that resembles the following structure. -1. Host the file at a URL that resembles the following: `/.well-known/apple-app-site-association` 1. Verify that your browser can access this file. -## Testing +## Test the universal link + +Test a universal link using a physical iOS device or the Simulator. :::note It might take up to 24 hours before Apple's [Content Delivery Network](https://en.wikipedia.org/wiki/Content_delivery_network) (CDN) -requests the apple-app-site-association (AASA) file from your web domain. -The universal link won't work until the CDN requests the file. +requests the `apple-app-site-association` (AASA) file from your web domain. +Until the CDN requests the file, the universal link won't work. To bypass Apple's CDN, check out the [alternate mode section][]. ::: -You can use a real device or the Simulator to test a universal link, -but first make sure you have executed `flutter run` at least once on -the devices. This ensures that the Flutter application is installed. +1. Before testing, + install the Flutter app on the iOS device or Simulator, + Use `flutter run` on the desired device. -Simulator screenshot + Simulator screenshot -If using the Simulator, test using the Xcode CLI: + When complete, + the Flutter app displays on the home screen of the + iOS device or Simulator. -```console -$ xcrun simctl openurl booted https:///details -``` +1. If you test using the Simulator, use the Xcode CLI: + + ```console + $ xcrun simctl openurl booted https:///details + ``` -Otherwise, type the URL in the **Note** app and click it. +1. If you test with a physical iOS device: -If everything is set up correctly, the Flutter application -launches and displays the details screen: + 1. Launch the **Note** app. + 1. Type the URL in the **Note** app. + 1. Click the resulting link. -Deeplinked Simulator screenshot + If successful, the Flutter app launches and displays its details screen. + + Deeplinked Simulator screenshot -## Appendix +## Find the source code -Source code: [deeplink_cookbook][] +You can find the source code for the [deeplink_cookbook][] +recipe in the GitHub repo. +[apple-app-site-assoc]: {{site.apple-dev}}/documentation/xcode/supporting-associated-domains [alternate mode section]: {{site.apple-dev}}/documentation/bundleresources/entitlements/com_apple_developer_associated-domains?language=objc [deeplink_cookbook]: {{site.repo.organization}}/codelabs/tree/main/deeplink_cookbook [developer account]: {{site.apple-dev}}/account From aab9b545579926b217480c4a0cd5897fdd502576 Mon Sep 17 00:00:00 2001 From: Amos Date: Mon, 13 May 2024 04:31:20 +0800 Subject: [PATCH 073/109] Update: 'flutter.cn/docs' -> 'docs.flutter.cn' (#10572) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ `flutter.cn/docs` has been migrated to `docs.flutter.cn`. - https://github.com/cfug/flutter.cn/pull/1436 _Issues fixed by this PR (if any):_ None. ## 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. --- src/_includes/docs/china-notice-cn.md | 2 +- src/_includes/docs/community/china/os-settings.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/_includes/docs/china-notice-cn.md b/src/_includes/docs/china-notice-cn.md index be475bcd66..e7878ae54a 100644 --- a/src/_includes/docs/china-notice-cn.md +++ b/src/_includes/docs/china-notice-cn.md @@ -3,4 +3,4 @@ 请参考 [在中国网络环境下使用 Flutter][] 文档. ::: -[在中国网络环境下使用 Flutter]: https://flutter.cn/community/china \ No newline at end of file +[在中国网络环境下使用 Flutter]: https://docs.flutter.cn/community/china \ No newline at end of file diff --git a/src/_includes/docs/community/china/os-settings.md b/src/_includes/docs/community/china/os-settings.md index 846df4ca61..700e307bc5 100644 --- a/src/_includes/docs/community/china/os-settings.md +++ b/src/_includes/docs/community/china/os-settings.md @@ -70,7 +70,7 @@ This procedure requires using {{shell}}. 1. Download the Flutter archive from your mirror site. In your preferred browser, go to - [Flutter SDK archive](https://flutter.cn/docs/release/archive?tab={{id}}). + [Flutter SDK archive](https://docs.flutter.cn/release/archive?tab={{id}}). 1. Create a folder where you can install Flutter. then change into it. From 7196971e6915472756caba1f2f5ac7aac99646bd Mon Sep 17 00:00:00 2001 From: Yegor Date: Sun, 12 May 2024 13:33:13 -0700 Subject: [PATCH 074/109] more on Flutter web indexability (#10550) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Expand on what we're doing about indexability. One unusual aspect of this change is linking to the test site and spelling out "Hawaii-themed space stories". This is intentional, and hopefully, not too disruptive to the message. In order to prove that SEO works we need an already indexed website to link to the test site so search engines find it and attempt to index it. I thought sneaking one such link into a section of our web FAQ that already talks about SEO would be a safe place for it. One place I violate the style guide is I use "we" in the text. However, it seems to be consistent with how the word is used elsewhere on the site. I'm open to suggestions for how to remove it, if it's important. ## 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. --- src/content/platform-integration/web/faq.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/content/platform-integration/web/faq.md b/src/content/platform-integration/web/faq.md index 5122cc3bb3..828a12ec50 100644 --- a/src/content/platform-integration/web/faq.md +++ b/src/content/platform-integration/web/faq.md @@ -35,6 +35,11 @@ consider separating your primary application experience—created in Flutter—f your landing page, marketing content, and help content—created using search-engine optimized HTML. +That said, as mentioned in the [roadmap][], the Flutter team plans to +investigate search engine indexability of Flutter web. To that end, we built a +small website containing [Hawaii-themed space stories][space_hawaii], hoping +that search engines find and index this site. + ### How do I create an app that also runs on the web? See [building a web app with Flutter][]. @@ -164,3 +169,5 @@ Not currently. [run your web apps in any supported browser]: /platform-integration/web/building#create-and-run [Integration testing]: /testing/integration-tests#running-in-a-browser [documentation for conditional imports]: {{site.dart-site}}/guides/libraries/create-library-packages#conditionally-importing-and-exporting-library-files +[roadmap]: {{site.github}}/flutter/flutter/wiki/Roadmap#web-platform +[space_hawaii]: https://alien-hawaii-2024.web.app/ From 04a0ddbcbfdae75b69c9d81b0b16b7f1190b4d42 Mon Sep 17 00:00:00 2001 From: Andrew Kolos Date: Sun, 12 May 2024 13:37:41 -0700 Subject: [PATCH 075/109] Document asset transformation feature (#10471) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Documents the new asset transformation feature (if curious, see https://github.com/flutter/flutter/issues/143348; but the documentation included in this PR should be sufficient for learning about and understanding this feature.) **For reviewers.** The documentation includes a link to a yet-to-be-merged sample in the flutter/samples repo. When you arrive at this link, I ask that you review https://github.com/flutter/samples/pull/2267, which is the PR that adds the sample being linked to. ## 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: Brett Morgan Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> --- examples/ui/assets_and_images/assets/logo.svg | 87 ++++++++++++++++++ examples/ui/assets_and_images/lib/logo.dart | 8 ++ examples/ui/assets_and_images/pubspec.yaml | 5 + src/_data/sidenav.yml | 2 + src/content/ui/assets/asset-transformation.md | 92 +++++++++++++++++++ src/content/ui/assets/assets-and-images.md | 9 ++ 6 files changed, 203 insertions(+) create mode 100755 examples/ui/assets_and_images/assets/logo.svg create mode 100644 examples/ui/assets_and_images/lib/logo.dart create mode 100644 src/content/ui/assets/asset-transformation.md diff --git a/examples/ui/assets_and_images/assets/logo.svg b/examples/ui/assets_and_images/assets/logo.svg new file mode 100755 index 0000000000..d6b48e353b --- /dev/null +++ b/examples/ui/assets_and_images/assets/logo.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/ui/assets_and_images/lib/logo.dart b/examples/ui/assets_and_images/lib/logo.dart new file mode 100644 index 0000000000..eedbc1e426 --- /dev/null +++ b/examples/ui/assets_and_images/lib/logo.dart @@ -0,0 +1,8 @@ +import 'package:flutter/widgets.dart'; +// #docregion TransformedAsset +import 'package:vector_graphics/vector_graphics.dart'; + +const Widget logo = VectorGraphic( + loader: AssetBytesLoader('assets/logo.svg'), +); +// #enddocregion TransformedAsset diff --git a/examples/ui/assets_and_images/pubspec.yaml b/examples/ui/assets_and_images/pubspec.yaml index b01b9d534c..b3ecf297b7 100644 --- a/examples/ui/assets_and_images/pubspec.yaml +++ b/examples/ui/assets_and_images/pubspec.yaml @@ -9,12 +9,14 @@ dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.6 + vector_graphics: 1.1.10+1 dev_dependencies: example_utils: path: ../../example_utils flutter_test: sdk: flutter + vector_graphics_compiler: 1.1.10+1 flutter: uses-material-design: true @@ -22,3 +24,6 @@ flutter: assets: - assets/my_icon.png - assets/background.png + - path: assets/logo.svg + transformers: + - package: vector_graphics_compiler diff --git a/src/_data/sidenav.yml b/src/_data/sidenav.yml index 7bf8bc5903..bb121162c9 100644 --- a/src/_data/sidenav.yml +++ b/src/_data/sidenav.yml @@ -273,6 +273,8 @@ permalink: /cookbook/images/fading-in-images - title: Play and pause a video permalink: /cookbook/plugins/play-video + - title: Transforming assets at build time + permalink: /ui/assets/asset-transformation - title: Navigation & routing permalink: /ui/navigation diff --git a/src/content/ui/assets/asset-transformation.md b/src/content/ui/assets/asset-transformation.md new file mode 100644 index 0000000000..f2714e34bc --- /dev/null +++ b/src/content/ui/assets/asset-transformation.md @@ -0,0 +1,92 @@ +--- +title: Transforming assets at build time +description: How to set up automatic transformation of images (and other assets) in your Flutter app. +short-title: Asset transformation +--- + +You can configure your project to automatically transform assets +at build time using compatible Dart packages. + +## Specifying asset transformations + +In the `pubspec.yaml` file, list the assets to be transformed and the associated +transformer package. + +```yaml +flutter: + assets: + - path: assets/logo.svg + transformers: + - package: vector_graphics_compiler +``` + +With this configuration, `assets/logo.svg` is transformed by the +[`vector_graphics_compiler`][] package as it is copied to the build output. This +package precompiles SVG files into an optimized binary files that can be +displayed using the [`vector_graphics`][] package, like so: + + +```dart +import 'package:vector_graphics/vector_graphics.dart'; + +const Widget logo = VectorGraphic( + loader: AssetBytesLoader('assets/logo.svg'), +); +``` + +### Passing arguments to asset transformers + +To pass a string of arguments to an asset transformer, +also specify that in the pubspec: + +```yaml +flutter: + assets: + - path: assets/logo.svg + transformers: + - package: vector_graphics_compiler + args: '--tessellate --font-size=14' +``` + +### Chaining asset transformers + +Asset transformers can be chained and are applied in +the order they are declared. +Consider the following example using imaginary packages: + +```yaml +flutter: + assets: + - path: assets/bird.png + transformers: + - package: grayscale_filter + - package: png_optimizer +``` + +Here, `bird.png` is transformed by the `grayscale_filter` package. +The output is then transformed by the `png_optimizer` package before being +bundled into the built app. + +## Writing asset transformer packages + +An asset transformer is a Dart [command-line app][] that is invoked with +`dart run` with at least two arguments: `--input`, which contains the path to +the file to transform and `--output`, which is the location where the +transformer code must write its output to. + +If the transformer applications finishes with a non-zero exit code, the build +fails with error message explaining that transformation of the asset failed. +Anything written to the [`stderr`] stream of the process by the transformer is +included in the error message. + +## Sample + +For a sample Flutter project that uses asset transformation and includes a custom +Dart package that is used as a transformer, check out the +[asset_transformers project in the Flutter samples repo][]. + +[command-line app]: {{site.dart-site}}/tutorials/server/cmdline +[asset_transformers project in the Flutter samples repo]: {{site.repo.samples}}/tree/main/asset_transformation +[`vector_graphics_compiler`]: {{site.pub}}/packages/vector_graphics_compiler +[`vector_graphics`]: {{site.pub}}//packages/vector_graphics +[`stderr`]: {{site.api}}/flutter/dart-io/Process/stderr.html diff --git a/src/content/ui/assets/assets-and-images.md b/src/content/ui/assets/assets-and-images.md index 4658fed89f..70b6ddf595 100644 --- a/src/content/ui/assets/assets-and-images.md +++ b/src/content/ui/assets/assets-and-images.md @@ -60,6 +60,14 @@ During a build, Flutter places assets into a special archive called the _asset bundle_ that apps read from at runtime. +### Automatic transformation of asset files at build time + +Flutter supports using a Dart package to transform asset files when building your app. +To do this, specify the asset files and transformer package in your pubspec file. +To learn more, check out [Transforming assets at build time][]. +To learn how to do this and write your own asset-transforming packages, see +[Transforming assets at build time][]. + ## Loading assets Your app can access its assets through an @@ -504,3 +512,4 @@ For more details, see [MediaQueryData.size]: {{site.api}}/flutter/widgets/MediaQueryData/size.html [MaterialApp]: {{site.api}}/flutter/material/MaterialApp-class.html [CupertinoApp]: {{site.api}}/flutter/cupertino/CupertinoApp-class.html +[Transforming assets at build time]: /ui/assets/asset-transformation From 729df8b9f97e0d7e97798ce066e7f5b142739cb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=94=90=E5=AE=B6=E6=9E=97?= Date: Mon, 13 May 2024 04:51:26 +0800 Subject: [PATCH 076/109] Add explanation on how to open a drawer (#10548) --- .../cookbook/design/drawer/lib/drawer.dart | 23 ++++++++++ examples/cookbook/design/drawer/lib/main.dart | 14 +++++- src/content/cookbook/design/drawer.md | 46 ++++++++++++++++++- 3 files changed, 80 insertions(+), 3 deletions(-) diff --git a/examples/cookbook/design/drawer/lib/drawer.dart b/examples/cookbook/design/drawer/lib/drawer.dart index 0649317934..dc88a44c4a 100644 --- a/examples/cookbook/design/drawer/lib/drawer.dart +++ b/examples/cookbook/design/drawer/lib/drawer.dart @@ -60,6 +60,29 @@ void drawerListview() { // #enddocregion DrawerListView } +void drawerOpen() { + // #docregion DrawerOpen + Scaffold( + appBar: AppBar( + title: const Text('AppBar with hamburger button'), + leading: Builder( + builder: (context) { + return IconButton( + icon: const Icon(Icons.menu), + onPressed: () { + Scaffold.of(context).openDrawer(); + }, + ); + }, + ), + ), + drawer: Drawer( + child: null, // Populate the Drawer in the last step. + ), + ); + // #enddocregion DrawerOpen +} + void drawerClose() { Builder( builder: (context) { diff --git a/examples/cookbook/design/drawer/lib/main.dart b/examples/cookbook/design/drawer/lib/main.dart index 0609766549..dc4376f7cc 100644 --- a/examples/cookbook/design/drawer/lib/main.dart +++ b/examples/cookbook/design/drawer/lib/main.dart @@ -53,7 +53,19 @@ class _MyHomePageState extends State { @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar(title: Text(widget.title)), + appBar: AppBar( + title: Text(widget.title), + leading: Builder( + builder: (context) { + return IconButton( + icon: const Icon(Icons.menu), + onPressed: () { + Scaffold.of(context).openDrawer(); + }, + ); + }, + ), + ), body: Center( child: _widgetOptions[_selectedIndex], ), diff --git a/src/content/cookbook/design/drawer.md b/src/content/cookbook/design/drawer.md index 1d528dcfa1..6d529e2013 100644 --- a/src/content/cookbook/design/drawer.md +++ b/src/content/cookbook/design/drawer.md @@ -110,7 +110,37 @@ Drawer( ); ``` -## 4. Close the drawer programmatically +## 4. Open the drawer programmatically + +Typically, you don't need to write any code to open a `drawer`, +Because when the `leading` widget is null, the default implementation in `AppBar` is `DrawerButton`. + +But if you want to have free control of the `drawer`. +You can do this by using the `Builder` call `Scaffold.of(context).openDrawer()`. + + +```dart +Scaffold( + appBar: AppBar( + title: const Text('AppBar with hamburger button'), + leading: Builder( + builder: (context) { + return IconButton( + icon: const Icon(Icons.menu), + onPressed: () { + Scaffold.of(context).openDrawer(); + }, + ); + }, + ), + ), + drawer: Drawer( + child: // Populate the Drawer in the last step. + ), +); +``` + +## 5. Close the drawer programmatically After a user taps an item, you might want to close the drawer. You can do this by using the [`Navigator`][]. @@ -200,7 +230,19 @@ class _MyHomePageState extends State { @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar(title: Text(widget.title)), + appBar: AppBar( + title: Text(widget.title), + leading: Builder( + builder: (context) { + return IconButton( + icon: const Icon(Icons.menu), + onPressed: () { + Scaffold.of(context).openDrawer(); + }, + ); + }, + ), + ), body: Center( child: _widgetOptions[_selectedIndex], ), From 113be7cd48c41c8598c9790bf213cc4f0658d311 Mon Sep 17 00:00:00 2001 From: Kevin Chisholm Date: Sun, 12 May 2024 20:21:00 -0500 Subject: [PATCH 077/109] Add preliminary 3.22 release changelog and docs (#10562) Release notes for Flutter 3.22. --------- Co-authored-by: Parker Lougheed --- src/content/release/breaking-changes/index.md | 2 + src/content/release/release-notes/index.md | 9 + .../release-notes/release-notes-3.22.0.md | 1610 +++++++++++++++++ 3 files changed, 1621 insertions(+) create mode 100644 src/content/release/release-notes/release-notes-3.22.0.md diff --git a/src/content/release/breaking-changes/index.md b/src/content/release/breaking-changes/index.md index 5ce2b28d41..c8f5a4ddea 100644 --- a/src/content/release/breaking-changes/index.md +++ b/src/content/release/breaking-changes/index.md @@ -31,6 +31,8 @@ release, and listed in alphabetical order: [`dart fix`]: /tools/flutter-fix [test registry]: {{site.github}}/flutter/tests + + ### Not yet released to stable * [Navigator's page APIs breaking change][] diff --git a/src/content/release/release-notes/index.md b/src/content/release/release-notes/index.md index 8e45fe8ac1..9e414f1262 100644 --- a/src/content/release/release-notes/index.md +++ b/src/content/release/release-notes/index.md @@ -12,6 +12,12 @@ For information about bug-fix releases, check out [Hotfixes to the Stable Channel][] on the Flutter wiki. ::: +* 3.22.0 _(Tentative)_ + {% comment %} + * [3.22.0 announcement][] + {% endcomment -%} + * [3.22.0 release notes & change log][] + * [3.22.0 breaking changes & migrations][] * 3.19.0 * [3.19.0 announcement][] * [3.19.0 release notes & change log][] @@ -77,6 +83,9 @@ For information about bug-fix releases, check out * Earlier * [Archived release notes][] +[3.22.0 announcement]: {{site.flutter-medium}}/whats-new-in-flutter-3-22-fbde6c164fe3 +[3.22.0 release notes & change log]: /release/release-notes/release-notes-3.22.0 +[3.22.0 breaking changes & migrations]: /release/breaking-changes#released-in-flutter-3-22 [3.19.0 announcement]: {{site.flutter-medium}}/whats-new-in-flutter-3-19-58b1aae242d2 [3.19.0 release notes & change log]: /release/release-notes/release-notes-3.19.0 [3.19.0 breaking changes & migrations]: /release/breaking-changes#released-in-flutter-3-19 diff --git a/src/content/release/release-notes/release-notes-3.22.0.md b/src/content/release/release-notes/release-notes-3.22.0.md new file mode 100644 index 0000000000..706da43001 --- /dev/null +++ b/src/content/release/release-notes/release-notes-3.22.0.md @@ -0,0 +1,1610 @@ +--- +title: Flutter 3.22.0 release notes +short-title: 3.22.0 release notes +description: Release notes for Flutter 3.22.0. +--- + +This page has release notes for 3.22.0. +For information about subsequent bug-fix releases, +see [Hotfixes to the Stable Channel][]. + +[Hotfixes to the Stable Channel]: {{site.repo.flutter}}/wiki/Hotfixes-to-the-Stable-Channel + +## Flutter + +### Framework +* Disable test shuffling in widget_tester_leaks_test.dart by @zanderso in [141110](https://github.com/flutter/flutter/pull/141110) +* Fix spell check throws when text contains regex reserved characters by @bleroux in [140384](https://github.com/flutter/flutter/pull/140384) +* Remove conditions that depend on order. by @polina-c in [141183](https://github.com/flutter/flutter/pull/141183) +* Upgrade leak_tracker. by @polina-c in [141153](https://github.com/flutter/flutter/pull/141153) +* Update `RouteObserver` example and fix an error thrown by @TahaTesser in [141166](https://github.com/flutter/flutter/pull/141166) +* Introduce new Form validation method by @SharbelOkzan in [135578](https://github.com/flutter/flutter/pull/135578) +* Reapply "Dynamic view sizing" (#140165) by @goderbauer in [140918](https://github.com/flutter/flutter/pull/140918) +* Correctly handle null case in ProcessText.queryTextActions by @kevmoo in [141205](https://github.com/flutter/flutter/pull/141205) +* TextStyle: In copyWith, stop ignoring debugLabel when receiver has none by @chrisbobbe in [141141](https://github.com/flutter/flutter/pull/141141) +* `NestedScrollView`'s outer scrollable jumping with `BouncingScrollPhysics` due to `double` precision errors by @Michal-MK in [138319](https://github.com/flutter/flutter/pull/138319) +* Improve testing for leak tracking. by @polina-c in [140553](https://github.com/flutter/flutter/pull/140553) +* Fix mechanism to pass flag for leak tracking. by @polina-c in [141226](https://github.com/flutter/flutter/pull/141226) +* Call onPopInvoked when pages API is used by @justinmc in [141221](https://github.com/flutter/flutter/pull/141221) +* Add covariants to reduce subclass casts in 2D APIs by @Piinks in [141318](https://github.com/flutter/flutter/pull/141318) +* Fix a leak. by @polina-c in [141312](https://github.com/flutter/flutter/pull/141312) +* Add dart fix support to flutter_driver by @Piinks in [141300](https://github.com/flutter/flutter/pull/141300) +* Add impeller key to skia gold client, Turn on a framework test shard that will run unit tests with --enable-impeller by @jonahwilliams in [141341](https://github.com/flutter/flutter/pull/141341) +* Fix `ListWheelScrollView` in an `AnimatedContainer` with zero height throw an error by @TahaTesser in [141372](https://github.com/flutter/flutter/pull/141372) +* Fix typo by @QuncCccccc in [141426](https://github.com/flutter/flutter/pull/141426) +* unpin web_socket_channel and roll pub packages by @christopherfujino in [141424](https://github.com/flutter/flutter/pull/141424) +* Added newline at end of `.gitignore` files by @OutdatedGuy in [141270](https://github.com/flutter/flutter/pull/141270) +* BoxPainter should dispatch creation and disposal events. by @ksokolovskyi in [141526](https://github.com/flutter/flutter/pull/141526) +* Reverts "BoxPainter should dispatch creation and disposal events." by @auto-submit in [141545](https://github.com/flutter/flutter/pull/141545) +* Reference GitHub issue in TODO comment by @bartekpacia in [141582](https://github.com/flutter/flutter/pull/141582) +* Allow selection in composing region by @LongCatIsLooong in [140516](https://github.com/flutter/flutter/pull/140516) +* TrainHoppingAnimation should dispatch creation and disposal events. by @ksokolovskyi in [141635](https://github.com/flutter/flutter/pull/141635) +* [web] prepare for [49786](https://github.com/flutter/engine/pull/49786) by @yjbanov in https://github.com/flutter/flutter/pull/141700 +* [web] prepare layers_test.dart for [49786](https://github.com/flutter/engine/pull/49786) by @yjbanov in https://github.com/flutter/flutter/pull/141731 +* Enable native compilation for windows-arm64 by @pbo-linaro in [137618](https://github.com/flutter/flutter/pull/137618) +* ScaleGestureRecognizer pointerCount=2 for trackpad gestures by @moffatman in [140745](https://github.com/flutter/flutter/pull/140745) +* Reverts "Enable native compilation for windows-arm64 " by @auto-submit in [141809](https://github.com/flutter/flutter/pull/141809) +* enable more tests in web mode by @yjbanov in [141791](https://github.com/flutter/flutter/pull/141791) +* Tiny fix inaccurate documentations about bindings by @fzyzcjy in [140282](https://github.com/flutter/flutter/pull/140282) +* Revert "Make tests more resilient to Skia gold failures and refactor flutter_goldens for extensive technical debt removal (#140101)" by @Hixie in [141814](https://github.com/flutter/flutter/pull/141814) +* Mark defaultTargetPlatform as constant for non-debug non-web builds. by @sstrickl in [141105](https://github.com/flutter/flutter/pull/141105) +* Add documentation which explains that `debugPrint` also logs in release mode by @ueman in [141595](https://github.com/flutter/flutter/pull/141595) +* Remove unneeded expectation in test by @gspencergoog in [141822](https://github.com/flutter/flutter/pull/141822) +* Do not hang on test failures of tests within `flutter_tools` by @matanlurey in [141821](https://github.com/flutter/flutter/pull/141821) +* Remove duplicate code as suggested by natebosch. by @matanlurey in [141988](https://github.com/flutter/flutter/pull/141988) +* Floating cursor docs by @justinmc in [133002](https://github.com/flutter/flutter/pull/133002) +* Enable contextMenuBuilder in the absence of selectionControls by @Hixie in [141810](https://github.com/flutter/flutter/pull/141810) +* Add a comment about how to test flutter_goldens by @Hixie in [141902](https://github.com/flutter/flutter/pull/141902) +* Remove unused clipBehavior from OverflowBar by @goderbauer in [141976](https://github.com/flutter/flutter/pull/141976) +* Merge flutter_goldens_client into flutter_goldens by @Hixie in [141900](https://github.com/flutter/flutter/pull/141900) +* Ignore a leak. by @polina-c in [141737](https://github.com/flutter/flutter/pull/141737) +* Refactor `external_ui` → `external_textures` by @matanlurey in [142062](https://github.com/flutter/flutter/pull/142062) +* Upgrade leak_tracker. by @polina-c in [142162](https://github.com/flutter/flutter/pull/142162) +* PopScope example improvements by @justinmc in [142163](https://github.com/flutter/flutter/pull/142163) +* Implementing `switch` expressions in the `cupertino/` directory by @nate-thegrate in [141591](https://github.com/flutter/flutter/pull/141591) +* fix Ink not updating on TextField newline by @NobodyForNothing in [140700](https://github.com/flutter/flutter/pull/140700) +* Enable native compilation for windows-arm64 by @pbo-linaro in [141930](https://github.com/flutter/flutter/pull/141930) +* Instrument ImageInfo. by @polina-c in [141411](https://github.com/flutter/flutter/pull/141411) +* Start renaming by adding a new `bringup: true` as an Android emulator. by @matanlurey in [142257](https://github.com/flutter/flutter/pull/142257) +* Fix not disposed ImageInfo in tests. by @polina-c in [142287](https://github.com/flutter/flutter/pull/142287) +* Add runWidget to bootstrap a widget tree without a default View by @goderbauer in [141484](https://github.com/flutter/flutter/pull/141484) +* Reverts "Add runWidget to bootstrap a widget tree without a default View" by @auto-submit in [142339](https://github.com/flutter/flutter/pull/142339) +* Remove duplicate global declaration of `UserMessages` by @andrewkolos in [142281](https://github.com/flutter/flutter/pull/142281) +* Fix assertion failure when reordering two dimensional children by @Amir-P in [141504](https://github.com/flutter/flutter/pull/141504) +* Relands "Add runWidget to bootstrap a widget tree without a default View" by @goderbauer in [142344](https://github.com/flutter/flutter/pull/142344) +* Update Android minSdkVersion to 21 by @zanderso in [142267](https://github.com/flutter/flutter/pull/142267) +* Opt out test from leak tracking. by @polina-c in [142417](https://github.com/flutter/flutter/pull/142417) +* Fix SliverMainAxisGroup geometry cacheExtent by @Piinks in [142482](https://github.com/flutter/flutter/pull/142482) +* Reset framesEnabled to default value at the end of each test by @aizatazhar in [141844](https://github.com/flutter/flutter/pull/141844) +* use PDI to end the isolated scope for RLI by @kseino in [141345](https://github.com/flutter/flutter/pull/141345) +* "System back gesture" explanation by @justinmc in [142254](https://github.com/flutter/flutter/pull/142254) +* Fix ParentDataWidget crash for multi view scenarios by @goderbauer in [142486](https://github.com/flutter/flutter/pull/142486) +* Unpin test by @christopherfujino in [141427](https://github.com/flutter/flutter/pull/141427) +* fix CupertinoTabView's Android back button handling with PopScope by @sstasi95 in [141604](https://github.com/flutter/flutter/pull/141604) +* Fix leaks in tests. by @polina-c in [142677](https://github.com/flutter/flutter/pull/142677) +* Write Tests for API Example of `form.0.dart` by @piedcipher in [142635](https://github.com/flutter/flutter/pull/142635) +* Avoid depending on files from build_system/targets other than from top level entrypoints in flutter_tools. by @chingjun in [142760](https://github.com/flutter/flutter/pull/142760) +* Support navigation during a Cupertino back gesture by @justinmc in [142248](https://github.com/flutter/flutter/pull/142248) +* Fix CupertinoTextSelectionToolbar clipping by @luccasclezar in [138195](https://github.com/flutter/flutter/pull/138195) +* Update TextSelectionOverlay by @justinmc in [142463](https://github.com/flutter/flutter/pull/142463) +* Update gradle lockfiles template by @bartekpacia in [140115](https://github.com/flutter/flutter/pull/140115) +* Reverts "Update gradle lockfiles template" by @auto-submit in [142889](https://github.com/flutter/flutter/pull/142889) +* Grey out non-selectable days in CupertinoDatePicker by @ShaunByrne-UniSA in [136181](https://github.com/flutter/flutter/pull/136181) +* Fix CupertinoPageScaffold resizeToAvoidBottomInset by @moffatman in [142776](https://github.com/flutter/flutter/pull/142776) +* Make destructiveRed a CupertinoDynamicColor by @paldepind in [141364](https://github.com/flutter/flutter/pull/141364) +* [Windows] Fix signed/unsigned int comparison by @cbracken in [142341](https://github.com/flutter/flutter/pull/142341) +* Update _goldens_io.dart to generate failure images during a size mism… by @bramp in [142177](https://github.com/flutter/flutter/pull/142177) +* Instrument CurvedAnimation. by @polina-c in [143007](https://github.com/flutter/flutter/pull/143007) +* Dispose precached image info by @dnfield in [143017](https://github.com/flutter/flutter/pull/143017) +* Handle transitions to AppLifecycleState.detached in lifecycle state generation by @maRci002 in [142523](https://github.com/flutter/flutter/pull/142523) +* Add indexInParent to SemanticsNode debug information by @goderbauer in [142826](https://github.com/flutter/flutter/pull/142826) +* Add the number of mismatched pixels to golden tests output by @ValentinVignal in [142975](https://github.com/flutter/flutter/pull/142975) +* Add a test for the isAvailableForEnvironment logic by @Hixie in [142251](https://github.com/flutter/flutter/pull/142251) +* Restore log dumps for gradle OOM crashes, and set a value for `MaxMetaspaceSize` by @gmackall in [143085](https://github.com/flutter/flutter/pull/143085) +* Reland "Update gradle lockfiles template (#140115)" by @bartekpacia in [143081](https://github.com/flutter/flutter/pull/143081) +* Cross-link SliverFixedExtentList/SliverPrototypeExtentList/SliverVariedExtentList by @goderbauer in [143184](https://github.com/flutter/flutter/pull/143184) +* Layout animated GIFs only once by @goderbauer in [143188](https://github.com/flutter/flutter/pull/143188) +* Migrate integration_test plugin to Gradle Kotlin DSL by @bartekpacia in [142008](https://github.com/flutter/flutter/pull/142008) +* Set plugin template minimum iOS version to 12.0 by @jmagman in [143167](https://github.com/flutter/flutter/pull/143167) +* Add position data to `OnDragEnd` callback by @whiskeyPeak in [140378](https://github.com/flutter/flutter/pull/140378) +* Fix: performance improvement on golden test comparison by @krispypen in [142913](https://github.com/flutter/flutter/pull/142913) +* Upgrade leak_tracker. by @polina-c in [143236](https://github.com/flutter/flutter/pull/143236) +* Fix text painter longest line resizing logic for `TextWidthBasis.longestLine` by @LongCatIsLooong in [143024](https://github.com/flutter/flutter/pull/143024) +* Update integration_test iOS FTL README script to remove targeted version by @jmagman in [143248](https://github.com/flutter/flutter/pull/143248) +* Add documentation for best practices for `StreamBuilder` like `FutureBuilder` by @ValentinVignal in [143295](https://github.com/flutter/flutter/pull/143295) +* [web] Move JS interop to extension types by @kevmoo in [143274](https://github.com/flutter/flutter/pull/143274) +* Revert "Migrate integration_test plugin to Gradle Kotlin DSL (#142008)" by @camsim99 in [143329](https://github.com/flutter/flutter/pull/143329) +* Implementing `switch` expressions in `widgets/` by @nate-thegrate in [143293](https://github.com/flutter/flutter/pull/143293) +* Update dependencies in integration test by @reidbaker in [143111](https://github.com/flutter/flutter/pull/143111) +* Have `FocusManager` respond to app lifecycle state changes by @nate-thegrate in [142930](https://github.com/flutter/flutter/pull/142930) +* [devicelab] retain first frame data in certain integration tests. by @jonahwilliams in [143419](https://github.com/flutter/flutter/pull/143419) +* Format all kotlin according to ktlint by @gmackall in [143390](https://github.com/flutter/flutter/pull/143390) +* Add more documentation for TextEditingController default constructor by @bleroux in [143452](https://github.com/flutter/flutter/pull/143452) +* Fix and test SemanticsController.simulatedAccessibilityTraversal by @Piinks in [143386](https://github.com/flutter/flutter/pull/143386) +* Reverts "Fix and test SemanticsController.simulatedAccessibilityTraversal (#143386)" by @auto-submit in [143523](https://github.com/flutter/flutter/pull/143523) +* Reland simulatedAccessibilityTraversal fix by @Piinks in [143527](https://github.com/flutter/flutter/pull/143527) +* Fix minor spelling error by @jawscout in [143541](https://github.com/flutter/flutter/pull/143541) +* Fix SemanticsFinder for multi-view by @goderbauer in [143485](https://github.com/flutter/flutter/pull/143485) +* Fix implementation imports outside of lib by @goderbauer in [143594](https://github.com/flutter/flutter/pull/143594) +* [framework] Skip 5 failing framework tests. by @jonahwilliams in [143618](https://github.com/flutter/flutter/pull/143618) +* [Impeller] skip perspective transformed text goldens. by @jonahwilliams in [143623](https://github.com/flutter/flutter/pull/143623) +* [Impeller] skip selectable text goldens for instability. by @jonahwilliams in [143627](https://github.com/flutter/flutter/pull/143627) +* ShowCaretOnScreen is correctly scheduled within a SliverMainAxisGroup by @yiiim in [141671](https://github.com/flutter/flutter/pull/141671) +* Fixed the issue of incorrect item position when prototypeItem is set in SliverReorderableList. by @yiiim in [142880](https://github.com/flutter/flutter/pull/142880) +* Small fixes in TextEditingController docs by @gnprice in [143717](https://github.com/flutter/flutter/pull/143717) +* Handle FormatException from SkiaGoldClient by @zanderso in [143755](https://github.com/flutter/flutter/pull/143755) +* Explain when and why to use CrossAxisAlignment.baseline by @gnprice in [143632](https://github.com/flutter/flutter/pull/143632) +* [gold] Always provide host ABI to gold config by @jonahwilliams in [143621](https://github.com/flutter/flutter/pull/143621) +* Change `ItemExtentBuilder`'s return value nullable by @xu-baolin in [142428](https://github.com/flutter/flutter/pull/142428) +* Implement `_suspendedNode` fix by @nate-thegrate in [143556](https://github.com/flutter/flutter/pull/143556) +* Fix initialization of time in repeat on AnimationController by @paldepind in [142887](https://github.com/flutter/flutter/pull/142887) +* Deprecate redundant itemExtent in RenderSliverFixedExtentBoxAdaptor methods by @Piinks in [143412](https://github.com/flutter/flutter/pull/143412) +* Disable color filter sepia test for Impeller. by @jonahwilliams in [143861](https://github.com/flutter/flutter/pull/143861) +* Re-use methods to calculate leading and trailing garbage in RenderSliverMultiBoxAdaptor by @Piinks in [143884](https://github.com/flutter/flutter/pull/143884) +* Support using lightweight Flutter Engines to run tests by @derekxu16 in [141726](https://github.com/flutter/flutter/pull/141726) +* Fix documentation typo in basic.dart by @gruner in [143887](https://github.com/flutter/flutter/pull/143887) +* Add missing `TextPainter.strutStyle` to paragraph style by @LongCatIsLooong in [143771](https://github.com/flutter/flutter/pull/143771) +* Use inlining annotations on important methods for all targets by @mkustermann in [143923](https://github.com/flutter/flutter/pull/143923) +* Remove deprecated FlutterDriver.enableAccessibility by @Piinks in [143979](https://github.com/flutter/flutter/pull/143979) +* Remove deprecated MediaQuery.boldTextOverride by @goderbauer in [143960](https://github.com/flutter/flutter/pull/143960) +* Remove deprecated TimelineSummary.writeSummaryToFile by @Piinks in [143983](https://github.com/flutter/flutter/pull/143983) +* Remove deprecated AnimatedListItemBuilder, AnimatedListRemovedItemBuilder by @goderbauer in [143974](https://github.com/flutter/flutter/pull/143974) +* Remove deprecated `KeepAliveHandle.release` by @LongCatIsLooong in [143961](https://github.com/flutter/flutter/pull/143961) +* Remove deprecated `InteractiveViewer.alignPanAxis` by @LongCatIsLooong in [142500](https://github.com/flutter/flutter/pull/142500) +* disable debug banner in m3 page test apps. by @jonahwilliams in [143857](https://github.com/flutter/flutter/pull/143857) +* Render the warm up frame in a proper rendering process by @dkwingsmt in [143290](https://github.com/flutter/flutter/pull/143290) +* Implementing `switch` expressions in `rendering/` by @nate-thegrate in [143812](https://github.com/flutter/flutter/pull/143812) +* Allow `Listenable.merge()` to use any iterable by @nate-thegrate in [143675](https://github.com/flutter/flutter/pull/143675) +* Move debugShowWidgetInspectorOverride by @polina-c in [144029](https://github.com/flutter/flutter/pull/144029) +* Remove strut migration flag from `TextPainter` by @LongCatIsLooong in [144242](https://github.com/flutter/flutter/pull/144242) +* Cache `FocusNode.enclosingScope`, clean up `descendantsAreFocusable` by @LongCatIsLooong in [144207](https://github.com/flutter/flutter/pull/144207) +* Remove deprecated `CupertinoContextMenu.previewBuilder` by @LongCatIsLooong in [143990](https://github.com/flutter/flutter/pull/143990) +* Clean up lint ignores by @eliasyishak in [144229](https://github.com/flutter/flutter/pull/144229) +* fix: unexpected chinese punctuation by @ufolux in [143678](https://github.com/flutter/flutter/pull/143678) +* Use const route for notAnnounced. by @polina-c in [144050](https://github.com/flutter/flutter/pull/144050) +* Reverts "Cache `FocusNode.enclosingScope`, clean up `descendantsAreFocusable` (#144207)" by @auto-submit in [144292](https://github.com/flutter/flutter/pull/144292) +* Remove irrelevant comment in TextPainter by @tgucio in [144308](https://github.com/flutter/flutter/pull/144308) +* Disable flaky golden file test by @Piinks in [144351](https://github.com/flutter/flutter/pull/144351) +* ReportTiming callback should record the sendFrameToEngine when it was scheduled by @dkwingsmt in [144212](https://github.com/flutter/flutter/pull/144212) +* Reland "Cache FocusNode.enclosingScope, clean up descendantsAreFocusable (#144207)" by @LongCatIsLooong in [144330](https://github.com/flutter/flutter/pull/144330) +* Use robolectric/AndroidJUnit4 for integration test tests by @dnfield in [144348](https://github.com/flutter/flutter/pull/144348) +* Docs on the interaction between Shortcuts and text input by @justinmc in [144328](https://github.com/flutter/flutter/pull/144328) +* [flutter_tools] Update external link in Android manifest template by @bleroux in [144302](https://github.com/flutter/flutter/pull/144302) +* Add `FocusNode.focusabilityListenable` by @LongCatIsLooong in [144280](https://github.com/flutter/flutter/pull/144280) +* Add stateful reordering test for TwoDimensionalViewport by @Amir-P in [142375](https://github.com/flutter/flutter/pull/142375) +* [Windows] Update keyboard modifiers link by @loic-sharma in [144426](https://github.com/flutter/flutter/pull/144426) +* Fix Small Typo in Skia_Client Doc Comment by @piedcipher in [144490](https://github.com/flutter/flutter/pull/144490) +* Fix text color for default CupertinoContextMenuAction by @bleroux in [144542](https://github.com/flutter/flutter/pull/144542) +* Remove unnecessary (and the only) `RenderObject.markParentNeedsLayout` override by @LongCatIsLooong in [144466](https://github.com/flutter/flutter/pull/144466) +* Disable super flakey impeller test. by @jonahwilliams in [144573](https://github.com/flutter/flutter/pull/144573) +* Updated the TextButton image button example artwork by @HansMuller in [144583](https://github.com/flutter/flutter/pull/144583) +* Restorable CupertinoTextFormFieldRow by @bleroux in [144541](https://github.com/flutter/flutter/pull/144541) +* Updated the smiley TextButton example again by @HansMuller in [144630](https://github.com/flutter/flutter/pull/144630) +* Fill in SliverConstraints fields missing from ==, hashCode, toString by @gnprice in [143661](https://github.com/flutter/flutter/pull/143661) +* [Impeller] measure GPU memory usage. by @jonahwilliams in [144575](https://github.com/flutter/flutter/pull/144575) +* Fix code sample failing in smoke test by @goderbauer in [144709](https://github.com/flutter/flutter/pull/144709) +* Use wasm-compatible conditional import in timeline.dart, avoid emitting timeline events in SchedulerBinding by @mkustermann in [144682](https://github.com/flutter/flutter/pull/144682) +* Fix memory leak in `editable_gesture_test.dart` by @ValentinVignal in [144691](https://github.com/flutter/flutter/pull/144691) +* [flutter_test] Use defaultTargetPlatform for key events simulation by @bleroux in [143579](https://github.com/flutter/flutter/pull/143579) +* Rename isAvailableForEnvironment to isForEnvironment by @Hixie in [143176](https://github.com/flutter/flutter/pull/143176) +* Reverts "Rename isAvailableForEnvironment to isForEnvironment (#143176)" by @auto-submit in [144855](https://github.com/flutter/flutter/pull/144855) +* Upgrade vm_service. by @polina-c in [144845](https://github.com/flutter/flutter/pull/144845) +* Rename isAvailableForEnvironment to isForEnvironment (#143176) by @Hixie in [144858](https://github.com/flutter/flutter/pull/144858) +* Skip test temporarily until headingLevel is added in engine (issue 41… by @victorgalo in [135077](https://github.com/flutter/flutter/pull/135077) +* Fail tests on exceptions raised after test completed by @goderbauer in [144706](https://github.com/flutter/flutter/pull/144706) +* Reverts "Fail tests on exceptions raised after test completed (#144706)" by @auto-submit in [144970](https://github.com/flutter/flutter/pull/144970) +* Add platform check to `FocusManager` app lifecycle listener by @nate-thegrate in [144718](https://github.com/flutter/flutter/pull/144718) +* Write unit tests for API Examples of checkbox.0, checkbox.1 by @Moelfarri in [144888](https://github.com/flutter/flutter/pull/144888) +* Reland "Fail tests on exceptions raised after test completed (#144706)" by @goderbauer in [144980](https://github.com/flutter/flutter/pull/144980) +* Manually roll pub packages by @gmackall in [145005](https://github.com/flutter/flutter/pull/145005) +* Update gold validator to check for regression in flutter-gold check by @Piinks in [145008](https://github.com/flutter/flutter/pull/145008) +* Add a microbenchmark for text intrinsic height layout by @LongCatIsLooong in [145007](https://github.com/flutter/flutter/pull/145007) +* Reverts "Add a microbenchmark for text intrinsic height layout (#145007)" by @auto-submit in [145029](https://github.com/flutter/flutter/pull/145029) +* Reland "Add a microbenchmark for text intrinsic height layout (#145007)" by @LongCatIsLooong in [145037](https://github.com/flutter/flutter/pull/145037) +* [New feature]Introduce iOS multi-touch drag behavior by @xu-baolin in [141355](https://github.com/flutter/flutter/pull/141355) +* Set cacheExtent for SliverFillRemaining widget by @vashworth in [143612](https://github.com/flutter/flutter/pull/143612) +* Fix Cupertino Context Menu Container to Remove White Corners by @dhikshith12 in [144883](https://github.com/flutter/flutter/pull/144883) +* Revert "Add `FocusNode.focusabilityListenable` (#144280)" since the feature is no longer needed by @LongCatIsLooong in [145102](https://github.com/flutter/flutter/pull/145102) +* RenderViewport max layout cycles should depend on number of slivers by @knopp in [144104](https://github.com/flutter/flutter/pull/144104) +* Asserts if a `TextPainter` gets disposed more than once by @LongCatIsLooong in [145124](https://github.com/flutter/flutter/pull/145124) +* Platform view devicelab ad banner scroll list real ads by @hellohuanlin in [144745](https://github.com/flutter/flutter/pull/144745) +* Reverts "Platform view devicelab ad banner scroll list real ads (#144745)" by @auto-submit in [145189](https://github.com/flutter/flutter/pull/145189) +* Reland: "Platform view devicelab ad banner scroll list real ads" by @hellohuanlin in [145224](https://github.com/flutter/flutter/pull/145224) +* Reverts "Reland: "Platform view devicelab ad banner scroll list real ads" (#145224)" by @auto-submit in [145228](https://github.com/flutter/flutter/pull/145228) +* Use a separate `TextPainter` for intrinsics calculation in `RenderEditable` and `RenderParagraph` by @LongCatIsLooong in [144577](https://github.com/flutter/flutter/pull/144577) +* Platform view devicelab ad banner scroll list real ads by @jmagman in [145239](https://github.com/flutter/flutter/pull/145239) +* Factor out use of "print" in flutter_goldens by @Hixie in [144846](https://github.com/flutter/flutter/pull/144846) +* Activate shortcuts based on NumLock state by @bleroux in [145146](https://github.com/flutter/flutter/pull/145146) +* Roll pub packages by @flutter-pub-roller-bot in [145476](https://github.com/flutter/flutter/pull/145476) +* Add WidgetsApp.debugShowWidgetInspectorOverride again (deprecated) by @passsy in [145334](https://github.com/flutter/flutter/pull/145334) +* `flutter test --wasm` support by @eyebrowsoffire in [145347](https://github.com/flutter/flutter/pull/145347) +* Clarify AutomaticKeepAliveClientMixin semantics in build method by @Hixie in [145297](https://github.com/flutter/flutter/pull/145297) +* Fix nullability of getFullHeightForCaret by @goderbauer in [145554](https://github.com/flutter/flutter/pull/145554) +* Add some cross references in the docs, move an example to a dartpad example by @gspencergoog in [145571](https://github.com/flutter/flutter/pull/145571) +* Adds numpad navigation shortcuts for Linux by @bleroux in [145464](https://github.com/flutter/flutter/pull/145464) +* 2DScrollView - Fix drag when one axis does not have enough content by @Piinks in [145566](https://github.com/flutter/flutter/pull/145566) +* Fix skipping golden comparator for CI environments by @Piinks in [145619](https://github.com/flutter/flutter/pull/145619) +* [web][docs] Improve HtmlElementView widget docs. by @ditman in [145192](https://github.com/flutter/flutter/pull/145192) +* Fix typo in hitTest docs by @ksokolovskyi in [145677](https://github.com/flutter/flutter/pull/145677) +* Memory leaks clean up 1 by @ksokolovskyi in [145691](https://github.com/flutter/flutter/pull/145691) +* TwoDimensionalChildDelegate should dispatch creation and disposal events by @ksokolovskyi in [145684](https://github.com/flutter/flutter/pull/145684) +* Update semantics.dart by @eltociear in [145683](https://github.com/flutter/flutter/pull/145683) +* Add a `--print-dtd` flag to print the DTD address served by DevTools server by @kenzieschmoll in [144272](https://github.com/flutter/flutter/pull/144272) +* Fix memory leak in Overlay.wrap. by @ksokolovskyi in [145744](https://github.com/flutter/flutter/pull/145744) +* Memory leaks clean up 2 by @ksokolovskyi in [145757](https://github.com/flutter/flutter/pull/145757) +* [web] Add BackgroundIsolateBinaryMessenger.ensureInitialized to web. by @ditman in [145786](https://github.com/flutter/flutter/pull/145786) +* Add `viewId` to `TextInputConfiguration` by @mdebbar in [145708](https://github.com/flutter/flutter/pull/145708) +### Material +* [docs] Add document content related to chip shape by @asci-00 in [140015](https://github.com/flutter/flutter/pull/140015) +* Update `chip_test.dart` tests for Material 3 by @TahaTesser in [140964](https://github.com/flutter/flutter/pull/140964) +* Update Chips and `ChipTheme` tests and for Material 3 by @TahaTesser in [141022](https://github.com/flutter/flutter/pull/141022) +* [Android] Add custom system-wide text selection toolbar buttons for SelectableRegion by @bleroux in [141103](https://github.com/flutter/flutter/pull/141103) +* resolved the issue of indeterminate CircularProgressIndicator.adaptive on Darwin by @nikkivirtuoso in [140947](https://github.com/flutter/flutter/pull/140947) +* Fix or except leaks. by @polina-c in [141081](https://github.com/flutter/flutter/pull/141081) +* Expose 'enable' property to allow the user to disable the SearchBar by @Macacoazul01 in [137388](https://github.com/flutter/flutter/pull/137388) +* Fix `FlexibleSpaceBar` centered title position and title color by @TahaTesser in [140883](https://github.com/flutter/flutter/pull/140883) +* Adds support for StepStyle visual property bundle to the Step widget by @Mairramer in [140825](https://github.com/flutter/flutter/pull/140825) +* Remove hack from PageView. by @polina-c in [141138](https://github.com/flutter/flutter/pull/141138) +* Reverts "Remove hack from PageView." by @auto-submit in [141479](https://github.com/flutter/flutter/pull/141479) +* Fixed a lot of typos by @anisalibegic in [141431](https://github.com/flutter/flutter/pull/141431) +* Private disposables should dispatch creation and disposal events. by @ksokolovskyi in [141535](https://github.com/flutter/flutter/pull/141535) +* Fix #141061: Add 'color' property to `DrawerButton` and `EndDrawerButton` by @imp-sike in [141159](https://github.com/flutter/flutter/pull/141159) +* Ignore or fix leaks. by @polina-c in [141468](https://github.com/flutter/flutter/pull/141468) +* Fixed few typos by @anisalibegic in [141543](https://github.com/flutter/flutter/pull/141543) +* Fix Tooltip show delay when mouse moves to one Tooltip from another by @LongCatIsLooong in [141656](https://github.com/flutter/flutter/pull/141656) +* Add `headerHeight` for `SearchAnchor` by @QuncCccccc in [141223](https://github.com/flutter/flutter/pull/141223) +* Fix: TextField can inherit `errorStyle` from `InputDecorationTheme`. by @Renzo-Olivares in [141227](https://github.com/flutter/flutter/pull/141227) +* Deprecate M2 curves by @guidezpl in [134417](https://github.com/flutter/flutter/pull/134417) +* Reland "Remove hack from PageView." by @polina-c in [141533](https://github.com/flutter/flutter/pull/141533) +* Update margin between label and icon in Tab to better reflect Material specs by @davidmartos96 in [140698](https://github.com/flutter/flutter/pull/140698) +* Move the requestKeyboard up to the widgets layer by @Hixie in [141655](https://github.com/flutter/flutter/pull/141655) +* Make pumpWidget's arguments named by @goderbauer in [141728](https://github.com/flutter/flutter/pull/141728) +* Add `showDragHandle` to `showBottomSheet` by @QuncCccccc in [141754](https://github.com/flutter/flutter/pull/141754) +* `SearchAnchor` search view clear button only shows up when text input is not empty by @QuncCccccc in [141755](https://github.com/flutter/flutter/pull/141755) +* Fix "Delete" tooltip is shown disabled on chips with `onDeleted` callback by @TahaTesser in [141770](https://github.com/flutter/flutter/pull/141770) +* Remove more textScaleFactor references by @LongCatIsLooong in [141816](https://github.com/flutter/flutter/pull/141816) +* Update `ToggleButtons`, `ExpansionPanel`, and `ExpandIcon` tests for Material 3 by @TahaTesser in [141868](https://github.com/flutter/flutter/pull/141868) +* Fix `shape` and `collapsedShape` isn't applied to `ExpansionTile`'s splash ink by @TahaTesser in [141777](https://github.com/flutter/flutter/pull/141777) +* [web] - Fix broken `TextField` in semantics mode when it's a sibling of `Navigator` by @htoor3 in [138446](https://github.com/flutter/flutter/pull/138446) +* Fix `RangeSlider` throws a null-check error after `clearSemantics` is called by @TahaTesser in [141965](https://github.com/flutter/flutter/pull/141965) +* Revert "Remove hack from PageView." by @Jasguerrero in [141977](https://github.com/flutter/flutter/pull/141977) +* Add Share button to the SelectableRegion toolbar on Android by @bleroux in [141447](https://github.com/flutter/flutter/pull/141447) +* Add tooltip for the clear button on `SearchAnchor`'s search view by @QuncCccccc in [141804](https://github.com/flutter/flutter/pull/141804) +* Update material banner maxScaleFactor to meet GAR requirement by @hangyujin in [142015](https://github.com/flutter/flutter/pull/142015) +* Don't change the height of the Textfield's labelStyle when it focused. by @yiiim in [141943](https://github.com/flutter/flutter/pull/141943) +* Revert "[web] - Fix broken `TextField` in semantics mode when it's a sibling of `Navigator`" by @Jasguerrero in [142129](https://github.com/flutter/flutter/pull/142129) +* Fixes #138773, port autocomplete to OverlayPortal by @LongCatIsLooong in [140285](https://github.com/flutter/flutter/pull/140285) +* Revise tooltip theme docs, including more cross-references by @gnprice in [137316](https://github.com/flutter/flutter/pull/137316) +* Update navigationBar label's maxScaleFactor to meet GAR requirement by @hangyujin in [141998](https://github.com/flutter/flutter/pull/141998) +* Reland "Remove hack from PageView." by @polina-c in [142172](https://github.com/flutter/flutter/pull/142172) +* Fix text selection edge scrolling when inside a horizontal scrollable by @Renzo-Olivares in [140250](https://github.com/flutter/flutter/pull/140250) +* Fix incorrect zh-cn translation for Look Up Label in selection controls by @LouiseHsu in [142158](https://github.com/flutter/flutter/pull/142158) +* Fix `SegmentedButton` default size and default tappable size by @QuncCccccc in [142243](https://github.com/flutter/flutter/pull/142243) +* Remove textScaleFactor references from flutter/flutter by @LongCatIsLooong in [142271](https://github.com/flutter/flutter/pull/142271) +* Remove suspicious constant from input decorator layout by @LongCatIsLooong in [142342](https://github.com/flutter/flutter/pull/142342) +* Implementing `switch` expressions in `foundation/` and `material/` by @nate-thegrate in [142279](https://github.com/flutter/flutter/pull/142279) +* Add `SingleChildScrollView` for `NavigationRail` by @mbfakourii in [137415](https://github.com/flutter/flutter/pull/137415) +* Fix InputDecorationTheme copyWith fallback for iconColor by @goderbauer in [142462](https://github.com/flutter/flutter/pull/142462) +* Feat: TextField can scroll when disabled by @bryanoli in [140922](https://github.com/flutter/flutter/pull/140922) +* onNavigationNotification for *App.router by @justinmc in [142190](https://github.com/flutter/flutter/pull/142190) +* Organize leak tracking TODOs. by @polina-c in [142460](https://github.com/flutter/flutter/pull/142460) +* Fix: selection handles do not inherit color from local `Theme` widget by @Renzo-Olivares in [142476](https://github.com/flutter/flutter/pull/142476) +* Style correctness improvements for toStrings and related fixes by @Hixie in [142485](https://github.com/flutter/flutter/pull/142485) +* M3 - Fix Chip icon and label colors by @davidmartos96 in [140573](https://github.com/flutter/flutter/pull/140573) +* Add `DropdownMenu.focusNode` by @Hixie in [142516](https://github.com/flutter/flutter/pull/142516) +* Split out AppBar/SliverAppBar material tests by @Piinks in [142560](https://github.com/flutter/flutter/pull/142560) +* Fix null operator error when tapping on 'MenuItemButton' by @SelaseKay in [142230](https://github.com/flutter/flutter/pull/142230) +* Fix unresponsive mouse tooltip by @LongCatIsLooong in [142282](https://github.com/flutter/flutter/pull/142282) +* Mark test that leaks image. by @polina-c in [142539](https://github.com/flutter/flutter/pull/142539) +* Fix showDialog docs by @gspencergoog in [142458](https://github.com/flutter/flutter/pull/142458) +* Added ButtonStyle.foregroundBuilder and ButtonStyle.backgroundBuilder by @HansMuller in [141818](https://github.com/flutter/flutter/pull/141818) +* Fix token usages on Regular Chip and Action Chip by @davidmartos96 in [141701](https://github.com/flutter/flutter/pull/141701) +* Convert button `.icon` and `.tonalIcon` constructors to take nullable icons. by @gspencergoog in [142644](https://github.com/flutter/flutter/pull/142644) +* Introduce tone-based surfaces and accent color add-ons - Part 1 by @QuncCccccc in [142654](https://github.com/flutter/flutter/pull/142654) +* Reverts "Added ButtonStyle.foregroundBuilder and ButtonStyle.backgroundBuilder" by @auto-submit in [142748](https://github.com/flutter/flutter/pull/142748) +* Implement `switch` expressions in `lib/src/material/` by @nate-thegrate in [142634](https://github.com/flutter/flutter/pull/142634) +* Reland: Added ButtonStyle.foregroundBuilder and ButtonStyle.backgroundBuilder by @HansMuller in [142762](https://github.com/flutter/flutter/pull/142762) +* fix AppBar docs for backgroundColor & foregroundColor by @BiskupMaik in [142430](https://github.com/flutter/flutter/pull/142430) +* TextField context menu should fade on scroll on mobile devices by @Renzo-Olivares in [138313](https://github.com/flutter/flutter/pull/138313) +* Add `AnimationStyle` to `showSnackBar` by @TahaTesser in [142825](https://github.com/flutter/flutter/pull/142825) +* Material 3 - Tab indicator stretch animation by @davidmartos96 in [141954](https://github.com/flutter/flutter/pull/141954) +* Reverts "Add `AnimationStyle` to `showSnackBar`" by @auto-submit in [143001](https://github.com/flutter/flutter/pull/143001) +* Activate InkSparkle on CanvasKit by @bleroux in [138545](https://github.com/flutter/flutter/pull/138545) +* Reverts "Activate InkSparkle on CanvasKit" by @auto-submit in [143036](https://github.com/flutter/flutter/pull/143036) +* [reland] Add `AnimationStyle` to `showSnackBar` by @TahaTesser in [143052](https://github.com/flutter/flutter/pull/143052) +* Fix M3 text field height + initial step for input decorator M3 test migration by @bleroux in [142981](https://github.com/flutter/flutter/pull/142981) +* Revert "Add `SingleChildScrollView` for `NavigationRail`" by @goderbauer in [143097](https://github.com/flutter/flutter/pull/143097) +* Various improvements to text-editing-related documentation. by @Hixie in [142561](https://github.com/flutter/flutter/pull/142561) +* Fixed cursor blinking during selection. by @yiiim in [141380](https://github.com/flutter/flutter/pull/141380) +* Add a unit test for `NavigationRail` by @QuncCccccc in [143108](https://github.com/flutter/flutter/pull/143108) +* Correct menu position when menu is constrained by @QuncCccccc in [143121](https://github.com/flutter/flutter/pull/143121) +* barrierColor property in DialogTheme by @davidmartos96 in [142490](https://github.com/flutter/flutter/pull/142490) +* Implementing `switch` expressions in `lib/src/material/` by @nate-thegrate in [142793](https://github.com/flutter/flutter/pull/142793) +* Introduce `iconAlignment` for the buttons with icon by @piedcipher in [137348](https://github.com/flutter/flutter/pull/137348) +* Fix dual focus issue in CheckboxListTile, RadioListTile and SwitchListTile by @niteshsh4rma in [143213](https://github.com/flutter/flutter/pull/143213) +* Badge class doc typo - missing [ by @EnduringBeta in [143318](https://github.com/flutter/flutter/pull/143318) +* Fix `insetPadding` parameter nullability for dialogs by @TahaTesser in [143305](https://github.com/flutter/flutter/pull/143305) +* Pass-Through `inputFormatters` in `DropdownMenu` by @piedcipher in [143250](https://github.com/flutter/flutter/pull/143250) +* Fix `InputDecorator`s `suffix` and `prefix` widgets are tappable when hidden by @TahaTesser in [143308](https://github.com/flutter/flutter/pull/143308) +* Fix chips constructor docs for callbacks by @TahaTesser in [143361](https://github.com/flutter/flutter/pull/143361) +* Introduce `avatarBoxConstraints` & `deleteIconBoxConstraints` for the chips by @TahaTesser in [143302](https://github.com/flutter/flutter/pull/143302) +* [a11y] Add isEnabled semantics flag to text field by @hangyujin in [143334](https://github.com/flutter/flutter/pull/143334) +* Improve some scrollbar error messages by @loic-sharma in [143279](https://github.com/flutter/flutter/pull/143279) +* InputDecorator M3 test migration step2 by @bleroux in [143369](https://github.com/flutter/flutter/pull/143369) +* The initial/selected item on popup menu should always be visible by @QuncCccccc in [143118](https://github.com/flutter/flutter/pull/143118) +* cleanup now-irrelevant ignores for `deprecated_member_use` by @goderbauer in [143403](https://github.com/flutter/flutter/pull/143403) +* [a11y] Fix date picker cannot focus on the edit field by @hangyujin in [143117](https://github.com/flutter/flutter/pull/143117) +* Reverts "[a11y] Fix date picker cannot focus on the edit field (#143117)" by @auto-submit in [143493](https://github.com/flutter/flutter/pull/143493) +* Reverts "[a11y] Add isEnabled semantics flag to text field (#143334)" by @auto-submit in [143494](https://github.com/flutter/flutter/pull/143494) +* [devicelab] introduce new old gallery. by @jonahwilliams in [143486](https://github.com/flutter/flutter/pull/143486) +* Update `DataTable` docs for disabled `DataRow` ink well by @TahaTesser in [143450](https://github.com/flutter/flutter/pull/143450) +* Update `MaterialStatesController` docs for calling `setState` in a listener by @TahaTesser in [143453](https://github.com/flutter/flutter/pull/143453) +* Implementing `switch` expressions [refactoring `flutter/lib/src/`] by @nate-thegrate in [143496](https://github.com/flutter/flutter/pull/143496) +* Added Missing Field Name in Doc Comment in SnackBarThemeData by @piedcipher in [143588](https://github.com/flutter/flutter/pull/143588) +* Don't paint the cursor for an invalid selection by @LongCatIsLooong in [143533](https://github.com/flutter/flutter/pull/143533) +* Update InputDecoration.contentPadding documentation by @bleroux in [143519](https://github.com/flutter/flutter/pull/143519) +* InputDecorator M3 tests migration - Step3 by @bleroux in [143520](https://github.com/flutter/flutter/pull/143520) +* Introduce tone-based surfaces and accent color add-ons - Part 2 by @QuncCccccc in [138521](https://github.com/flutter/flutter/pull/138521) +* Clean leaks. by @polina-c in [142818](https://github.com/flutter/flutter/pull/142818) +* Changing `TextPainter.getOffsetForCaret` implementation to remove the logarithmic search by @LongCatIsLooong in [143281](https://github.com/flutter/flutter/pull/143281) +* Implementing `switch` expressions: everything in `flutter/lib/src/` by @nate-thegrate in [143634](https://github.com/flutter/flutter/pull/143634) +* Avoid applying partial dartfixes on CI by @LongCatIsLooong in [143551](https://github.com/flutter/flutter/pull/143551) +* Reverts "Changing `TextPainter.getOffsetForCaret` implementation to remove the logarithmic search (#143281)" by @auto-submit in [143801](https://github.com/flutter/flutter/pull/143801) +* Disable debug banner to stabilize impeller goldens. by @jonahwilliams in [143794](https://github.com/flutter/flutter/pull/143794) +* more fixes to unstable impeller goldens. by @jonahwilliams in [143811](https://github.com/flutter/flutter/pull/143811) +* Add `timeSelectorSeparatorColor` and `timeSelectorSeparatorTextStyle` for Material 3 Time Picker by @TahaTesser in [143739](https://github.com/flutter/flutter/pull/143739) +* `CalendarDatePicker` doesn't announce selected date on desktop by @TahaTesser in [143583](https://github.com/flutter/flutter/pull/143583) +* Update `hourMinuteTextStyle` defaults for Material 3 Time Picker by @TahaTesser in [143749](https://github.com/flutter/flutter/pull/143749) +* Add CurvedAnimation disposals in some widgets by @ksokolovskyi in [143790](https://github.com/flutter/flutter/pull/143790) +* Add CloseButtonTooltip to the 'X' button on a SnackBar by @dsanagustin in [143934](https://github.com/flutter/flutter/pull/143934) +* Revert "Introduce tone-based surfaces and accent color add-ons - Part 2" by @QuncCccccc in [143973](https://github.com/flutter/flutter/pull/143973) +* Implementing null-aware operators throughout the repository by @nate-thegrate in [143804](https://github.com/flutter/flutter/pull/143804) +* Relands "Changing `TextPainter.getOffsetForCaret` implementation to remove the logarithmic search (#143281)" (reverted in #143801) by @LongCatIsLooong in [143954](https://github.com/flutter/flutter/pull/143954) +* Fix `Scrollbar.thickness` property is ignored when the `Scrollbar` is hovered by @TahaTesser in [144012](https://github.com/flutter/flutter/pull/144012) +* Reland - Introduce tone-based surfaces and accent color add-ons - Part 2 by @QuncCccccc in [144001](https://github.com/flutter/flutter/pull/144001) +* Reverts "Reland - Introduce tone-based surfaces and accent color add-ons - Part 2 (#144001)" by @auto-submit in [144262](https://github.com/flutter/flutter/pull/144262) +* Reland [a11y] Add isEnabled semantics flag to text field by @hangyujin in [143601](https://github.com/flutter/flutter/pull/143601) +* Remove `bottomAppBarColor` from `ThemeData` by @QuncCccccc in [144080](https://github.com/flutter/flutter/pull/144080) +* Add `tabs_utils.dart` class by @TahaTesser in [143937](https://github.com/flutter/flutter/pull/143937) +* Reland "Reland - Introduce tone-based surfaces and accent color add-ons - Part 2" by @QuncCccccc in [144273](https://github.com/flutter/flutter/pull/144273) +* Mention SelectionArea in SelectableText docs by @justinmc in [143784](https://github.com/flutter/flutter/pull/143784) +* Remove `toggleableActiveColor` from `ThemeData` by @QuncCccccc in [144178](https://github.com/flutter/flutter/pull/144178) +* Remove deprecated `backgroundColor` from `ThemeData` by @QuncCccccc in [144079](https://github.com/flutter/flutter/pull/144079) +* Reland [a11y] Fix date picker cannot focus on the edit field by @hangyujin in [144198](https://github.com/flutter/flutter/pull/144198) +* Remove master from API docs by @goderbauer in [144425](https://github.com/flutter/flutter/pull/144425) +* Horizontally expand text selection toolbar buttons in overflow menu by @bleroux in [144391](https://github.com/flutter/flutter/pull/144391) +* InputDecorator M3 tests migration - Step4 - Hint tests by @bleroux in [144169](https://github.com/flutter/flutter/pull/144169) +* Fix chips use square delete button `InkWell` shape instead of circular by @TahaTesser in [144319](https://github.com/flutter/flutter/pull/144319) +* Fix `CalendarDatePicker` day selection shape and overlay by @TahaTesser in [144317](https://github.com/flutter/flutter/pull/144317) +* Fix `showDateRangePicker` is missing `dartpad` tag and cleanup by @TahaTesser in [144475](https://github.com/flutter/flutter/pull/144475) +* Doc fix for `DropdownButtonFormField.value` by @QuncCccccc in [144427](https://github.com/flutter/flutter/pull/144427) +* Add missing parameter to `TableBorder.symmetric`, and improve class constructors by @nate-thegrate in [144279](https://github.com/flutter/flutter/pull/144279) +* Revert "_DefaultTabControllerState should dispose all created TabContoller instances. (#136608)" by @goderbauer in [144579](https://github.com/flutter/flutter/pull/144579) +* Add regression test for TabBar crash by @goderbauer in [144627](https://github.com/flutter/flutter/pull/144627) +* Adds missing `style` to `PopupMenuButton` by @piedcipher in [143392](https://github.com/flutter/flutter/pull/143392) +* Remove deprecated `errorColor` from `ThemeData` by @QuncCccccc in [144078](https://github.com/flutter/flutter/pull/144078) +* [flutter_test] Change KeyEventSimulator default transit mode by @bleroux in [143847](https://github.com/flutter/flutter/pull/143847) +* Fixed -> DropdownMenu throws exception when it is in any scrollable l… by @faisalansari0367 in [140566](https://github.com/flutter/flutter/pull/140566) +* Update documentation of `AlertDialog`'s default `TextStyle` for Material 3 by @Nenuphar12 in [144697](https://github.com/flutter/flutter/pull/144697) +* Fixes the transition builder changing the Cupertino transition on Android. by @MitchellGoodwin in [134790](https://github.com/flutter/flutter/pull/134790) +* Replace dead links by @percival888 in [144827](https://github.com/flutter/flutter/pull/144827) +* Fix multiple calls to Slider's onChanged. by @yiiim in [143680](https://github.com/flutter/flutter/pull/143680) +* Refactoring `if` chains into `switch` statements by @nate-thegrate in [144905](https://github.com/flutter/flutter/pull/144905) +* Make TabController communicating creation in constructor. by @polina-c in [144912](https://github.com/flutter/flutter/pull/144912) +* add missing `await`s by @goderbauer in [144978](https://github.com/flutter/flutter/pull/144978) +* InputDecorator M3 tests migration - Step5 - Helper/Counter/Error by @bleroux in [144932](https://github.com/flutter/flutter/pull/144932) +* Remove `showTrackOnHover` from `Scrollbar` and `ScrollbarTheme` by @QuncCccccc in [144180](https://github.com/flutter/flutter/pull/144180) +* Turning `if` chains into shorter `switch` statements by @nate-thegrate in [144977](https://github.com/flutter/flutter/pull/144977) +* [Impeller] remove unstable debug checked banner for zoom test. by @jonahwilliams in [145097](https://github.com/flutter/flutter/pull/145097) +* Fix TextField helper top padding on M3 by @bleroux in [145087](https://github.com/flutter/flutter/pull/145087) +* [framework] fix incorrect chinese localizations for Search Web and Share in selection controls by @LouiseHsu in [144857](https://github.com/flutter/flutter/pull/144857) +* Reverts "Fix TextField helper top padding on M3 (#145087)" by @auto-submit in [145168](https://github.com/flutter/flutter/pull/145168) +* Remove autofocus from the a11y_assessments app by @yjbanov in [145117](https://github.com/flutter/flutter/pull/145117) +* Implementing switch expressions in `flutter/test/` by @nate-thegrate in [144580](https://github.com/flutter/flutter/pull/144580) +* Roll pub packages manually by @loic-sharma in [145170](https://github.com/flutter/flutter/pull/145170) +* Update a11y for SliverAppBar by @hangyujin in [144437](https://github.com/flutter/flutter/pull/144437) +* Introduce `Split` curve by @guidezpl in [143130](https://github.com/flutter/flutter/pull/143130) +* Update `inherited_theme_test.dart`, `ink_paint_test.dart`, `ink_splash_test.dart`, `opacity_test.dart` for Material 3 by @TahaTesser in [144013](https://github.com/flutter/flutter/pull/144013) +* InputDecorator M3 tests migration - Step6 - constraints by @bleroux in [145213](https://github.com/flutter/flutter/pull/145213) +* Introduce methods for computing the baseline location of a RenderBox without affecting the current layout by @LongCatIsLooong in [144655](https://github.com/flutter/flutter/pull/144655) +* Fix for issue 140372 by @prasadsunny1 in [144947](https://github.com/flutter/flutter/pull/144947) +* chore: fix some comments by @goodmost in [145397](https://github.com/flutter/flutter/pull/145397) +* Widget state properties by @MitchellGoodwin in [142151](https://github.com/flutter/flutter/pull/142151) +* Add a `minTileHeight` to ListTile widget so its height can be customized to less than the default height. by @hangyujin in [145244](https://github.com/flutter/flutter/pull/145244) +* Add helper widget parameter to InputDecoration by @VatsalBhesaniya in [145157](https://github.com/flutter/flutter/pull/145157) +* Fix `BorderSide.none` requiring explicit transparent color for `UnderlineInputBorder` by @bernaferrari in [145329](https://github.com/flutter/flutter/pull/145329) +* Replace `RenderBox.compute*` with `RenderBox.get*` and add `@visibleForOverriding` by @LongCatIsLooong in [145503](https://github.com/flutter/flutter/pull/145503) +* Intensive `if` chain refactoring by @nate-thegrate in [145194](https://github.com/flutter/flutter/pull/145194) +* Leak clean up. by @polina-c in [144803](https://github.com/flutter/flutter/pull/144803) +* Add `AnimationStyle` to `showBottomSheet` and `showModalBottomSheet` by @TahaTesser in [145536](https://github.com/flutter/flutter/pull/145536) +* [Fix]: Searchbar doesn't lose focus when tapped outside by @Sahil-kachhap in [145232](https://github.com/flutter/flutter/pull/145232) +* Fix vertical `Stepper` draws connector on the last step by @TahaTesser in [145703](https://github.com/flutter/flutter/pull/145703) +* Fix `SearchAnchor` triggers unnecessary suggestions builder calls by @TahaTesser in [143443](https://github.com/flutter/flutter/pull/143443) +* Fix `ExpansionTile` Expanded/Collapsed announcement is interrupted by VoiceOver by @TahaTesser in [143936](https://github.com/flutter/flutter/pull/143936) +* Fix disabled `DropdownMenu` doesn't defer the mouse cursor by @TahaTesser in [145686](https://github.com/flutter/flutter/pull/145686) +* Correct typo: "Free" to "Three" in comments by @dwzrlp in [145689](https://github.com/flutter/flutter/pull/145689) +* Update localization files. by @godofredoc in [145780](https://github.com/flutter/flutter/pull/145780) +* Predictive back support for routes by @maRci002 in [141373](https://github.com/flutter/flutter/pull/141373) +* Remove deprecated `TextTheme` members by @Renzo-Olivares in [139255](https://github.com/flutter/flutter/pull/139255) +* Update `TabBar` and `TabBar.secondary` to use indicator height/color M3 tokens by @TahaTesser in [145753](https://github.com/flutter/flutter/pull/145753) +### iOS +* Native assets: roll deps by @dcharkes in [141684](https://github.com/flutter/flutter/pull/141684) +* Revert "Native assets: roll deps" by @Jasguerrero in [141748](https://github.com/flutter/flutter/pull/141748) +* Native assets: package in framework on iOS and MacOS by @dcharkes in [140907](https://github.com/flutter/flutter/pull/140907) +* Reapply "Native assets: roll deps" (#141748) by @dcharkes in [141864](https://github.com/flutter/flutter/pull/141864) +* Support wireless debugging for iOS 12 or earlier by @jaeyoi in [141439](https://github.com/flutter/flutter/pull/141439) +* [flutter_tools] add debugging to ios/core_devices.dart by @christopherfujino in [142187](https://github.com/flutter/flutter/pull/142187) +* Upload DerivedData logs in CI by @vashworth in [142643](https://github.com/flutter/flutter/pull/142643) +* Reverts "Move native assets to `isolated/` directory" by @auto-submit in [143027](https://github.com/flutter/flutter/pull/143027) +* Remove force Xcode debug workflow by @vashworth in [144185](https://github.com/flutter/flutter/pull/144185) +* Print warning and exit when iOS device is unpaired by @jmagman in [144551](https://github.com/flutter/flutter/pull/144551) +* Fixed race condition in PollingDeviceDiscovery. by @chingjun in [145506](https://github.com/flutter/flutter/pull/145506) +### Android +* hello_world app: migrate to Gradle Kotlin DSL by @bartekpacia in [141541](https://github.com/flutter/flutter/pull/141541) +### Windows +* Add check for Bank of Brazil security module to Windows Flutter Doctor validators by @yaakovschectman in [141135](https://github.com/flutter/flutter/pull/141135) +### Tooling +* Native assets support for Android Add2app by @dcharkes in [140802](https://github.com/flutter/flutter/pull/140802) +* Replace deprecated `exists` in podhelper.rb by @stuartmorgan in [141169](https://github.com/flutter/flutter/pull/141169) +* Unpin package:vm_service by @derekxu16 in [141279](https://github.com/flutter/flutter/pull/141279) +* [flutter_tools] fix flutter create -t skeleton by @christopherfujino in [141233](https://github.com/flutter/flutter/pull/141233) +* [Tool][Impeller] Make impellerc produce Vulkan and GLES shaders for Android. by @dnfield in [140976](https://github.com/flutter/flutter/pull/140976) +* make asset_test.dart tests not dependent on context by @andrewkolos in [141331](https://github.com/flutter/flutter/pull/141331) +* Add support for Gradle Kotlin DSL by @bartekpacia in [140744](https://github.com/flutter/flutter/pull/140744) +* When Impeller is enabled for flutter tester choose correct shader target. by @jonahwilliams in [141391](https://github.com/flutter/flutter/pull/141391) +* Expose versionCode and versionName from local.properties in FlutterExtension by @bartekpacia in [141417](https://github.com/flutter/flutter/pull/141417) +* [deep link] Update a gradle task to add flag check and intent filter check to the AppLinkSettings by @hangyujin in [141231](https://github.com/flutter/flutter/pull/141231) +* FlutterExtension: make fields non-static by @bartekpacia in [141463](https://github.com/flutter/flutter/pull/141463) +* Solve the problem that cannot be imported when a pod transitive depends on Flutter by @intspt in [125610](https://github.com/flutter/flutter/pull/125610) +* Sort Swift imports in templates by @jmagman in [141487](https://github.com/flutter/flutter/pull/141487) +* migrate {min,target,compile}SdkVersion to {min,target,compile}Sdk by @bartekpacia in [141537](https://github.com/flutter/flutter/pull/141537) +* Delete redundant `settings.ext.flutterSdkPath` by @bartekpacia in [141509](https://github.com/flutter/flutter/pull/141509) +* handle rc versions of gradle in version compare by @reidbaker in [141612](https://github.com/flutter/flutter/pull/141612) +* [flutter_tools] Fix analyze size on arm64 by @christopherfujino in [141317](https://github.com/flutter/flutter/pull/141317) +* Fix the --empty flag to not try working with non-app templates by @gspencergoog in [141632](https://github.com/flutter/flutter/pull/141632) +* Make test file systems/platforms used in asset_bundle_test.dart less dependent on the host platform by @andrewkolos in [141657](https://github.com/flutter/flutter/pull/141657) +* Catch UnsupportedError thrown when user provides an asset directory path containing invalid characters by @andrewkolos in [141214](https://github.com/flutter/flutter/pull/141214) +* Fix gradle lints No semantic change should be present. by @reidbaker in [141692](https://github.com/flutter/flutter/pull/141692) +* Roll engine to 9a6c64de8a4694cef59a338cd33ac1a9e7d23d9d by @zanderso in [141870](https://github.com/flutter/flutter/pull/141870) +* Use Integer instead of int in map in flutter.groovy by @reidbaker in [141895](https://github.com/flutter/flutter/pull/141895) +* Adjust the position of require File.expand_path by @LinXunFeng in [141521](https://github.com/flutter/flutter/pull/141521) +* [flutter_tools] update analyze_once_test.dart to be null-safe by @christopherfujino in [141790](https://github.com/flutter/flutter/pull/141790) +* refactor: Rename filterPluginsByPlatform, cleanup Platform Strings by @Gustl22 in [141780](https://github.com/flutter/flutter/pull/141780) +* Reverts "hello_world app: migrate to Gradle Kotlin DSL" by @auto-submit in [142018](https://github.com/flutter/flutter/pull/142018) +* Allow overriding the native assets yaml file in the resident runner. by @chingjun in [142016](https://github.com/flutter/flutter/pull/142016) +* [flutter_tools] fix language_version_test and enable shuffle by @christopherfujino in [142009](https://github.com/flutter/flutter/pull/142009) +* consolidate AssetBundle::entries and AssetBundle::entryKinds into a new type, `AssetBundleEntry` by @andrewkolos in [142029](https://github.com/flutter/flutter/pull/142029) +* Add abifilters to our gradle templates by @gmackall in [135529](https://github.com/flutter/flutter/pull/135529) +* [ci] Adds test for web hot restart with const App. by @ditman in [141824](https://github.com/flutter/flutter/pull/141824) +* provide command to `FakeCommand::onRun` by @andrewkolos in [142206](https://github.com/flutter/flutter/pull/142206) +* Don't show legacy welcome message when analytics are disabled by @sigurdm in [140956](https://github.com/flutter/flutter/pull/140956) +* flutter.groovy: update for Gradle Kotlin DSL compatibility by @bartekpacia in [142144](https://github.com/flutter/flutter/pull/142144) +* Move iOS content validation devicelab test into tool integration test by @jmagman in [142272](https://github.com/flutter/flutter/pull/142272) +* Roll deps from dart-lang/native in templates by @dcharkes in [142322](https://github.com/flutter/flutter/pull/142322) +* [flutter_tools] remove await runZonedGuarded() in tests by @christopherfujino in [142336](https://github.com/flutter/flutter/pull/142336) +* refactor asset bundle code to not depend on the global Cache.flutterRoot by @andrewkolos in [142277](https://github.com/flutter/flutter/pull/142277) +* Add no-shuffle to language_version_test.dart by @zanderso in [142378](https://github.com/flutter/flutter/pull/142378) +* Catch file system exceptions when trying to parse user-provided asset file paths by @andrewkolos in [142214](https://github.com/flutter/flutter/pull/142214) +* Revert "Reland: "Fix how Gradle resolves Android plugin" (#137115)" by @camsim99 in [142464](https://github.com/flutter/flutter/pull/142464) +* Show Mac Designed For iPad in 'flutter devices' by @LouiseHsu in [141718](https://github.com/flutter/flutter/pull/141718) +* Refactor ShaderTarget to not explicitly mention impeller or Skia by @dnfield in [141460](https://github.com/flutter/flutter/pull/141460) +* improve error message when `--base-href` argument does not start with `/` by @andrewkolos in [142667](https://github.com/flutter/flutter/pull/142667) +* Wasm/JS Dual Compile with the flutter tool by @eyebrowsoffire in [141396](https://github.com/flutter/flutter/pull/141396) +* Reland "Add support for Gradle Kotlin DSL (#140744)" by @bartekpacia in [142752](https://github.com/flutter/flutter/pull/142752) +* Fixed test in language_version_test.dart that failed when shuffling, … by @Swiftaxe in [142904](https://github.com/flutter/flutter/pull/142904) +* Update AGP version validation code to support KGP and kotlin build files. by @mossmana in [142357](https://github.com/flutter/flutter/pull/142357) +* Move native assets to `isolated/` directory by @dcharkes in [142709](https://github.com/flutter/flutter/pull/142709) +* Copy the flutter version JSON file into the simulated Flutter SDK used by update_packages by @jason-simmons in [143035](https://github.com/flutter/flutter/pull/143035) +* Remove redundant `rootDirectoryPath` parameter in `DevFS::update` by @andrewkolos in [143034](https://github.com/flutter/flutter/pull/143034) +* Fix inputs and outputs for `WebReleaseBundle` by @eyebrowsoffire in [143023](https://github.com/flutter/flutter/pull/143023) +* Enforce a policy on supported Gradle, Java, AGP, and KGP versions by @gmackall in [142000](https://github.com/flutter/flutter/pull/142000) +* Reverts "Enforce a policy on supported Gradle, Java, AGP, and KGP versions" by @auto-submit in [143114](https://github.com/flutter/flutter/pull/143114) +* Improve build output for all platforms by @guidezpl in [128236](https://github.com/flutter/flutter/pull/128236) +* Reverts "Improve build output for all platforms" by @auto-submit in [143125](https://github.com/flutter/flutter/pull/143125) +* Pass along web renderer into debugging options in the test command. by @eyebrowsoffire in [143128](https://github.com/flutter/flutter/pull/143128) +* Reland "Move native assets to `isolated/` directory" by @dcharkes in [143055](https://github.com/flutter/flutter/pull/143055) +* [flutter_tool] Retry a gradle build on connection timeout by @zanderso in [143084](https://github.com/flutter/flutter/pull/143084) +* Revert Dual Web Compile changes by @eyebrowsoffire in [143175](https://github.com/flutter/flutter/pull/143175) +* [Re-land] Enforce a policy on supported Gradle, Java, AGP, and KGP versions by @gmackall in [143132](https://github.com/flutter/flutter/pull/143132) +* Set default flutter source directory for gradle builds by @Gustl22 in [142934](https://github.com/flutter/flutter/pull/142934) +* Revert "[Re-land] Enforce a policy on supported Gradle, Java, AGP, and KGP versions" by @reidbaker in [143314](https://github.com/flutter/flutter/pull/143314) +* [Re-re-land] Enforce a policy on supported Gradle, Java, AGP, and KGP versions by @gmackall in [143341](https://github.com/flutter/flutter/pull/143341) +* Remove message about `pub cache` that is not actionable by @matanlurey in [143357](https://github.com/flutter/flutter/pull/143357) +* refactor: remove implicit globals dependencies in `writeBundle` by @andrewkolos in [143343](https://github.com/flutter/flutter/pull/143343) +* Dual compile reland by @eyebrowsoffire in [143262](https://github.com/flutter/flutter/pull/143262) +* Fix `AssetsEntry::equals` by @andrewkolos in [143355](https://github.com/flutter/flutter/pull/143355) +* Use `dart compile wasm` for wasm compilations by @mkustermann in [143298](https://github.com/flutter/flutter/pull/143298) +* [tools] Add column header for emulators information by @Anas35 in [142853](https://github.com/flutter/flutter/pull/142853) +* Roll native_assets_builder to 0.5.0 by @dcharkes in [143472](https://github.com/flutter/flutter/pull/143472) +* Modify `plugin_ffi` and `package_ffi` template by @HosseinYousefi in [143376](https://github.com/flutter/flutter/pull/143376) +* Disentangle and align `flutter build web --wasm` flags by @mkustermann in [143517](https://github.com/flutter/flutter/pull/143517) +* Reverts "Disentangle and align `flutter build web --wasm` flags (#143517)" by @auto-submit in [143547](https://github.com/flutter/flutter/pull/143547) +* [flutter_tool] [dap] Forward Flutter progress events to DAP client by @DanTup in [142524](https://github.com/flutter/flutter/pull/142524) +* Android Gradle file templates: make it easier to convert them to Kotlin DSL in the future by @bartekpacia in [142146](https://github.com/flutter/flutter/pull/142146) +* Reland "Disentangle and align flutter build web --wasm flags (#143517)" by @mkustermann in [143549](https://github.com/flutter/flutter/pull/143549) +* rebuild the asset bundle if a file has been modified between `flutter test` runs by @andrewkolos in [143569](https://github.com/flutter/flutter/pull/143569) +* add parsing of assets transformer declarations in pubspec.yaml by @andrewkolos in [143557](https://github.com/flutter/flutter/pull/143557) +* Implement `lineTerminator` in `MemoryStdout` Fake by @brianquinlan in [143608](https://github.com/flutter/flutter/pull/143608) +* Add an override annotation to the lineTerminator setter in the MemoryStdout fake class by @jason-simmons in [143646](https://github.com/flutter/flutter/pull/143646) +* Reland (2): "Fix how Gradle resolves Android plugin" by @Gustl22 in [142498](https://github.com/flutter/flutter/pull/142498) +* instead of exiting the tool, print a warning when using --flavor with an incompatible device by @andrewkolos in [143735](https://github.com/flutter/flutter/pull/143735) +* [flutter_tools] enable wasm compile on beta channel by @kevmoo in [143779](https://github.com/flutter/flutter/pull/143779) +* Add aab as alias for appbundle by @reidbaker in [143855](https://github.com/flutter/flutter/pull/143855) +* Fixed Small Typo in Emulators Test Name by @piedcipher in [143578](https://github.com/flutter/flutter/pull/143578) +* Enable asset transformation for `flutter build` for iOS, Android, Windows, MacOS, Linux, and web (also `flutter run` without hot reload support) by @andrewkolos in [143815](https://github.com/flutter/flutter/pull/143815) +* allow optional direct injection of Config instance into DevFS by @andrewkolos in [144002](https://github.com/flutter/flutter/pull/144002) +* Adding support for DDC modules when running Flutter Web in debug mode by @Markzipan in [141423](https://github.com/flutter/flutter/pull/141423) +* Update copyDirectory to allow links to not be followed by @vashworth in [144040](https://github.com/flutter/flutter/pull/144040) +* refactor: Differentiate pubspec and resolution errors for plugins by @Gustl22 in [142035](https://github.com/flutter/flutter/pull/142035) +* [flutter_tools] Fix missing stack trace from daemon by @jiahaog in [144113](https://github.com/flutter/flutter/pull/144113) +* Add FlutterMacOS.xcframework artifact by @vashworth in [143244](https://github.com/flutter/flutter/pull/143244) +* [web] Make flutter web profile builds always keep wasm symbols by @mkustermann in [144130](https://github.com/flutter/flutter/pull/144130) +* Reverts "Add FlutterMacOS.xcframework artifact (#143244)" by @auto-submit in [144253](https://github.com/flutter/flutter/pull/144253) +* 🛡️ Guard Flutter Android app by disallow task affinity by default by @AlexV525 in [144018](https://github.com/flutter/flutter/pull/144018) +* [flutter_tools] Catch rpc error in render frame with raster stats by @christopherfujino in [144190](https://github.com/flutter/flutter/pull/144190) +* Reland "Add FlutterMacOS.xcframework artifact (#143244)" by @vashworth in [144275](https://github.com/flutter/flutter/pull/144275) +* Fix a crash in remote device daemon. by @chingjun in [144358](https://github.com/flutter/flutter/pull/144358) +* Make daemon server work on ipv6-only machines. by @chingjun in [144359](https://github.com/flutter/flutter/pull/144359) +* Fix build mode not propagated in android native asset build by @knopp in [144550](https://github.com/flutter/flutter/pull/144550) +* Do not shorten native assets framework names by @knopp in [144568](https://github.com/flutter/flutter/pull/144568) +* remove unused `firstBuildTime` parameter in `DevFS::update` by @andrewkolos in [144576](https://github.com/flutter/flutter/pull/144576) +* Enable asset transformation feature in hot reload workflow (excluding Web) by @andrewkolos in [144161](https://github.com/flutter/flutter/pull/144161) +* Fix embedding FlutterMacOS.framework for macOS add2app via cocoapods by @vashworth in [144248](https://github.com/flutter/flutter/pull/144248) +* Update android templates to use target sdk 34 by @gmackall in [144641](https://github.com/flutter/flutter/pull/144641) +* make DevFSContent descendants immutable by @andrewkolos in [144664](https://github.com/flutter/flutter/pull/144664) +* Fix frameworks added to bundle multiple times instead of lipo by @knopp in [144688](https://github.com/flutter/flutter/pull/144688) +* [flutter_tools] add custom tool analysis to analyze.dart, lint Future.catchError by @christopherfujino in [140122](https://github.com/flutter/flutter/pull/140122) +* refactor: Remove `throwOnPluginPubspecError` flag for plugin validation by @Gustl22 in [144214](https://github.com/flutter/flutter/pull/144214) +* Enable asset transformation for `flutter run -d ` and `flutter test` by @andrewkolos in [144734](https://github.com/flutter/flutter/pull/144734) +* Remove `toString()` overrides in `dart:ui`/`package:flutter` in profile/release mode on wasm/vm targets by @mkustermann in [144763](https://github.com/flutter/flutter/pull/144763) +* Copy over source maps from dart2js target when they are enabled. by @eyebrowsoffire in [144832](https://github.com/flutter/flutter/pull/144832) +* Expose build mode in environment of asset transformer processes by @andrewkolos in [144752](https://github.com/flutter/flutter/pull/144752) +* Reverts "Expose build mode in environment of asset transformer processes (#144752)" by @auto-submit in [144957](https://github.com/flutter/flutter/pull/144957) +* Update integration tests regexes. by @godofredoc in [144847](https://github.com/flutter/flutter/pull/144847) +* Flutter Web Bootstrapping Improvements by @eyebrowsoffire in [144434](https://github.com/flutter/flutter/pull/144434) +* Update proxied devices to handle connection interface and diagnostics. by @chingjun in [145061](https://github.com/flutter/flutter/pull/145061) +* Reland #128236 "Improve build output for all platforms" by @guidezpl in [143166](https://github.com/flutter/flutter/pull/143166) +* Reverts "Reland #128236 "Improve build output for all platforms" (#143166)" by @auto-submit in [145261](https://github.com/flutter/flutter/pull/145261) +* Roll pub packages + update DAP tests by @DanTup in [145349](https://github.com/flutter/flutter/pull/145349) +* Fix remote DDS in proxied devices. by @chingjun in [145346](https://github.com/flutter/flutter/pull/145346) +* Reland #128236 "Improve build output for all platforms" by @guidezpl in [145376](https://github.com/flutter/flutter/pull/145376) +* Reverts "Reland #128236 "Improve build output for all platforms" (#145376)" by @auto-submit in [145487](https://github.com/flutter/flutter/pull/145487) +* Remove embedding v1 code in framework by @gmackall in [144726](https://github.com/flutter/flutter/pull/144726) +* Eliminate more window singleton usages by @goderbauer in [145560](https://github.com/flutter/flutter/pull/145560) +* Reland #128236 "Improve build output for all platforms" by @guidezpl in [145495](https://github.com/flutter/flutter/pull/145495) +* make hot reload reflect changes to asset transformer configurations by @andrewkolos in [144660](https://github.com/flutter/flutter/pull/144660) +* [deps] Bump native assets dependencies by @dcharkes in [145612](https://github.com/flutter/flutter/pull/145612) +* [flutter_tools] Enable WebAssembly compilation everywhere, remove feature flag by @kevmoo in [145562](https://github.com/flutter/flutter/pull/145562) +* Be tolerant of backticks around directory name in `pub` output. by @eyebrowsoffire in [145768](https://github.com/flutter/flutter/pull/145768) +* Roll pub packages and regenerate gradle lockfiles by @christopherfujino in [145727](https://github.com/flutter/flutter/pull/145727) +### Documentation +* bind missing add icon in platform_view example by @TJRoger in [132028](https://github.com/flutter/flutter/pull/132028) +* [iOS] Fix naming in platform_view example by @cbracken in [144247](https://github.com/flutter/flutter/pull/144247) +### Other Changes +* Shift mac Pixel 7 Pro tests to prod by @zanderso in [141142](https://github.com/flutter/flutter/pull/141142) +* Bump github/codeql-action from 3.22.11 to 3.23.0 by @dependabot in [141132](https://github.com/flutter/flutter/pull/141132) +* Run tests on iOS 16 or iOS 17 by @vashworth in [141178](https://github.com/flutter/flutter/pull/141178) +* [ci.yaml] Do not run packaging test on presubmit by @CaseyHillers in [141192](https://github.com/flutter/flutter/pull/141192) +* Add environment variable to leak tracking bots. by @polina-c in [141137](https://github.com/flutter/flutter/pull/141137) +* Collapse pubspec.lock by default by @stuartmorgan in [141282](https://github.com/flutter/flutter/pull/141282) +* Run iOS staging tests with Xcode 15.2 by @vashworth in [141392](https://github.com/flutter/flutter/pull/141392) +* Reverts "Run iOS staging tests with Xcode 15.2" by @auto-submit in [141412](https://github.com/flutter/flutter/pull/141412) +* Add osx_sdk context for mac builds. by @godofredoc in [141422](https://github.com/flutter/flutter/pull/141422) +* Increase delay for checking integration_ui_keyboard_resize test success by @camsim99 in [141301](https://github.com/flutter/flutter/pull/141301) +* Do not reset framework checkout before running customer tests by @whesse in [141013](https://github.com/flutter/flutter/pull/141013) +* Revert "Reverts "Run iOS staging tests with Xcode 15.2"" by @QuncCccccc in [141420](https://github.com/flutter/flutter/pull/141420) +* Bump actions/upload-artifact from 4.0.0 to 4.1.0 by @dependabot in [141480](https://github.com/flutter/flutter/pull/141480) +* Add contexts to mac_ios targets. by @godofredoc in [141494](https://github.com/flutter/flutter/pull/141494) +* Update TESTOWNERS iskakaushik -> dnfield by @dnfield in [141649](https://github.com/flutter/flutter/pull/141649) +* Reverts "Roll Flutter Engine from d4b6b7ec8e48 to 021a5ff5eae6 (5 revisions)" by @auto-submit in [141659](https://github.com/flutter/flutter/pull/141659) +* Revert "Roll Flutter Engine from 73a2de5da53f to c7e328518bc0 (5 revisions)" by @jonahwilliams in [141691](https://github.com/flutter/flutter/pull/141691) +* Label "flutter_localizations" PRs with "framework" by @goderbauer in [141654](https://github.com/flutter/flutter/pull/141654) +* Update tests to Xcode 15 by @vashworth in [141706](https://github.com/flutter/flutter/pull/141706) +* Run build tests on both x64 and arm64. by @godofredoc in [141206](https://github.com/flutter/flutter/pull/141206) +* Bump github/codeql-action from 3.23.0 to 3.23.1 by @dependabot in [141715](https://github.com/flutter/flutter/pull/141715) +* Remove non-needed bot and increase time out for leak_tracking. by @polina-c in [141712](https://github.com/flutter/flutter/pull/141712) +* Move mac pixel 7 pro test to presubmit: false by @zanderso in [141747](https://github.com/flutter/flutter/pull/141747) +* [github actions] Fix token issue on actions/checkout package by @XilaiZhang in [141652](https://github.com/flutter/flutter/pull/141652) +* Run `flutter_gallery_ios__start_up` test on Mac-14 in staging by @vashworth in [141795](https://github.com/flutter/flutter/pull/141795) +* Update labeler.yml by @goderbauer in [141697](https://github.com/flutter/flutter/pull/141697) +* Bump actions/upload-artifact from 4.1.0 to 4.2.0 by @dependabot in [141803](https://github.com/flutter/flutter/pull/141803) +* Run framework_tests_misc in arm64 and x64. by @godofredoc in [141797](https://github.com/flutter/flutter/pull/141797) +* Add mac_x64_ios configuration. by @godofredoc in [141828](https://github.com/flutter/flutter/pull/141828) +* Run module_test_ios on arm and x64 by @godofredoc in [141815](https://github.com/flutter/flutter/pull/141815) +* Add RadioListItem use-case to a11y_assessments by @yjbanov in [140984](https://github.com/flutter/flutter/pull/140984) +* Relax the warning of unavailable tokens in `gen_defaults` when a default value is provided by @davidmartos96 in [140872](https://github.com/flutter/flutter/pull/140872) +* Bump actions/upload-artifact from 4.2.0 to 4.3.0 by @dependabot in [142075](https://github.com/flutter/flutter/pull/142075) +* [github actions] FINALLY fix the mysterious token error in github actions by @XilaiZhang in [142058](https://github.com/flutter/flutter/pull/142058) +* Run some tests explicitly in both arm and x64. by @godofredoc in [141910](https://github.com/flutter/flutter/pull/141910) +* Reverts "Refactor `external_ui` → `external_textures`" by @auto-submit in [142173](https://github.com/flutter/flutter/pull/142173) +* Migrate android views to devicelab. by @godofredoc in [142081](https://github.com/flutter/flutter/pull/142081) +* Refactor `external_ui` without making any name changes (I think) by @matanlurey in [142192](https://github.com/flutter/flutter/pull/142192) +* Migrate android_view to linux_android_emu platform. by @godofredoc in [142184](https://github.com/flutter/flutter/pull/142184) +* Rename `integration_tests/external_ui` but do not touch anything else... by @matanlurey in [142238](https://github.com/flutter/flutter/pull/142238) +* Reverts "Rename `integration_tests/external_ui` but do not touch anything else..." by @auto-submit in [142265](https://github.com/flutter/flutter/pull/142265) +* Reverts "Reverts "Rename `integration_tests/external_ui` but do not touch anything else..."" by @auto-submit in [142268](https://github.com/flutter/flutter/pull/142268) +* Bump codecov/codecov-action from 3.1.4 to 3.1.5 by @dependabot in [142259](https://github.com/flutter/flutter/pull/142259) +* Run a few mac tests only on arm. by @godofredoc in [142188](https://github.com/flutter/flutter/pull/142188) +* Reverts "Roll Flutter Engine from 4b145d041560 to 44f26274bfbe (6 revisions)" by @auto-submit in [142274](https://github.com/flutter/flutter/pull/142274) +* Update name for android_defines_test. by @godofredoc in [142273](https://github.com/flutter/flutter/pull/142273) +* Reverts "Roll Flutter Engine from 525bd7dcf7f3 to 65d1291c3add (1 revision)" by @auto-submit in [142332](https://github.com/flutter/flutter/pull/142332) +* Redistribute iOS TESTOWNERS by @jmagman in [142315](https://github.com/flutter/flutter/pull/142315) +* Only use iOS 17 physical devices in staging tests by @vashworth in [142323](https://github.com/flutter/flutter/pull/142323) +* Bump github/codeql-action from 3.23.1 to 3.23.2 by @dependabot in [142345](https://github.com/flutter/flutter/pull/142345) +* Limit `fuchsia_precache` in presubmit to engine rolls by @jmagman in [142333](https://github.com/flutter/flutter/pull/142333) +* Reverts "Roll Flutter Engine from 2687ddb2655c to 2adad88a39f4 (4 revisions)" by @auto-submit in [142366](https://github.com/flutter/flutter/pull/142366) +* [Windows Arm64] Run plugin test post-submit by @loic-sharma in [141987](https://github.com/flutter/flutter/pull/141987) +* Using `initExpensiveAndroidView` for Android Hybrid Composition Mode by @0xZOne in [142399](https://github.com/flutter/flutter/pull/142399) +* Revert "Roll Flutter Engine from 0e586d1c28c8 to f02a4a80a77e (3 revisions)" by @jonahwilliams in [142533](https://github.com/flutter/flutter/pull/142533) +* Bump codecov/codecov-action from 3.1.5 to 3.1.6 by @dependabot in [142553](https://github.com/flutter/flutter/pull/142553) +* Be less verbose in CI for customer_testing, and revert old timeout hack by @Hixie in [139611](https://github.com/flutter/flutter/pull/139611) +* Bump peter-evans/create-pull-request from 5.0.2 to 6.0.0 by @dependabot in [142650](https://github.com/flutter/flutter/pull/142650) +* [Impeller] opt vulkan tests into GPU tracing. by @jonahwilliams in [142649](https://github.com/flutter/flutter/pull/142649) +* Add no-shuffle tag to gen_defaults_test.dart by @zanderso in [142717](https://github.com/flutter/flutter/pull/142717) +* Really disable shuffling for gen_defaults tests by @zanderso in [142721](https://github.com/flutter/flutter/pull/142721) +* Remove outdated arm64_armv7 check by @jmagman in [142737](https://github.com/flutter/flutter/pull/142737) +* Remove verbose-system-logs on iOS perf tests by @jmagman in [142739](https://github.com/flutter/flutter/pull/142739) +* Remove unused deprecated autoroll mirror-remote flag by @jmagman in [142738](https://github.com/flutter/flutter/pull/142738) +* Fix gen_defaults test randomness by @davidmartos96 in [142743](https://github.com/flutter/flutter/pull/142743) +* Test codesigning xcframeworks in artifacts by @jmagman in [142666](https://github.com/flutter/flutter/pull/142666) +* Make leak_tracking bots sticked to the left even if bot thinks they are non-flacky. by @polina-c in [142744](https://github.com/flutter/flutter/pull/142744) +* [github actions] ping actor of workflow on cherry pick pr creation by @XilaiZhang in [142676](https://github.com/flutter/flutter/pull/142676) +* Use proto name for emulator version and show cipd package version by @ricardoamador in [142262](https://github.com/flutter/flutter/pull/142262) +* Allow all iOS tests to use either iOS 16 or 17 by @vashworth in [142714](https://github.com/flutter/flutter/pull/142714) +* Add a link the different possible Android virtual device configs by @ricardoamador in [142765](https://github.com/flutter/flutter/pull/142765) +* Bump codecov/codecov-action from 3.1.6 to 4.0.1 by @dependabot in [142838](https://github.com/flutter/flutter/pull/142838) +* Bump github/codeql-action from 3.23.2 to 3.24.0 by @dependabot in [142839](https://github.com/flutter/flutter/pull/142839) +* Move Mac_build_test flutter_gallery__transition_perf_e2e_ios to staging by @vashworth in [142918](https://github.com/flutter/flutter/pull/142918) +* Run examples_smoke_test on Linux by @jmagman in [142736](https://github.com/flutter/flutter/pull/142736) +* Bump actions/upload-artifact from 4.3.0 to 4.3.1 by @dependabot in [142944](https://github.com/flutter/flutter/pull/142944) +* Reverts "Roll Flutter Engine from 808886312e2b to 07cdaab7f531 (18 revisions)" by @auto-submit in [143025](https://github.com/flutter/flutter/pull/143025) +* Mark `Windows_android hot_mode_dev_cycle_win__benchmark` as no longer flaky by @andrewkolos in [143016](https://github.com/flutter/flutter/pull/143016) +* Run Mac x64 build tests in postsubmit only by @jmagman in [142334](https://github.com/flutter/flutter/pull/142334) +* Make generate_gradle_lockfiles also write the gradle wrapper file by @gmackall in [142329](https://github.com/flutter/flutter/pull/142329) +* Remove unused devicelab task gradle_non_android_plugin_test by @jmagman in [142742](https://github.com/flutter/flutter/pull/142742) +* Move Mac_build_test flutter_gallery__transition_perf_e2e_ios out of staging by @vashworth in [142987](https://github.com/flutter/flutter/pull/142987) +* Remove Cirrus check for web test concurrency by @jmagman in [143046](https://github.com/flutter/flutter/pull/143046) +* Highlight the links to the release branches more prominently in the CP issue template by @zanderso in [143000](https://github.com/flutter/flutter/pull/143000) +* Enable the whole logcat log by @keyonghan in [143119](https://github.com/flutter/flutter/pull/143119) +* Move Windows arm64 tests to bringup true by @zanderso in [143272](https://github.com/flutter/flutter/pull/143272) +* Remove unnecessary 'debugLabel: null'. by @scheglov in [143253](https://github.com/flutter/flutter/pull/143253) +* Reverts "Roll Flutter Engine from 1c3ecee77350 to a19077503a0c (8 revisions) (#143322)" by @auto-submit in [143338](https://github.com/flutter/flutter/pull/143338) +* Allow deprecated members from the Dart SDK and Flutter Engine to roll in by @matanlurey in [143347](https://github.com/flutter/flutter/pull/143347) +* Bump github/codeql-action from 3.24.0 to 3.24.1 by @dependabot in [143395](https://github.com/flutter/flutter/pull/143395) +* Rename `external_ui` to `external_textures`. by @matanlurey in [143406](https://github.com/flutter/flutter/pull/143406) +* Disable deprecation warnings for mega_gallery by @goderbauer in [143466](https://github.com/flutter/flutter/pull/143466) +* Remove certs installation from win_arm builds. by @godofredoc in [143487](https://github.com/flutter/flutter/pull/143487) +* Remove certs dependency. by @godofredoc in [143495](https://github.com/flutter/flutter/pull/143495) +* Swap the tasks that have been running fine for a while. by @matanlurey in [143544](https://github.com/flutter/flutter/pull/143544) +* Bump github/codeql-action from 3.24.1 to 3.24.3 by @dependabot in [143546](https://github.com/flutter/flutter/pull/143546) +* [devicelab] migrate new gallery benchmarks to local copy. by @jonahwilliams in [143545](https://github.com/flutter/flutter/pull/143545) +* Remove bringup from win arm64 builds. by @godofredoc in [143548](https://github.com/flutter/flutter/pull/143548) +* [devicelab] retain prior events for flutter gallery. by @jonahwilliams in [143554](https://github.com/flutter/flutter/pull/143554) +* Manual roll Flutter Engine from 15a358bbaf71 to edb2745e9834 by @jason-simmons in [143555](https://github.com/flutter/flutter/pull/143555) +* Manual roll Flutter Engine from edb2745e9834 to bc4dd534a0fa by @jason-simmons in [143559](https://github.com/flutter/flutter/pull/143559) +* Manual roll Flutter Engine from bc4dd534a0fa to d3c71d78f8ef by @jason-simmons in [143561](https://github.com/flutter/flutter/pull/143561) +* Manual roll Flutter Engine from d3c71d78f8ef to b7103bc8b3743 by @jason-simmons in [143563](https://github.com/flutter/flutter/pull/143563) +* Manual roll Flutter Engine from b7103bc8b374 to 7de84271eb65 by @jason-simmons in [143564](https://github.com/flutter/flutter/pull/143564) +* Manual roll Packages from c56c12dd51ef to 0af905d779d5 by @jason-simmons in [143651](https://github.com/flutter/flutter/pull/143651) +* Delete local.properties that shouldn't have been pushed by @gmackall in [143774](https://github.com/flutter/flutter/pull/143774) +* Add UI Benchmarks by @bernaferrari in [143542](https://github.com/flutter/flutter/pull/143542) +* Reverts "Add UI Benchmarks (#143542)" by @auto-submit in [143798](https://github.com/flutter/flutter/pull/143798) +* [Impeller] Make impeller goldens test blocking. by @jonahwilliams in [143864](https://github.com/flutter/flutter/pull/143864) +* Reverts "[Impeller] Make impeller goldens test blocking. (#143864)" by @auto-submit in [143896](https://github.com/flutter/flutter/pull/143896) +* Update PR template for dart fix by @Piinks in [143879](https://github.com/flutter/flutter/pull/143879) +* Reland Add UI Benchmarks (#143542) by @bernaferrari in [143799](https://github.com/flutter/flutter/pull/143799) +* Reverts "Reland Add UI Benchmarks (#143542) (#143799)" by @auto-submit in [143946](https://github.com/flutter/flutter/pull/143946) +* Shift Moto G4 staging tests to A02s by @zanderso in [143957](https://github.com/flutter/flutter/pull/143957) +* Bump github/codeql-action from 3.24.3 to 3.24.4 by @dependabot in [143971](https://github.com/flutter/flutter/pull/143971) +* Revert engine back to 06448ee8165f4ff6579ef9510ac69322eda896ac by @goderbauer in [143986](https://github.com/flutter/flutter/pull/143986) +* Remove unused drone_dimension field by @keyonghan in [143984](https://github.com/flutter/flutter/pull/143984) +* Retry button tap in [FlutterUITests testFlutterViewWarm] by @vashworth in [143967](https://github.com/flutter/flutter/pull/143967) +* Run tests on iOS 17 exclusively by @vashworth in [144022](https://github.com/flutter/flutter/pull/144022) +* Re-enable Impeller goldens blocking. by @jonahwilliams in [144023](https://github.com/flutter/flutter/pull/144023) +* Bump codecov/codecov-action from 4.0.1 to 4.0.2 by @dependabot in [144060](https://github.com/flutter/flutter/pull/144060) +* Bump github/codeql-action from 3.24.4 to 3.24.5 by @dependabot in [144059](https://github.com/flutter/flutter/pull/144059) +* Revert "Re-enable Impeller goldens blocking. (#144023)" by @jason-simmons in [144115](https://github.com/flutter/flutter/pull/144115) +* Mark firebase_release_smoke_test as `bringup: true` by @keyonghan in [144186](https://github.com/flutter/flutter/pull/144186) +* Re-enable Impeller goldens blocking. by @jonahwilliams in [144210](https://github.com/flutter/flutter/pull/144210) +* Mark two other firebase targets as bringup: true by @keyonghan in [144234](https://github.com/flutter/flutter/pull/144234) +* Manual roll Flutter Engine 0bc21ea7bc92 to fe7ea6d9c34f by @zanderso in [144283](https://github.com/flutter/flutter/pull/144283) +* Manual roll Flutter Engine fe7ea6d9c34f to 5e0d9ba35dd5 by @zanderso in [144285](https://github.com/flutter/flutter/pull/144285) +* Manual roll Flutter Engine 5e0d9ba35dd5 to 2461280c38b7 by @zanderso in [144288](https://github.com/flutter/flutter/pull/144288) +* Manual roll Flutter Engine 2461280c38b7 to c79117b706e9 by @zanderso in [144290](https://github.com/flutter/flutter/pull/144290) +* Manual roll Flutter Engine c79117b706e9 to 64a375de9c8f by @zanderso in [144293](https://github.com/flutter/flutter/pull/144293) +* Manual roll Flutter Engine 64a375de9c8f to 8acc96d405d0 by @zanderso in [144296](https://github.com/flutter/flutter/pull/144296) +* Manual roll Flutter Engine 8acc96d405d0 to 91898e397261 by @zanderso in [144316](https://github.com/flutter/flutter/pull/144316) +* Bump peter-evans/create-pull-request from 6.0.0 to 6.0.1 by @dependabot in [144344](https://github.com/flutter/flutter/pull/144344) +* Use dartpad's main channel for master/main docs by @goderbauer in [144329](https://github.com/flutter/flutter/pull/144329) +* Bump dartdocs to 8.0.6 by @goderbauer in [144413](https://github.com/flutter/flutter/pull/144413) +* [devicelab] fix motog4 tests and update comment. by @jonahwilliams in [144410](https://github.com/flutter/flutter/pull/144410) +* Reverts "Use dartpad's main channel for master/main docs (#144329)" by @auto-submit in [144429](https://github.com/flutter/flutter/pull/144429) +* Always use local CanvasKit/Skwasm in benchmarks for better hermeticity. by @eyebrowsoffire in [144423](https://github.com/flutter/flutter/pull/144423) +* Reland "Use dartpad's main channel for master/main docs (#144329)" by @goderbauer in [144431](https://github.com/flutter/flutter/pull/144431) +* Bump github/codeql-action from 3.24.5 to 3.24.6 by @dependabot in [144424](https://github.com/flutter/flutter/pull/144424) +* Enable missing-code-block-language by @goderbauer in [144443](https://github.com/flutter/flutter/pull/144443) +* [github actions] rewrite cherry pick template by @XilaiZhang in [144065](https://github.com/flutter/flutter/pull/144065) +* Bump codecov/codecov-action from 4.0.2 to 4.1.0 by @dependabot in [144174](https://github.com/flutter/flutter/pull/144174) +* Bring back firebase tests to prod by @keyonghan in [144703](https://github.com/flutter/flutter/pull/144703) +* Run macOS test on `dev/integration_tests/ui` by @jmagman in [142735](https://github.com/flutter/flutter/pull/142735) +* Mark Mac_arm64_ios module_test_ios bringup: true by @zanderso in [144861](https://github.com/flutter/flutter/pull/144861) +* Fix typing to unblock pub roll by @goderbauer in [144968](https://github.com/flutter/flutter/pull/144968) +* Revert "Remove unused drone_dimension field" by @godofredoc in [145024](https://github.com/flutter/flutter/pull/145024) +* Bump github/codeql-action from 3.24.6 to 3.24.7 by @dependabot in [145033](https://github.com/flutter/flutter/pull/145033) +* Bump peter-evans/create-pull-request from 6.0.1 to 6.0.2 by @dependabot in [145034](https://github.com/flutter/flutter/pull/145034) +* Bump actions/checkout from 4.1.1 to 4.1.2 by @dependabot in [145032](https://github.com/flutter/flutter/pull/145032) +* Mark Mac_arm64_ios module_test_ios not flaky by @jmagman in [145044](https://github.com/flutter/flutter/pull/145044) +* Reduce Windows_arm64 plugin_test_windows test timeout by @loic-sharma in [145110](https://github.com/flutter/flutter/pull/145110) +* Run gradle_plugin_*_apk_test on presubmit on flutter_tool changes. by @eyebrowsoffire in [142090](https://github.com/flutter/flutter/pull/142090) +* Renaming the virtual device Nexus5 name to Nexus5.gce_x86 by @yusuf-goog in [145225](https://github.com/flutter/flutter/pull/145225) +* Add --no-dds to Mac_arm64_ios version of hot_mode_dev_cycle_ios__benchmark by @vashworth in [145335](https://github.com/flutter/flutter/pull/145335) +* Switch hot_mode_dev_cycle_linux__benchmark to run in postsubmit by @ricardoamador in [145343](https://github.com/flutter/flutter/pull/145343) +* Bump github/codeql-action from 3.24.7 to 3.24.8 by @dependabot in [145358](https://github.com/flutter/flutter/pull/145358) +* Roll pub packages by @flutter-pub-roller-bot in [145509](https://github.com/flutter/flutter/pull/145509) +* Reverts "Roll pub packages (#145509)" by @auto-submit in [145550](https://github.com/flutter/flutter/pull/145550) +* Add a `--no-gradle-generation` mode to the `generate_gradle_lockfiles.dart` script by @gmackall in [145568](https://github.com/flutter/flutter/pull/145568) +* Disable flaky text_editing_integration tests temporarily. by @eyebrowsoffire in [145629](https://github.com/flutter/flutter/pull/145629) +* Add workaround for bug adding unicode strings to test reports. by @godofredoc in [145607](https://github.com/flutter/flutter/pull/145607) +* Bump github/codeql-action from 3.24.8 to 3.24.9 by @dependabot in [145627](https://github.com/flutter/flutter/pull/145627) +* Turn off randomization for leak detection bots. by @polina-c in [145624](https://github.com/flutter/flutter/pull/145624) +* Update links in analysis_options.yaml by @goderbauer in [145706](https://github.com/flutter/flutter/pull/145706) +* Refactor add_to_app_life_cycle_tests by @sealesj in [145546](https://github.com/flutter/flutter/pull/145546) +* Bump codecov/codecov-action from 4.1.0 to 4.1.1 by @dependabot in [145787](https://github.com/flutter/flutter/pull/145787) +* Refactor web long running tests by @sealesj in [145776](https://github.com/flutter/flutter/pull/145776) +* Reverts "Roll Flutter Engine from 922c7b133bc2 to b3516c4c5683 (1 revision) (#145879)" by @auto-submit in [145900](https://github.com/flutter/flutter/pull/145900) +* Reverts "Roll Flutter Engine from c602abdbae16 to 922c7b133bc2 (7 revisions) (#145877)" by @auto-submit in [145901](https://github.com/flutter/flutter/pull/145901) +* Refactor skp_generator_tests by @sealesj in [145871](https://github.com/flutter/flutter/pull/145871) +* [flutter_releases] Flutter beta 3.22.0-0.0.pre Framework Cherrypicks by @itsjustkevin in [146239](https://github.com/flutter/flutter/pull/146239) + +## New Contributors +* @asci-00 made their first contribution in [140015](https://github.com/flutter/flutter/pull/140015) +* @nikkivirtuoso made their first contribution in [140947](https://github.com/flutter/flutter/pull/140947) +* @SharbelOkzan made their first contribution in [135578](https://github.com/flutter/flutter/pull/135578) +* @OutdatedGuy made their first contribution in [141270](https://github.com/flutter/flutter/pull/141270) +* @imp-sike made their first contribution in [141159](https://github.com/flutter/flutter/pull/141159) +* @jaeyoi made their first contribution in [141439](https://github.com/flutter/flutter/pull/141439) +* @mbfakourii made their first contribution in [137415](https://github.com/flutter/flutter/pull/137415) +* @aizatazhar made their first contribution in [141844](https://github.com/flutter/flutter/pull/141844) +* @SelaseKay made their first contribution in [142230](https://github.com/flutter/flutter/pull/142230) +* @sstasi95 made their first contribution in [141604](https://github.com/flutter/flutter/pull/141604) +* @BiskupMaik made their first contribution in [142430](https://github.com/flutter/flutter/pull/142430) +* @ShaunByrne-UniSA made their first contribution in [136181](https://github.com/flutter/flutter/pull/136181) +* @bramp made their first contribution in [142177](https://github.com/flutter/flutter/pull/142177) +* @maRci002 made their first contribution in [142523](https://github.com/flutter/flutter/pull/142523) +* @krispypen made their first contribution in [142913](https://github.com/flutter/flutter/pull/142913) +* @niteshsh4rma made their first contribution in [143213](https://github.com/flutter/flutter/pull/143213) +* @HosseinYousefi made their first contribution in [143376](https://github.com/flutter/flutter/pull/143376) +* @jawscout made their first contribution in [143541](https://github.com/flutter/flutter/pull/143541) +* @gruner made their first contribution in [143887](https://github.com/flutter/flutter/pull/143887) +* @dsanagustin made their first contribution in [143934](https://github.com/flutter/flutter/pull/143934) +* @Markzipan made their first contribution in [141423](https://github.com/flutter/flutter/pull/141423) +* @TJRoger made their first contribution in [132028](https://github.com/flutter/flutter/pull/132028) +* @ufolux made their first contribution in [143678](https://github.com/flutter/flutter/pull/143678) +* @Nenuphar12 made their first contribution in [144697](https://github.com/flutter/flutter/pull/144697) +* @percival888 made their first contribution in [144827](https://github.com/flutter/flutter/pull/144827) +* @victorgalo made their first contribution in [135077](https://github.com/flutter/flutter/pull/135077) +* @Moelfarri made their first contribution in [144888](https://github.com/flutter/flutter/pull/144888) +* @dhikshith12 made their first contribution in [144883](https://github.com/flutter/flutter/pull/144883) +* @goodmost made their first contribution in [145397](https://github.com/flutter/flutter/pull/145397) +* @VatsalBhesaniya made their first contribution in [145157](https://github.com/flutter/flutter/pull/145157) +* @Sahil-kachhap made their first contribution in [145232](https://github.com/flutter/flutter/pull/145232) +* @eltociear made their first contribution in [145683](https://github.com/flutter/flutter/pull/145683) +* @dwzrlp made their first contribution in [145689](https://github.com/flutter/flutter/pull/145689) + +**Full Changelog**: https://github.com/flutter/flutter/compare/3.19.0...3.22.0-0.1.pre + +## Engine + +### Impeller +* [Impeller] new blur: chop off blur extremities by @gaaclarke in [49574](https://github.com/flutter/engine/pull/49574) +* [Flutter GPU] Shader bundle improvements: Uniform structs & member offset reflection, GLES metadata, separate from runtime stage. by @bdero in [49485](https://github.com/flutter/engine/pull/49485) +* [Impeller] Start and end a frame in the RenderTargetCache for each rendering of an entity in the playgrounds by @jason-simmons in [49576](https://github.com/flutter/engine/pull/49576) +* [Impeller] Document mip bias. by @bdero in [49602](https://github.com/flutter/engine/pull/49602) +* [Flutter GPU] Track HostBuffer emplacements by offset. by @bdero in [49618](https://github.com/flutter/engine/pull/49618) +* [Impeller] made sure to scale the blur radius by the effect transform by @gaaclarke in [49645](https://github.com/flutter/engine/pull/49645) +* [Impeller] have Hostbuffer write directly to block allocated device buffers. by @jonahwilliams in [49505](https://github.com/flutter/engine/pull/49505) +* [Impeller] Make the shaders loaded by the GLES playground consistent with other playgrounds by @jason-simmons in [49684](https://github.com/flutter/engine/pull/49684) +* Reverts "[Impeller] have Hostbuffer write directly to block allocated device buffers." by @auto-submit in [49688](https://github.com/flutter/engine/pull/49688) +* [Impeller] reland: write directly to device buffer. by @jonahwilliams in [49691](https://github.com/flutter/engine/pull/49691) +* [Impeller] Vulkan runtime effects/fragment program API by @dnfield in [49543](https://github.com/flutter/engine/pull/49543) +* Try to get GLES tests running... by @dnfield in [49701](https://github.com/flutter/engine/pull/49701) +* [Impeller] Add DrawLine/DrawOval/ClipOval operations to the canvas recorder by @jason-simmons in [49697](https://github.com/flutter/engine/pull/49697) +* [Impeller] dont accidentally copy shared ptr. by @jonahwilliams in [49731](https://github.com/flutter/engine/pull/49731) +* [Impeller] Begin migrating to RenderPass command recording API. by @jonahwilliams in [49480](https://github.com/flutter/engine/pull/49480) +* [Impeller] remove Buffer type and associated abstractions. by @jonahwilliams in [49702](https://github.com/flutter/engine/pull/49702) +* [Impeller] finish migration to new render pass API. by @jonahwilliams in [49740](https://github.com/flutter/engine/pull/49740) +* [Impeller] Descriptor pool incremental allocation. by @jonahwilliams in [49686](https://github.com/flutter/engine/pull/49686) +* [Impeller] move TrackedObjectsVK to separate file. by @jonahwilliams in [49773](https://github.com/flutter/engine/pull/49773) +* [Impeller]: new blur - adds mips for backdrop filters by @gaaclarke in [49607](https://github.com/flutter/engine/pull/49607) +* [Impeller] Properly size struct emplacements for Vulkan Runtime Effects by @dnfield in [49768](https://github.com/flutter/engine/pull/49768) +* [Impeller] fixed nested save layer mipmap counts by @gaaclarke in [49778](https://github.com/flutter/engine/pull/49778) +* [Impeller] Fix hot reload for shaders on Impeller by @dnfield in [49739](https://github.com/flutter/engine/pull/49739) +* Truncate thread names on Linux to the maximum allowed length by @jason-simmons in [49781](https://github.com/flutter/engine/pull/49781) +* Fix typo by @dnfield in [49725](https://github.com/flutter/engine/pull/49725) +* [Flutter GPU] Fix playground shader paths. by @bdero in [49790](https://github.com/flutter/engine/pull/49790) +* [Flutter GPU] Run unittests on CI and fix HostBuffer. by @bdero in [49789](https://github.com/flutter/engine/pull/49789) +* [Impeller] remove shared_ptr copy/release in main rendering loop. by @jonahwilliams in [49801](https://github.com/flutter/engine/pull/49801) +* [Impeller] Encode directly to command buffer for Vulkan. by @jonahwilliams in [49780](https://github.com/flutter/engine/pull/49780) +* [Impeller] Add an API for sampling strictly within the bounds of the source rect in DrawImageRect by @jason-simmons in [49696](https://github.com/flutter/engine/pull/49696) +* Reland "[Windows] Move to FlutterCompositor for rendering" by @loic-sharma in [49726](https://github.com/flutter/engine/pull/49726) +* [Impeller] Fix a race between SwapchainImplVK::Present and WaitForFence by @jason-simmons in [49777](https://github.com/flutter/engine/pull/49777) +* [Impeller] generate mipmaps for imagefilters by @gaaclarke in [49794](https://github.com/flutter/engine/pull/49794) +* Reverts "[Impeller] Encode directly to command buffer for Vulkan." by @auto-submit in [49818](https://github.com/flutter/engine/pull/49818) +* [Impeller] Switch from transient stencil-only to depth+stencil buffer. by @bdero in [47987](https://github.com/flutter/engine/pull/47987) +* Flutter GPU: Add GpuContext.createHostBuffer by @bdero in [49822](https://github.com/flutter/engine/pull/49822) +* Reverts "[Impeller] Switch from transient stencil-only to depth+stencil buffer." by @auto-submit in [49832](https://github.com/flutter/engine/pull/49832) +* [Impeller] disabled misleading vulkan golden image tests by @gaaclarke in [49836](https://github.com/flutter/engine/pull/49836) +* Reland: [Impeller] Turned on new blur. (#48472) by @gaaclarke in [49642](https://github.com/flutter/engine/pull/49642) +* [Impeller] remove shared_ptr copies during text contents rendering. by @jonahwilliams in [49837](https://github.com/flutter/engine/pull/49837) +* Delete trace event from DeviceBufferVK by @dnfield in [49854](https://github.com/flutter/engine/pull/49854) +* [Impeller] Eliminate some shared_ptr copying from EntityPass::Render by @dnfield in [49855](https://github.com/flutter/engine/pull/49855) +* [Impeller] switch Rect fields to LTRB implementation by @flar in [49816](https://github.com/flutter/engine/pull/49816) +* [Impeller] Documentation for SurfaceContextVK by @dnfield in [49882](https://github.com/flutter/engine/pull/49882) +* Reland: Encode directly to command buffer. by @jonahwilliams in [49821](https://github.com/flutter/engine/pull/49821) +* [Impeller] adds vulkan golden images by @gaaclarke in [49849](https://github.com/flutter/engine/pull/49849) +* [Impeller] null check vertex buffer. by @jonahwilliams in [49915](https://github.com/flutter/engine/pull/49915) +* [Impeller] use string view for labels in more places to defer allocatons. by @jonahwilliams in [49905](https://github.com/flutter/engine/pull/49905) +* [Impeller] Encode directly to command buffer for Metal. by @jonahwilliams in [49785](https://github.com/flutter/engine/pull/49785) +* [Impeller] Add golden for Image ColorSource effect transform. by @bdero in [49930](https://github.com/flutter/engine/pull/49930) +* [Impeller] Reland: Switch from transient stencil-only to depth+stencil buffer. by @bdero in [49838](https://github.com/flutter/engine/pull/49838) +* [Impeller] fixed CanRenderClippedRuntimeEffects for vulkan by @gaaclarke in [49912](https://github.com/flutter/engine/pull/49912) +* [Impeller] Create the golden test screenshotter after setting the Vulkan ICD environment variable by @jason-simmons in [49948](https://github.com/flutter/engine/pull/49948) +* [Impeller] remove frame counter that was unused in Vulkan allocator. by @jonahwilliams in [49913](https://github.com/flutter/engine/pull/49913) +* [Impeller] fixed colorspace for metal screenshots by @gaaclarke in [49941](https://github.com/flutter/engine/pull/49941) +* [Impeller] dont emulate command buffers for compute on Metal/Vulkan. by @jonahwilliams in [49922](https://github.com/flutter/engine/pull/49922) +* [Impeller] turned on validation errors for one golden image test by @gaaclarke in [49955](https://github.com/flutter/engine/pull/49955) +* [Impeller] Fix runtime effect pipeline depth/stencil. by @bdero in [49953](https://github.com/flutter/engine/pull/49953) +* [Impeller] fix validation error for playground texture upload. by @jonahwilliams in [49957](https://github.com/flutter/engine/pull/49957) +* Geometry Wars: Documentation Edition by @matanlurey in [49910](https://github.com/flutter/engine/pull/49910) +* Fix a typo in `geometry.cc#ComputeUVGeometryForRect`. by @matanlurey in [49986](https://github.com/flutter/engine/pull/49986) +* [Impeller] use const std::unique_ptr ref for Sampler type. by @jonahwilliams in [49974](https://github.com/flutter/engine/pull/49974) +* [Impeller] Share vulkan playground across goldens by @gaaclarke in [49981](https://github.com/flutter/engine/pull/49981) +* [Impeller] allow non-square corner radii for fast blurs by @flar in [49994](https://github.com/flutter/engine/pull/49994) +* [Impeller] round up subpass coverage when it is close to (and smaller) than root pass size. by @jonahwilliams in [49925](https://github.com/flutter/engine/pull/49925) +* [Impeller] turned on vulkan validation for all but one golden test by @gaaclarke in [50045](https://github.com/flutter/engine/pull/50045) +* Revert "[Impeller] round up subpass coverage when it is close to (and smaller) than root pass size." by @jonahwilliams in [50041](https://github.com/flutter/engine/pull/50041) +* [Impeller] write vertices geometry data to host buffer. by @jonahwilliams in [49741](https://github.com/flutter/engine/pull/49741) +* [Impeller] Do not emit metadata for structs that are not part of the shader's interface by @jason-simmons in [50029](https://github.com/flutter/engine/pull/50029) +* [Impeller] Fix mipmap generation for Vulkan render target textures. by @jonahwilliams in [49848](https://github.com/flutter/engine/pull/49848) +* Optimizations for TLHC frame rate and jank by @johnmccutchan in [50033](https://github.com/flutter/engine/pull/50033) +* winding order from tesellator.h to formats.h by @nikkivirtuoso in [49865](https://github.com/flutter/engine/pull/49865) +* Add include suggested by clang-tidy by @dnfield in [49898](https://github.com/flutter/engine/pull/49898) +* [Impeller] Fix advanced blend alpha issue, improve blend goldens. by @bdero in [50035](https://github.com/flutter/engine/pull/50035) +* Finish landing missing/incorrect header guards across `flutter/engine` by @matanlurey in [50069](https://github.com/flutter/engine/pull/50069) +* [Impeller] add compute pass API for memory barriers, re-enable for Vulkan. by @jonahwilliams in [49946](https://github.com/flutter/engine/pull/49946) +* [Android] Cache GPU resources using HardwareBuffer's id as key by @jonahwilliams in [50028](https://github.com/flutter/engine/pull/50028) +* [Impeller] add missing barrier to compute tessellator. by @jonahwilliams in [50108](https://github.com/flutter/engine/pull/50108) +* Cache Impeller paths in the DisplayList to amortize conversion by @flar in [50076](https://github.com/flutter/engine/pull/50076) +* [Impeller] Fix alpha management issues for advanced blends. by @bdero in [50070](https://github.com/flutter/engine/pull/50070) +* Enable `_Float16` "half-float" Functionality Only When Available. by @johnoneil in [49851](https://github.com/flutter/engine/pull/49851) +* [Impeller] Add interface for submitting multiple command buffers at once. by @jonahwilliams in [50139](https://github.com/flutter/engine/pull/50139) +* Reverts "[Impeller] Add interface for submitting multiple command buffers at once." by @auto-submit in [50174](https://github.com/flutter/engine/pull/50174) +* [Impeller] added mipmaps to subpasses directly on a draw call by @gaaclarke in [50157](https://github.com/flutter/engine/pull/50157) +* [Impeller] Reland: add interface for submitting multiple command buffers at once. by @jonahwilliams in [50180](https://github.com/flutter/engine/pull/50180) +* [Impeller] implemented golden image tests for opengles by @gaaclarke in [50146](https://github.com/flutter/engine/pull/50146) +* [Impeller] Implement framebuffer-fetch via subpasses in Vulkan without extensions. by @chinmaygarde in [50154](https://github.com/flutter/engine/pull/50154) +* [Impeller] make GPU tracing off by default. by @jonahwilliams in [50215](https://github.com/flutter/engine/pull/50215) +* [Impeller] size vk swapchain to window size. by @jonahwilliams in [50205](https://github.com/flutter/engine/pull/50205) +* [Impeller] Clear the GPUTracerVK in_frame flag when ending a frame even if the tracer is disabled by @jason-simmons in [50228](https://github.com/flutter/engine/pull/50228) +* [Impeller] Assign incremental clip depth to all entities. by @bdero in [49828](https://github.com/flutter/engine/pull/49828) +* Moves impeller/golden_tests_harvester to tools/golden_tests_harvester by @zanderso in [50211](https://github.com/flutter/engine/pull/50211) +* [Impeller] remove drawPicture from Aiks Canvas. by @jonahwilliams in [50242](https://github.com/flutter/engine/pull/50242) +* [Impeller] new blur: round downsample to power of two by @gaaclarke in [50245](https://github.com/flutter/engine/pull/50245) +* [Impeller] Replace stencil pipeline ops with enum. by @bdero in [50231](https://github.com/flutter/engine/pull/50231) +* [Impeller] Delete unnecessary special casing for Vulkan in framebuffer fetch. by @chinmaygarde in [50251](https://github.com/flutter/engine/pull/50251) +* [Impeller] Remove unused define. by @chinmaygarde in [50250](https://github.com/flutter/engine/pull/50250) +* [Impeller] updated todos from opengles golden work by @gaaclarke in [50218](https://github.com/flutter/engine/pull/50218) +* [Impeller] blur: removed ability to request out of bounds mip_counts by @gaaclarke in [50290](https://github.com/flutter/engine/pull/50290) +* [Impeller] Allow playgrounds to use SwiftShader via a flag. by @chinmaygarde in [50298](https://github.com/flutter/engine/pull/50298) +* [Impeller] Wire up Angle use to a command line flag and enable it by default on macOS. by @chinmaygarde in [50304](https://github.com/flutter/engine/pull/50304) +* [Impeller] new blur: clamp downsample scalar to 1/16 by @gaaclarke in [50262](https://github.com/flutter/engine/pull/50262) +* [Impeller] In advanced blends, unpremultiply and apply src_input_alpha only if there is no foreground color by @jason-simmons in [50260](https://github.com/flutter/engine/pull/50260) +* [Impeller] Fix blown stack due to always out of date window dimensions on high-dpi devices. by @chinmaygarde in [50307](https://github.com/flutter/engine/pull/50307) +* [Impeller] fix flake in compute unittests. by @jonahwilliams in [50308](https://github.com/flutter/engine/pull/50308) +* Delete fml::ThreadLocalUniquePtr. by @chinmaygarde in [50310](https://github.com/flutter/engine/pull/50310) +* [Impeller] moved blur aiks tests to their own file by @gaaclarke in [50356](https://github.com/flutter/engine/pull/50356) +* [Impeller] blur: hold on to 1/8 downsample until the kernel overflows by @gaaclarke in [50363](https://github.com/flutter/engine/pull/50363) +* [Impeller] Do not skip the GLES render pass if the command list is empty by @jason-simmons in [50381](https://github.com/flutter/engine/pull/50381) +* [Impeller] Cache RenderPass/Framebuffer objects on the resolve texture sources. by @jonahwilliams in [50142](https://github.com/flutter/engine/pull/50142) +* [Impeller] Specify if Angle or SwiftShader is being used in the title. by @chinmaygarde in [50376](https://github.com/flutter/engine/pull/50376) +* [Impeller] Fix pipeline attachment layout in CanRenderToTexture. by @bdero in [50413](https://github.com/flutter/engine/pull/50413) +* [Impeller] Always pop clips on restore. by @bdero in [50419](https://github.com/flutter/engine/pull/50419) +* [Impeller] Initialize the stencil reference value. by @chinmaygarde in [50373](https://github.com/flutter/engine/pull/50373) +* [Impeller] move path out of PathBuilder in TakePath. by @jonahwilliams in [50444](https://github.com/flutter/engine/pull/50444) +* [Impeller] blur: drop eighth downsample barrier by @gaaclarke in [50405](https://github.com/flutter/engine/pull/50405) +* [Impeller] remove extra buffer usage in compute. by @jonahwilliams in [50415](https://github.com/flutter/engine/pull/50415) +* [Impeller] Vulkan: Don't fail initialization if stencil-only textures aren't supported. by @bdero in [50455](https://github.com/flutter/engine/pull/50455) +* [Impeller] Delete the archivist framework. by @chinmaygarde in [50474](https://github.com/flutter/engine/pull/50474) +* [Impeller] Move impeller/image to impeller/playground/image by @dnfield in [50480](https://github.com/flutter/engine/pull/50480) +* [Impeller] Remove the Vulkan queue submit thread and always present Vulkan images on the raster thread by @jason-simmons in [50484](https://github.com/flutter/engine/pull/50484) +* [Impeller] improve performance of polyline and stroke generation by reducing allocation and lambda usage. by @jonahwilliams in [50379](https://github.com/flutter/engine/pull/50379) +* [Impeller] cleaned up StrokePathGeometry and removed runtime polymorphism by @gaaclarke in [50506](https://github.com/flutter/engine/pull/50506) +* [Impeller] Call vkQueuePresentKHR through the ContextVK's synchronized graphics queue wrapper by @jason-simmons in [50509](https://github.com/flutter/engine/pull/50509) +* [Impeller] Remove the unused Vulkan queue submit task runner by @jason-simmons in [50511](https://github.com/flutter/engine/pull/50511) +* [Impeller] deleted the old blur by @gaaclarke in [50470](https://github.com/flutter/engine/pull/50470) +* [Impeller] force render pass construction on all backends to ensure image layout is transitioned/render pass state setup. by @jonahwilliams in [50539](https://github.com/flutter/engine/pull/50539) +* Roll vulkan-deps to 014f44e134a1de387791bffacc32ff9d8db71176 by @jason-simmons in [50515](https://github.com/flutter/engine/pull/50515) +* [Impeller] Remove references to moved impeller/image from README. by @chinmaygarde in [50513](https://github.com/flutter/engine/pull/50513) +* [Impeller] Don't suppress outdated validation error. by @chinmaygarde in [50568](https://github.com/flutter/engine/pull/50568) +* Move Linux impeller_unittests to linux_unopt by @zanderso in [50558](https://github.com/flutter/engine/pull/50558) +* [Impeller] CommandPoolVK recycles command buffers too. by @jonahwilliams in [50468](https://github.com/flutter/engine/pull/50468) +* [Impeller] cleaned up and removed golden test exceptions by @gaaclarke in [50572](https://github.com/flutter/engine/pull/50572) +* [Impeller] replaced playground macros with functions by @gaaclarke in [50602](https://github.com/flutter/engine/pull/50602) +* Update embedder support for Impeller/OpenGL to load some missing shaders and configure a depth attachment by @jason-simmons in [50416](https://github.com/flutter/engine/pull/50416) +* [Impeller] remove denylist entry. by @jonahwilliams in [50605](https://github.com/flutter/engine/pull/50605) +* [Impeller] Turn on golden tests that use the ImGui widgets functions by @gaaclarke in [50606](https://github.com/flutter/engine/pull/50606) +* [Impeller] fix cmd buffer recycling bug in test. by @jonahwilliams in [50615](https://github.com/flutter/engine/pull/50615) +* [Impeller] add benchmarks for the stroke geometry entity code by @flar in [50616](https://github.com/flutter/engine/pull/50616) +* [Impeller] Migrate all ColorSourceContents to use a shared rendering routine. by @bdero in [50261](https://github.com/flutter/engine/pull/50261) +* [Impeller] Conditionally use A8 or R8 format glyph atlas based on capabilities. by @jonahwilliams in [50534](https://github.com/flutter/engine/pull/50534) +* Add a comment explaining the lifecycle of `tls_command_pool_map`. by @matanlurey in [50623](https://github.com/flutter/engine/pull/50623) +* [Impeller] consolidate transforms in PositionUVWriter by @flar in [50635](https://github.com/flutter/engine/pull/50635) +* [iOS] Ensure FlutterMetalLayer has correct backpressure. by @jonahwilliams in [50486](https://github.com/flutter/engine/pull/50486) +* Provide a matrix inverse shim for GLES 2.0. by @johnoneil in [50545](https://github.com/flutter/engine/pull/50545) +* [Impeller] Updated benchmarks by @gaaclarke in [50694](https://github.com/flutter/engine/pull/50694) +* [Impeller] Add an error message when failing to write golden screenshot. by @bdero in [50698](https://github.com/flutter/engine/pull/50698) +* [Impeller] use fewer threads for shader bootstrap workers on low core machines. by @jonahwilliams in [50726](https://github.com/flutter/engine/pull/50726) +* [Impeller] Assign subpass depth on restore rather than creation. by @bdero in [50626](https://github.com/flutter/engine/pull/50626) +* [Impeller] add additional setup method that caches more pipelines, warms internal shader code by @jonahwilliams in [50521](https://github.com/flutter/engine/pull/50521) +* [Impeller] Fix golden flake due to rand use. by @bdero in [50743](https://github.com/flutter/engine/pull/50743) +* [Impeller] Run stroke benchmarks on unclosed paths by @flar in [50765](https://github.com/flutter/engine/pull/50765) +* [Impeller] add missing std::move in setup depth stencil. by @jonahwilliams in [50750](https://github.com/flutter/engine/pull/50750) +* [Impeller] Apply Entity depth in filter shaders that may render directly to an EntityPass. by @bdero in [50742](https://github.com/flutter/engine/pull/50742) +* [Impeller] Remove non-Flutter fill types from impeller::Path. by @bdero in [50814](https://github.com/flutter/engine/pull/50814) +* [Impeller] Add GeometryResult enum with StC modes. by @bdero in [50816](https://github.com/flutter/engine/pull/50816) +* [Impeller] force bootstrap render pass. by @jonahwilliams in [50749](https://github.com/flutter/engine/pull/50749) +* Use 'et format' in CI. Check formatting of all files in CI by @zanderso in [50810](https://github.com/flutter/engine/pull/50810) +* [Impeller] cache onscreen render targets. by @jonahwilliams in [50751](https://github.com/flutter/engine/pull/50751) +* [Impeller] applied the lerp hack to blur (roughly 2x speedup?) by @gaaclarke in [50790](https://github.com/flutter/engine/pull/50790) +* Shift some deps to //flutter/third_party by @zanderso in [50830](https://github.com/flutter/engine/pull/50830) +* [Impeller] Add StC color source/clip behavior + constexpr flag for enabling StC. by @bdero in [50817](https://github.com/flutter/engine/pull/50817) +* Reverts "[Impeller] cache onscreen render targets. (#50751)" by @auto-submit in [50871](https://github.com/flutter/engine/pull/50871) +* [Impeller] Add stroke benchmarks that create UVs with no transform by @flar in [50847](https://github.com/flutter/engine/pull/50847) +* [Impeller] moved the kernel size assert to a more appropriate location. by @gaaclarke in [50880](https://github.com/flutter/engine/pull/50880) +* [Impeller] Make StC work for Position+UV buffers. by @bdero in [50900](https://github.com/flutter/engine/pull/50900) +* [Impeller] Compute UV coordinates lazily in PositionUVWriter by @flar in [50879](https://github.com/flutter/engine/pull/50879) +* [Impeller] Fix a race that can abort the process if the Vulkan context is destroyed while pipeline creation tasks are pending by @jason-simmons in [50883](https://github.com/flutter/engine/pull/50883) +* [Impeller] disble render pass caches. by @jonahwilliams in [50976](https://github.com/flutter/engine/pull/50976) +* Run engine unit tests on mac host_debug_unopt_arm64 by @zanderso in [50327](https://github.com/flutter/engine/pull/50327) +* [Impeller] Fix a misspelling and name mismatch in a shader test fixture by @jason-simmons in [50983](https://github.com/flutter/engine/pull/50983) +* [Impeller] various StC fixes for GPU -> CPU readback plus BufferBindingGLES error by @jonahwilliams in [50951](https://github.com/flutter/engine/pull/50951) +* Move vulkan-deps to //flutter/third_party/vulkan-deps by @jason-simmons in [51013](https://github.com/flutter/engine/pull/51013) +* [Impeller] Fix GL depth state. by @bdero in [51040](https://github.com/flutter/engine/pull/51040) +* [Impeller] fix render pass depth descriptor. by @jonahwilliams in [51031](https://github.com/flutter/engine/pull/51031) +* [Impeller] Mark subpass framebuffer fetch tests as unsupported on GLES by @jason-simmons in [50982](https://github.com/flutter/engine/pull/50982) +* [Impeller] Cache entire render target and not just allocations. by @jonahwilliams in [50990](https://github.com/flutter/engine/pull/50990) +* Prefix flutter in flutter_vma.h import by @CaseyHillers in [51065](https://github.com/flutter/engine/pull/51065) +* [Impeller] test removal of submit batching. by @jonahwilliams in [51094](https://github.com/flutter/engine/pull/51094) +* [Impeller] remove warning about device transient depth+stencil. by @jonahwilliams in [51033](https://github.com/flutter/engine/pull/51033) +* [Impeller] use specific format for bootstrap texture. by @jonahwilliams in [51082](https://github.com/flutter/engine/pull/51082) +* [Impeller] Fix leak of rectangle packer in typographer tests by @jason-simmons in [51113](https://github.com/flutter/engine/pull/51113) +* [Impeller] Fix vertex counts in some display list tests by @jason-simmons in [51111](https://github.com/flutter/engine/pull/51111) +* [Impeller] Fix string search in CompilerTest.SkSLTextureLookUpOrderOfOperations by @jason-simmons in [51109](https://github.com/flutter/engine/pull/51109) +* [Impeller] ASAN/LSAN fixes for the mock Vulkan implementation by @jason-simmons in [51115](https://github.com/flutter/engine/pull/51115) +* [Impeller] implements blur styles inner and outer by @gaaclarke in [51018](https://github.com/flutter/engine/pull/51018) +* Support gtest-parallel when running Impeller unit tests by @jason-simmons in [51079](https://github.com/flutter/engine/pull/51079) +* [Impeller] Fix the clip replay mechanism. by @bdero in [51173](https://github.com/flutter/engine/pull/51173) +* [Impeller] Fix string comparison in MockGLES.CanInitialize test by @jason-simmons in [51181](https://github.com/flutter/engine/pull/51181) +* [Impeller] Enable depth buffer clipping & Stencil-then-Cover path rendering. by @bdero in [50856](https://github.com/flutter/engine/pull/50856) +* [Impeller] Turn off StC. by @bdero in [51191](https://github.com/flutter/engine/pull/51191) +* Folds concurrent job calculation into `tools/gn` by @zanderso in [51193](https://github.com/flutter/engine/pull/51193) +* [Impeller] Implement YUV texture import and sampling for video player frames. by @chinmaygarde in [50730](https://github.com/flutter/engine/pull/50730) +* [Impeller] Fix convex triangulation winding bug for multi-contour paths. by @bdero in [51198](https://github.com/flutter/engine/pull/51198) +* [Impeller] Enable depth buffer clipping & Stencil-then-Cover path rendering. by @bdero in [51209](https://github.com/flutter/engine/pull/51209) +* [Impeller] implement blur style solid by @gaaclarke in [50892](https://github.com/flutter/engine/pull/50892) +* Reverts "[Impeller] Enable depth buffer clipping & Stencil-then-Cover path rendering. (#51209)" by @auto-submit in [51217](https://github.com/flutter/engine/pull/51217) +* [Impeller] Fix path winding when bridging from contours with an odd number of points. by @bdero in [51218](https://github.com/flutter/engine/pull/51218) +* [Impeller] Enable depth buffer clipping & Stencil-then-Cover path rendering. by @bdero in [51219](https://github.com/flutter/engine/pull/51219) +* [Impeller] disable blending in gaussian intermediate steps. by @jonahwilliams in [51118](https://github.com/flutter/engine/pull/51118) +* [Impeller] Create a new render target with the specified attachment configs when reusing cached render target textures by @jason-simmons in [51208](https://github.com/flutter/engine/pull/51208) +* [Impeller] Apply padding for alignment when doing HostBuffer::Emplace with a callback by @jason-simmons in [51221](https://github.com/flutter/engine/pull/51221) +* [Impeller] Append fewer redundant points when bridging triangle strips between contours. by @bdero in [51232](https://github.com/flutter/engine/pull/51232) +* [Impeller] fold memory check into allocator_vk by @jonahwilliams in [51187](https://github.com/flutter/engine/pull/51187) +* [Flutter GPU] Move method tests to flutter_tester. by @bdero in [51223](https://github.com/flutter/engine/pull/51223) +* Reverts "[Impeller] fold memory check into allocator_vk (#51187)" by @auto-submit in [51243](https://github.com/flutter/engine/pull/51243) +* Reverts "[Impeller] disable blending in gaussian intermediate steps. (#51118)" by @auto-submit in [51244](https://github.com/flutter/engine/pull/51244) +* Move Abseil from src to flutter third_party dir by @cbracken in [51245](https://github.com/flutter/engine/pull/51245) +* [Impeller] add a per-frame trace event for heap usage on Vulkan. by @jonahwilliams in [51246](https://github.com/flutter/engine/pull/51246) +* [Impeller] Record restore clips in the replay mechanism when StC is enabled. by @bdero in [51259](https://github.com/flutter/engine/pull/51259) +* [Impeller] Fix a buffer overrun in ImpellerC reflector resource offsets by @jason-simmons in [51108](https://github.com/flutter/engine/pull/51108) +* Move ANGLE to flutter/third_party by @cbracken in [51270](https://github.com/flutter/engine/pull/51270) +* [Impeller] moved tests to aiks_blur_unittests, added warning by @gaaclarke in [51274](https://github.com/flutter/engine/pull/51274) +* [Impeller] Add mask blur style support to the RRect blur fast path. by @bdero in [51250](https://github.com/flutter/engine/pull/51250) +* Migrate vulkan_memory_allocator to flutter/third_party by @cbracken in [51275](https://github.com/flutter/engine/pull/51275) +* [Impeller] More efficient usage of transient onscreen attachments. by @jonahwilliams in [51206](https://github.com/flutter/engine/pull/51206) +* [Impeller] Add the KHR prefix to existing swapchain utilities. by @chinmaygarde in [51295](https://github.com/flutter/engine/pull/51295) +* [Impeller] implement mask blur for textures by @gaaclarke in [51183](https://github.com/flutter/engine/pull/51183) +* [Impeller] Make DeviceHolder follow convention for backend specific utilities. by @chinmaygarde in [51300](https://github.com/flutter/engine/pull/51300) +* [Impeller] Use the AHB prefix for utils that work with Android Hardware Buffers. by @chinmaygarde in [51298](https://github.com/flutter/engine/pull/51298) +* Disambiguate conditional expressions by @jiahaog in [51285](https://github.com/flutter/engine/pull/51285) +* [Impeller] implements blur styles for gradients by @gaaclarke in [51264](https://github.com/flutter/engine/pull/51264) +* [Impeller] Fix shader depth assignment & glyph atlas transform. by @bdero in [51343](https://github.com/flutter/engine/pull/51343) +* [Impeller] Add utility for type safe masks. by @chinmaygarde in [51361](https://github.com/flutter/engine/pull/51361) +* [Impeller] Make masks type safe. by @chinmaygarde in [51369](https://github.com/flutter/engine/pull/51369) +* [Impeller] attempt to get validation errors from CI unittests. by @jonahwilliams in [51341](https://github.com/flutter/engine/pull/51341) +* [Impeller] added missing golden test for DrawScaledTextWithPerspectiveSaveLayer by @gaaclarke in [51368](https://github.com/flutter/engine/pull/51368) +* [Impeller] fix heap selection process for YUV textures. by @jonahwilliams in [51262](https://github.com/flutter/engine/pull/51262) +* [Impeller] cleanup and test vk image usage flags. by @jonahwilliams in [51301](https://github.com/flutter/engine/pull/51301) +* Remove `--enable-impeller-{backend}` flags (always `True`). by @matanlurey in [51402](https://github.com/flutter/engine/pull/51402) +* [Impeller] started asserting golden test runner has fatal impeller validations by @gaaclarke in [51357](https://github.com/flutter/engine/pull/51357) +* [Impeller] revert round out. by @jonahwilliams in [51395](https://github.com/flutter/engine/pull/51395) +* [Impeller] revert glyph atlas texture recycling. by @jonahwilliams in [51428](https://github.com/flutter/engine/pull/51428) +* [DisplayList] Pre-Compute saveLayer bounds in DLBuilder by @flar in [50935](https://github.com/flutter/engine/pull/50935) +* [Impeller] A toolkit for managed handles to Android NDK vended objects. by @chinmaygarde in [51334](https://github.com/flutter/engine/pull/51334) +* Reverts "[Impeller] A toolkit for managed handles to Android NDK vended objects. (#51334)" by @auto-submit in [51457](https://github.com/flutter/engine/pull/51457) +* Re-land "[Impeller] A toolkit for managed handles to Android NDK vended objects." by @chinmaygarde in [51460](https://github.com/flutter/engine/pull/51460) +* Minor markup tweaks in render_frame_capture.md by @Hixie in [51480](https://github.com/flutter/engine/pull/51480) +* [Impeller] make sure to render TiledTextureContents if the geometry doesn't fit in the texture's bounds. by @gaaclarke in [51393](https://github.com/flutter/engine/pull/51393) +* [Impeller] revert vestiges of submit batching. by @jonahwilliams in [51450](https://github.com/flutter/engine/pull/51450) +* Add details to renderdoc_frame_capture.md by @Hixie in [51483](https://github.com/flutter/engine/pull/51483) +* A native Android unit-testing harness. by @chinmaygarde in [51479](https://github.com/flutter/engine/pull/51479) +* [Impeller] Allow identifying device driver and vendor information. by @chinmaygarde in [51498](https://github.com/flutter/engine/pull/51498) +* More renderdoc_frame_capture.md updates by @Hixie in [51499](https://github.com/flutter/engine/pull/51499) +* [Impeller] add test that demonstrates that VVL failures are fatal. by @jonahwilliams in [51525](https://github.com/flutter/engine/pull/51525) +* [Impeller] Check for empty sizes when creating render targets in RenderTargetCache by @jason-simmons in [51597](https://github.com/flutter/engine/pull/51597) +* [Impeller] fix unbalanced restores. by @jonahwilliams in [51648](https://github.com/flutter/engine/pull/51648) +* [Impeller] Refactor clip stack into separate testable class. by @jonahwilliams in [51656](https://github.com/flutter/engine/pull/51656) +* [Impeller] revert usage of foreground blend optimization. by @jonahwilliams in [51679](https://github.com/flutter/engine/pull/51679) +* [Impeller] Simplify calculation of Matrix::GetMaxBasisXY() by @flar in [51664](https://github.com/flutter/engine/pull/51664) +* [Impeller] Do not apply mask filters to a DrawPaint cover geometry by @jason-simmons in [51670](https://github.com/flutter/engine/pull/51670) +* [Impeller] use screen space coordinates for dithering. by @jonahwilliams in [51668](https://github.com/flutter/engine/pull/51668) +* [Impeller] Transform geometry to safe depth ranges instead of forcing discrete depth values. by @bdero in [51673](https://github.com/flutter/engine/pull/51673) +* [Impeller] fix remaining Validation errors. by @jonahwilliams in [51692](https://github.com/flutter/engine/pull/51692) +* [Impeller] Use the scissor to limit all draws by clip coverage. by @bdero in [51698](https://github.com/flutter/engine/pull/51698) +* Reverts "[Impeller] Use the scissor to limit all draws by clip coverage. (#51698)" by @auto-submit in [51728](https://github.com/flutter/engine/pull/51728) +* [Impeller] use optimal depth attachment, remove useless barrier. by @jonahwilliams in [51723](https://github.com/flutter/engine/pull/51723) +* [Impeller] render empty filled paths without crashing. by @jonahwilliams in [51713](https://github.com/flutter/engine/pull/51713) +* [Impeller] adds a `plus` advanced blend for f16 pixel formats by @gaaclarke in [51589](https://github.com/flutter/engine/pull/51589) +* [Impeller] Reland: Use the scissor to limit all draws by clip coverage. by @bdero in [51731](https://github.com/flutter/engine/pull/51731) +* [Impeller] correct multisample resolve/store configuration for Vulkan. by @jonahwilliams in [51740](https://github.com/flutter/engine/pull/51740) +* Reverts "[Impeller] adds a `plus` advanced blend for f16 pixel formats (#51589)" by @auto-submit in [51741](https://github.com/flutter/engine/pull/51741) +### Android +* Resize the RenderTarget before creating and passing its Surface to the VirtualDisplay by @johnmccutchan in [49619](https://github.com/flutter/engine/pull/49619) +* Simplify PlatformViewRenderTarget interface by @johnmccutchan in [49639](https://github.com/flutter/engine/pull/49639) +* Make `shell/platform/android` IDE-friendly, and add documentation by @matanlurey in [49612](https://github.com/flutter/engine/pull/49612) +* Follow various best practices in `FlutterRenderer` by @matanlurey in [49651](https://github.com/flutter/engine/pull/49651) +* Add `SurfaceTextureSurfaceProducer` by @matanlurey in [49653](https://github.com/flutter/engine/pull/49653) +* [Android] Reset IME state in TextInputPlugin.clearTextInputClient by @bleroux in [49829](https://github.com/flutter/engine/pull/49829) +* [Android] Fix KeyEmbedderResponder throws a NullPointerException by @bleroux in [49860](https://github.com/flutter/engine/pull/49860) +* Change how OpenGL textures are flipped in the Android embedder. by @matanlurey in [49938](https://github.com/flutter/engine/pull/49938) +* Do not double-increment `nextId` when using `createSurfaceProducer` with `SurfaceTexture`s by @matanlurey in [50011](https://github.com/flutter/engine/pull/50011) +* [Impeller] call shutdown method in Android context. by @jonahwilliams in [49992](https://github.com/flutter/engine/pull/49992) +* Fix android new engine in group by @eitanliu in [49659](https://github.com/flutter/engine/pull/49659) +* Reverts "Optimizations for TLHC frame rate and jank" by @auto-submit in [50062](https://github.com/flutter/engine/pull/50062) +* Reland Optimizations for TLHC frame rate and jank by @johnmccutchan in [50065](https://github.com/flutter/engine/pull/50065) +* Use clamp sampling mode in external texture. by @jonahwilliams in [50063](https://github.com/flutter/engine/pull/50063) +* Avoid sizing `ImageReaderSurfaceProducer` smaller than 1x1 by @matanlurey in [50066](https://github.com/flutter/engine/pull/50066) +* Fix Shell::Screenshot for Impeller by @dnfield in [50072](https://github.com/flutter/engine/pull/50072) +* Reverts "[Android] Cache GPU resources using HardwareBuffer's id as key" by @auto-submit in [50114](https://github.com/flutter/engine/pull/50114) +* Manually revert TLHC optimizations, holding on to width/height changes. by @matanlurey in [50144](https://github.com/flutter/engine/pull/50144) +* Re-Re-land Manually revert TLHC optimizations by @johnmccutchan in [50155](https://github.com/flutter/engine/pull/50155) +* Revert: "Change how OpenGL textures are flipped in the Android embedder" by @matanlurey in [50158](https://github.com/flutter/engine/pull/50158) +* [Android] Reland: recycle hardware buffer textures. by @jonahwilliams in [50122](https://github.com/flutter/engine/pull/50122) +* Revert "Close connection on keyboard close (#41500)" by @MeandNi in [49366](https://github.com/flutter/engine/pull/49366) +* Provide a more helpful error message in the case of UnsatisfiedLinkError by @johnmccutchan in [50247](https://github.com/flutter/engine/pull/50247) +* [Android] Fix TextInputType.none for devices with physical keyboard by @bartcone in [49980](https://github.com/flutter/engine/pull/49980) +* Update NDK to version 26 by @zanderso in [48254](https://github.com/flutter/engine/pull/48254) +* Fix Android `scenario_app` to actually run and block on CI by @matanlurey in [50414](https://github.com/flutter/engine/pull/50414) +* [Impeller] Log non-default graphics backend usages, use IMPORTANT rather than ERROR by @dnfield in [50448](https://github.com/flutter/engine/pull/50448) +* Sever the //flutter/vulkan dependency in Flutter in the Android embedder. by @chinmaygarde in [50472](https://github.com/flutter/engine/pull/50472) +* Clean up additional NDK helper related code by @dnfield in [50518](https://github.com/flutter/engine/pull/50518) +* Refactor NDK helpers some more, add methods for SurfaceControl/Transaction, tests by @dnfield in [50540](https://github.com/flutter/engine/pull/50540) +* Make Android Studio depend on the android_embedding_dependencies by @gmackall in [50612](https://github.com/flutter/engine/pull/50612) +* Fix github md "Note" and "Tip" blocks in Android shell README by @gmackall in [50664](https://github.com/flutter/engine/pull/50664) +* [Android] Minor refactor: Remove redundant methods. by @0xZOne in [50647](https://github.com/flutter/engine/pull/50647) +* Use a GN variable (dart_src) to reference the location of the Dart checkout. by @chinmaygarde in [50624](https://github.com/flutter/engine/pull/50624) +* [Android] Remove the unnecessary parent interface. by @0xZOne in [50677](https://github.com/flutter/engine/pull/50677) +* Implement the render_to_surface flag in GPUSurfaceGLImpeller by @jason-simmons in [50669](https://github.com/flutter/engine/pull/50669) +* Disallow files additional named `GeneratedPluginRegistrant.java`. by @matanlurey in [50796](https://github.com/flutter/engine/pull/50796) +* Hook ImageReaderSurfaceProducer to the onTrimMemory listener interface by @johnmccutchan in [50792](https://github.com/flutter/engine/pull/50792) +* Remove WindowManager reflection in SingleViewPresentation.java by @gmackall in [49996](https://github.com/flutter/engine/pull/49996) +* Tweak verbose log messages in ImageReaderSurfaceProducer by @johnmccutchan in [50831](https://github.com/flutter/engine/pull/50831) +* Make Android Studio be able to run android embedding unit tests out of the box by @gmackall in [50840](https://github.com/flutter/engine/pull/50840) +* Reverts "Remove WindowManager reflection in SingleViewPresentation.java (#49996)" by @auto-submit in [50873](https://github.com/flutter/engine/pull/50873) +* Remove timeouts from CountdownLatch.await in tests by @dnfield in [50930](https://github.com/flutter/engine/pull/50930) +* Shift //third_party/icu to //flutter/third_party by @zanderso in [50924](https://github.com/flutter/engine/pull/50924) +* Avoid reloading font collection for spawned engines with compatible asset managers by @dnfield in [50897](https://github.com/flutter/engine/pull/50897) +* Update Surface reference after resizing render target in VirtualDisplay based platform views by @johnmccutchan in [50971](https://github.com/flutter/engine/pull/50971) +* Add flutter prefix to import by @jiahaog in [51042](https://github.com/flutter/engine/pull/51042) +* Bump everything to Android 21 by @dnfield in [51032](https://github.com/flutter/engine/pull/51032) +* [Android] update fallback and rendering state to combine impeller + android backend. by @jonahwilliams in [51008](https://github.com/flutter/engine/pull/51008) +* Revert "Bump everything to Android 21" by @dnfield in [51056](https://github.com/flutter/engine/pull/51056) +* Test the `SurfaceTextureSurfaceProducer`-branch in the Android `scenario_app` by @matanlurey in [51061](https://github.com/flutter/engine/pull/51061) +* [Impeller] switch fallback default from ImpellerVulkan to SkiaOpenGLES by @jonahwilliams in [51071](https://github.com/flutter/engine/pull/51071) +* Reapply "Bump everything to Android 21" (#51056) by @dnfield in [51070](https://github.com/flutter/engine/pull/51070) +* Add instructions for getting code coverage in Android Studio by @gmackall in [51105](https://github.com/flutter/engine/pull/51105) +* Guard against API 22 by @dnfield in [51167](https://github.com/flutter/engine/pull/51167) +* [Re-land] Remove WindowManager reflection in SingleViewPresentation.java by @gmackall in [50890](https://github.com/flutter/engine/pull/50890) +* Use `io.flutter.Build.API_LEVELS` rather than `android.os.Build.VERSION_CODES` by @dnfield in [51171](https://github.com/flutter/engine/pull/51171) +* Explicitly list Android embedding dependency jars in GN by @zanderso in [51303](https://github.com/flutter/engine/pull/51303) +* Bump Robolectric to 4.11.1 by @utzcoz in [51310](https://github.com/flutter/engine/pull/51310) +* Disable cleaning up ImageReaders in memory pressure callback by @johnmccutchan in [51391](https://github.com/flutter/engine/pull/51391) +* Add missing license blocks. by @chinmaygarde in [51496](https://github.com/flutter/engine/pull/51496) +* Add more logging for UnsatisfiedLinkError by @gmackall in [51534](https://github.com/flutter/engine/pull/51534) +* Add even more logging for UnsatisfiedLinkError by @gmackall in [51554](https://github.com/flutter/engine/pull/51554) +* Upgrade to gradle 8.3 by @gmackall in [51422](https://github.com/flutter/engine/pull/51422) +* [Android] Fix the issue of blank or frozen pages in shared engine scenarios by @0xZOne in [50947](https://github.com/flutter/engine/pull/50947) +* Revert "Disable cleaning up ImageReaders in memory pressure callback" by @zanderso in [51665](https://github.com/flutter/engine/pull/51665) +* Platform channel for predictive back in route transitions on android by @maRci002 in [49093](https://github.com/flutter/engine/pull/49093) +* Make EmbedderExternalViewEmbedder present to the correct view by @dkwingsmt in [51719](https://github.com/flutter/engine/pull/51719) +### iOS +* Remove iOS 12 availability checks by @jmagman in [49771](https://github.com/flutter/engine/pull/49771) +* [macOS] Fix: Memory sanitizer violated when encoding indirect strings by @dkwingsmt in [49995](https://github.com/flutter/engine/pull/49995) +* Log FlutterJSONMessageCodec decode errors before asserting by @jmagman in [50163](https://github.com/flutter/engine/pull/50163) +* `visiblePassword` uses ASCII keyboard on iOS by @LongCatIsLooong in [50293](https://github.com/flutter/engine/pull/50293) +* Fix iOS password autofill prompt dismissal causes layout to resize by @TahaTesser in [50364](https://github.com/flutter/engine/pull/50364) +* [ios] Fix memory leak in ChildClippingView by @0xZOne in [50389](https://github.com/flutter/engine/pull/50389) +* Revert "Fix iOS password autofill prompt dismissal causes layout to resize (#50364)" by @TahaTesser in [50760](https://github.com/flutter/engine/pull/50760) +* iPad keyboard cut/copy/paste buttons by @justinmc in [50923](https://github.com/flutter/engine/pull/50923) +* Support accessibility back gesture to pop route from view controller by @jmagman in [51241](https://github.com/flutter/engine/pull/51241) +* Migrate use of deprecated GrDirectContext::MakeMetal by @kjlubick in [51537](https://github.com/flutter/engine/pull/51537) +* Move //buildtools to //flutter/buildtools by @jason-simmons in [51526](https://github.com/flutter/engine/pull/51526) +* [ios][platform_view][performance] overlay intersection by @hellohuanlin in [50637](https://github.com/flutter/engine/pull/50637) +* [iOS] remove arbitrary framerate cap. by @jonahwilliams in [51663](https://github.com/flutter/engine/pull/51663) +* [ios]ignore single edge pixel instead of rounding by @hellohuanlin in [51687](https://github.com/flutter/engine/pull/51687) +### Web +* Refactor flutter.js to do dart2wasm bootstrapping and CanvasKit/Skwasm preloading. by @eyebrowsoffire in [49037](https://github.com/flutter/engine/pull/49037) +* [web] Leave blob URLs untouched in TT policy. by @ditman in [49782](https://github.com/flutter/engine/pull/49782) +* [web] fix ==/hashCode/toString for several classes across renderers by @yjbanov in [49786](https://github.com/flutter/engine/pull/49786) +* [canvaskit] Fall back to multi-context rendering on Firefox and Safari by @harryterkelsen in [49572](https://github.com/flutter/engine/pull/49572) +* [web] Bootstrap tests without implicit view by default by @mdebbar in [48629](https://github.com/flutter/engine/pull/48629) +* [Web] Fix an assertion error due to synthesized keyboard events by @bleroux in [49087](https://github.com/flutter/engine/pull/49087) +* Adding DDC module system targets to web SDK artifacts. by @Markzipan in [47783](https://github.com/flutter/engine/pull/47783) +* [web] add support for AppLifecycleState changes by @maRci002 in [44720](https://github.com/flutter/engine/pull/44720) +* [web] Prevent re-rendering disposed views when the engine hot restarts. by @ditman in [49958](https://github.com/flutter/engine/pull/49958) +* [web] Add `views` proxy and `getInitialData`. by @ditman in [49320](https://github.com/flutter/engine/pull/49320) +* [web] Do not wipe the PlatformViewManager when disposing of a view. by @ditman in [49991](https://github.com/flutter/engine/pull/49991) +* [web] Final nail in FlutterViewEmbedder's coffin by @mdebbar in [49769](https://github.com/flutter/engine/pull/49769) +* [CanvasKit] Only render one frame at a time. by @harryterkelsen in [50055](https://github.com/flutter/engine/pull/50055) +* Make screen reader announcement append a non-breaking space every other message. by @marcianx in [50151](https://github.com/flutter/engine/pull/50151) +* Remove migration flag and unused header files by @LongCatIsLooong in [50216](https://github.com/flutter/engine/pull/50216) +* Reverts "Remove migration flag and unused header files" by @auto-submit in [50229](https://github.com/flutter/engine/pull/50229) +* Add the focus state related methods to the platform dispatcher by @tugorez in [49841](https://github.com/flutter/engine/pull/49841) +* Reverts "Add the focus state related methods to the platform dispatcher" by @auto-submit in [50268](https://github.com/flutter/engine/pull/50268) +* Add the focus state related methods to the platform dispatcher by @tugorez in [50273](https://github.com/flutter/engine/pull/50273) +* [web] Fix Scene clip bounds. Trigger resize on DPR Change. by @ditman in [50161](https://github.com/flutter/engine/pull/50161) +* Reverts "[web] Fix Scene clip bounds. Trigger resize on DPR Change." by @auto-submit in [50404](https://github.com/flutter/engine/pull/50404) +* Skip flaking test on Windows nobody is fixing. by @matanlurey in [50401](https://github.com/flutter/engine/pull/50401) +* Fix: On the Web, cannot support multiline inputting when registering customized TextInputControl by @Satsrag in [45522](https://github.com/flutter/engine/pull/45522) +* [web] - Fix `inputmode` on Android Firefox by @htoor3 in [46901](https://github.com/flutter/engine/pull/46901) +* Reland "[web] Fix Scene clip bounds. Trigger resize on DPR Change." by @ditman in [50457](https://github.com/flutter/engine/pull/50457) +* [web] Fix HtmlViewEmbedder.dispose by @ditman in [50482](https://github.com/flutter/engine/pull/50482) +* Make the web engine publish view forward focus and unfocus events by @tugorez in [50177](https://github.com/flutter/engine/pull/50177) +* Remove legacy references to `Cirrus` and suspected dead-code. by @matanlurey in [50442](https://github.com/flutter/engine/pull/50442) +* Rename [ViewFocusDirection.backwards] to [ViewFocusDirection.backward] by @tugorez in [50533](https://github.com/flutter/engine/pull/50533) +* Temporarily change canvaskit kitchensink test to unblock the skia roll by @LongCatIsLooong in [50617](https://github.com/flutter/engine/pull/50617) +* [web] Increase tolerance for golden diffs on Safari by @mdebbar in [50655](https://github.com/flutter/engine/pull/50655) +* [web] Add dynamic view sizing (v2) by @ditman in [50271](https://github.com/flutter/engine/pull/50271) +* fix: consider array size on canvaskit shader data by @renancaraujo in [49754](https://github.com/flutter/engine/pull/49754) +* Move the accesibility placeholder to the platform dispatcher. by @tugorez in [50608](https://github.com/flutter/engine/pull/50608) +* [Web] Ignore invalid keyboard events related to autofill by @bleroux in [50590](https://github.com/flutter/engine/pull/50590) +* Fix implementation imports outside of lib by @goderbauer in [50727](https://github.com/flutter/engine/pull/50727) +* [web] Remove unused `allowInterop` usage in flutter web code by @mkustermann in [50718](https://github.com/flutter/engine/pull/50718) +* Temporarily disable goldens for Safari. by @eyebrowsoffire in [50724](https://github.com/flutter/engine/pull/50724) +* [Web] Update modifier state when Meta key is seen as Process key by @bleroux in [50779](https://github.com/flutter/engine/pull/50779) +* Make the view focus binding report focus transitions across elements. by @tugorez in [50610](https://github.com/flutter/engine/pull/50610) +* Add scheduleWarmUpFrame by @dkwingsmt in [50570](https://github.com/flutter/engine/pull/50570) +* Add view focus direction detection to flutter web. by @tugorez in [50843](https://github.com/flutter/engine/pull/50843) +* Implement frame timing callbacks in Skwasm. by @eyebrowsoffire in [50737](https://github.com/flutter/engine/pull/50737) +* Pass the missing strut half leading flag over to skia paragraph builder by @LongCatIsLooong in [50385](https://github.com/flutter/engine/pull/50385) +* Reverts "Implement frame timing callbacks in Skwasm. (#50737)" by @auto-submit in [50895](https://github.com/flutter/engine/pull/50895) +* Reland 3: Multiview pipeline by @dkwingsmt in [49950](https://github.com/flutter/engine/pull/49950) +* Correctly offset the cull rect of the opacity layer. by @eyebrowsoffire in [50928](https://github.com/flutter/engine/pull/50928) +* Make sure to call `setHeightOverride` as well on TextStyle and StrutStyle by @eyebrowsoffire in [50920](https://github.com/flutter/engine/pull/50920) +* Reland "Implement Frame Timing callbacks in Skwasm" by @eyebrowsoffire in [50987](https://github.com/flutter/engine/pull/50987) +* [skwasm] Clip pictures if they go beyond the bounds of the window. by @eyebrowsoffire in [50887](https://github.com/flutter/engine/pull/50887) +* Null-assert the value given to a Completer expecting a non-null value by @srawlins in [49053](https://github.com/flutter/engine/pull/49053) +* Revert "[skwasm] Clip pictures if they go beyond the bounds of the window. (#50887)" by @eyebrowsoffire in [51067](https://github.com/flutter/engine/pull/51067) +* Fix a few issues rendering text with Skwasm. by @eyebrowsoffire in [51074](https://github.com/flutter/engine/pull/51074) +* [web] Drop noisy prints from bootstrapping logic by @kevmoo in [51097](https://github.com/flutter/engine/pull/51097) +* Reland "[skwasm] Clip pictures if they go beyond the bounds of the window." by @eyebrowsoffire in [51077](https://github.com/flutter/engine/pull/51077) +* Experimental platform isolates API by @liamappelbe in [48551](https://github.com/flutter/engine/pull/48551) +* Reland "Remove migration flag and unused header files #50216" by @LongCatIsLooong in [50259](https://github.com/flutter/engine/pull/50259) +* Make @keepToString annotation work for web and non-web by @mkustermann in [51251](https://github.com/flutter/engine/pull/51251) +* Prepend the accessibility placeholder by @tugorez in [51050](https://github.com/flutter/engine/pull/51050) +* Optimize overlays in CanvasKit by @harryterkelsen in [47317](https://github.com/flutter/engine/pull/47317) +* Mark the Flutter Views as focusable by setting a tabindex value. by @tugorez in [50876](https://github.com/flutter/engine/pull/50876) +* Move emscripten out of the buildroot into the flutter repo. by @eyebrowsoffire in [51299](https://github.com/flutter/engine/pull/51299) +* Reverts "Move emscripten out of the buildroot into the flutter repo. (#51299)" by @auto-submit in [51330](https://github.com/flutter/engine/pull/51330) +* [gn] Change sdk_rewriter() template to use depfiles by @zanderso in [51314](https://github.com/flutter/engine/pull/51314) +* [web] Split initialization of the _flutter namespace and loader object. by @ditman in [51294](https://github.com/flutter/engine/pull/51294) +* Reland "Move emscripten out of the buildroot into the flutter repo" by @eyebrowsoffire in [51353](https://github.com/flutter/engine/pull/51353) +* [dart:ui] Add view ID to `PointerData.toString` by @loic-sharma in [51352](https://github.com/flutter/engine/pull/51352) +* [web] make addView/removeView functions sync by @p-mazhnik in [51103](https://github.com/flutter/engine/pull/51103) +* Implement PlatformDispatcher.requestViewFocusChange on web. by @tugorez in [50535](https://github.com/flutter/engine/pull/50535) +* [web] make text more crawlable; fix a JAWS bug by @yjbanov in [50794](https://github.com/flutter/engine/pull/50794) +* Remove or replaced unused or duplicate code in `SkiaGoldClient`. by @matanlurey in [51399](https://github.com/flutter/engine/pull/51399) +* [web] - fix text editing IME composition interruption on geometry updates by @htoor3 in [51323](https://github.com/flutter/engine/pull/51323) +* Add missing baseline check in text layout tests by @tgucio in [51444](https://github.com/flutter/engine/pull/51444) +* [canvaskit] Fix backdrop filter with platform views as children by @harryterkelsen in [51442](https://github.com/flutter/engine/pull/51442) +* Pass some missing --disable-dart-dev and --suppress-analytics to dart by @zanderso in [51473](https://github.com/flutter/engine/pull/51473) +* [web] remove Tappable from basic set of a11y roles; add it case by case by @yjbanov in [51466](https://github.com/flutter/engine/pull/51466) +* [web] Avoid using `js_util.{jsify,dartify}()` in dart2wasm for converting to JS wrappers by @mkustermann in [51375](https://github.com/flutter/engine/pull/51375) +* Fix slash in chromium path. by @eyebrowsoffire in [51527](https://github.com/flutter/engine/pull/51527) +* [web] include the hint field in semantics labels by @yjbanov in [51529](https://github.com/flutter/engine/pull/51529) +* [skwasm] Throw when gradient color stops are invalid in debug mode. by @eyebrowsoffire in [51624](https://github.com/flutter/engine/pull/51624) +* [Skwasm] Respect the `debugDisableFallbackFonts` flag. by @eyebrowsoffire in [51626](https://github.com/flutter/engine/pull/51626) +* [skwasm] Use test fonts while in debugEmulateFlutterTesterEnvironment mode by @eyebrowsoffire in [51630](https://github.com/flutter/engine/pull/51630) +* [web] Add ability to customize font fallback download URL by @harryterkelsen in [51569](https://github.com/flutter/engine/pull/51569) +* Change JSBoxedDartObject to JSAny by @srujzs in [51634](https://github.com/flutter/engine/pull/51634) +* Pass the flutter test font by default. by @eyebrowsoffire in [51671](https://github.com/flutter/engine/pull/51671) +* Add local paths for the Dart macros package, which is now a dependency of the analyzer package by @jason-simmons in [51709](https://github.com/flutter/engine/pull/51709) +* [canvaskit] Fix color filter for dst and dstIn by @harryterkelsen in [51693](https://github.com/flutter/engine/pull/51693) +* [Skwasm] Correctly handle paragraphs with empty text. by @eyebrowsoffire in [51695](https://github.com/flutter/engine/pull/51695) +* Prevent `solo: true` from being committed by @mdebbar in [51712](https://github.com/flutter/engine/pull/51712) +* [skwasm] Use text position affinity when calculating word boundaries. by @eyebrowsoffire in [51753](https://github.com/flutter/engine/pull/51753) +### Desktop +* Fix macOS text composing by @LongCatIsLooong in [49314](https://github.com/flutter/engine/pull/49314) +* [Windows] Add README by @loic-sharma in [49779](https://github.com/flutter/engine/pull/49779) +* [Windows] Remove unnecessary statics in keyboard by @loic-sharma in [49834](https://github.com/flutter/engine/pull/49834) +* [Windows] Reduce Visual Studio build errors caused by keyboard unit tests by @loic-sharma in [49814](https://github.com/flutter/engine/pull/49814) +* [Windows] Refactor logic when window resize completes by @loic-sharma in [49872](https://github.com/flutter/engine/pull/49872) +* [Windows] Refactor EGL initialization by @loic-sharma in [49895](https://github.com/flutter/engine/pull/49895) +* [Windows] Fix resize crash by @loic-sharma in [49935](https://github.com/flutter/engine/pull/49935) +* [Windows] Rename and move EGL types by @loic-sharma in [49900](https://github.com/flutter/engine/pull/49900) +* [Windows] Introduce egl::Context by @loic-sharma in [49954](https://github.com/flutter/engine/pull/49954) +* [Windows] Introduce `egl::Surface` and `egl::WindowSurface` by @loic-sharma in [49983](https://github.com/flutter/engine/pull/49983) +* [Windows] Set cursor immediately when framework requests update by @hasali19 in [49784](https://github.com/flutter/engine/pull/49784) +* Refactor macOS trackpad gesture tracking by @moffatman in [49424](https://github.com/flutter/engine/pull/49424) +* Revert "[Windows] Introduce `egl::Surface` and `egl::WindowSurface`" by @loic-sharma in [50104](https://github.com/flutter/engine/pull/50104) +* Reland "[Windows] Introduce egl::Surface and egl::WindowSurface" by @loic-sharma in [50148](https://github.com/flutter/engine/pull/50148) +* Re-add tests deleted by accident by @goderbauer in [50223](https://github.com/flutter/engine/pull/50223) +* Report display sizes in physical pixels on MacOS by @goderbauer in [50221](https://github.com/flutter/engine/pull/50221) +* [Windows] Make the view own its EGL surface by @loic-sharma in [50421](https://github.com/flutter/engine/pull/50421) +* [Windows] Refactor window destroyed app lifecycle event by @loic-sharma in [50565](https://github.com/flutter/engine/pull/50565) +* macOS: add stubs for PlatformView gesture handling by @cbracken in [50630](https://github.com/flutter/engine/pull/50630) +* [Windows] Improve `FlutterWindow` unit tests by @loic-sharma in [50676](https://github.com/flutter/engine/pull/50676) +* [Windows] Make the engine create the view by @loic-sharma in [50673](https://github.com/flutter/engine/pull/50673) +* [Windows] Add ID to views by @loic-sharma in [50788](https://github.com/flutter/engine/pull/50788) +* [Windows] Fix top-level message procedure order by @loic-sharma in [50797](https://github.com/flutter/engine/pull/50797) +* [macOS] Wrap FlutterEngineTest in autoreleasepool by @cbracken in [50832](https://github.com/flutter/engine/pull/50832) +* Build macOS engine as an xcframework by @vashworth in [50300](https://github.com/flutter/engine/pull/50300) +* [Windows] Add helper for headless integration tests by @loic-sharma in [50885](https://github.com/flutter/engine/pull/50885) +* [Windows] Refactor the a11y announcement test by @loic-sharma in [50888](https://github.com/flutter/engine/pull/50888) +* Add Platform View Manager to Windows shell by @yaakovschectman in [50598](https://github.com/flutter/engine/pull/50598) +* [macOS] Use CVDisplayLink to drive repaint by @knopp in [49159](https://github.com/flutter/engine/pull/49159) +* [Windows] Introduce an accessibility plugin by @loic-sharma in [50975](https://github.com/flutter/engine/pull/50975) +* [Windows] Remove TODONE by @loic-sharma in [51005](https://github.com/flutter/engine/pull/51005) +* [Windows] Make the engine own a map of views by @loic-sharma in [51017](https://github.com/flutter/engine/pull/51017) +* [Windows] Reduce log level of unsupported accessibility event message by @loic-sharma in [51024](https://github.com/flutter/engine/pull/51024) +* [Windows] Add view ID runner APIs by @loic-sharma in [51020](https://github.com/flutter/engine/pull/51020) +* Revert "[macOS] Use CVDisplayLink to drive repaint (#49159)" by @knopp in [51095](https://github.com/flutter/engine/pull/51095) +* Reland: [macOS] Use CVDisplayLink to drive repaint by @knopp in [51126](https://github.com/flutter/engine/pull/51126) +* Reverts "Reland: [macOS] Use CVDisplayLink to drive repaint (#51126)" by @auto-submit in [51192](https://github.com/flutter/engine/pull/51192) +* [Windows] Allow plugins to get views by @loic-sharma in [51096](https://github.com/flutter/engine/pull/51096) +* Reland "Reland: [macOS] Use CVDisplayLink to drive repaint" by @knopp in [51210](https://github.com/flutter/engine/pull/51210) +* Multi-view View Metrics by @dkwingsmt in [46174](https://github.com/flutter/engine/pull/46174) +* Fix flakiness in FlutterVSyncWaiterTest.VSyncWorks and FlutterDisplayLinkTest.WorkaroundForFB13482573 by @knopp in [51405](https://github.com/flutter/engine/pull/51405) +* [Windows] Move to new present callback by @loic-sharma in [51293](https://github.com/flutter/engine/pull/51293) +* Regenerate FlutterMacOS.xcframework when sources of dependencies change by @vashworth in [51396](https://github.com/flutter/engine/pull/51396) +* [Windows] Allow view controllers to not own the engine by @loic-sharma in [51570](https://github.com/flutter/engine/pull/51570) +* [macOS] Disable FlutterEngineTest.CanOverrideBackgroundColor by @cbracken in [51669](https://github.com/flutter/engine/pull/51669) +* [macOS] Consolidate FlutterViewController static types/data by @cbracken in [51486](https://github.com/flutter/engine/pull/51486) +### Other Changes +* Enforce consistent stack size for Flutter threads by @knopp in [49111](https://github.com/flutter/engine/pull/49111) +* Fix memory leaks in some embedder unit tests that send key events by @jason-simmons in [49548](https://github.com/flutter/engine/pull/49548) +* When building clang-tidy commands, filter out the sed command that may be appended to each compile command by @jason-simmons in [49605](https://github.com/flutter/engine/pull/49605) +* Roll buildroot to pick up iOS 12 by @jmagman in [49542](https://github.com/flutter/engine/pull/49542) +* Migrate to Flutter mirrors for Google-owned Github repositories by @sealesj in [49203](https://github.com/flutter/engine/pull/49203) +* Skip flaky test on mac in http_disallow_http_connections_test.dart by @zanderso in [49635](https://github.com/flutter/engine/pull/49635) +* Refactors RBE support by @zanderso in [49416](https://github.com/flutter/engine/pull/49416) +* Reverts "Refactors RBE support" by @auto-submit in [49654](https://github.com/flutter/engine/pull/49654) +* Reverts "Migrate to Flutter mirrors for Google-owned Github repositories" by @auto-submit in [49671](https://github.com/flutter/engine/pull/49671) +* Osv-scanner integration by @sealesj in [49470](https://github.com/flutter/engine/pull/49470) +* Google GitHub mirrors - reland by @sealesj in [49716](https://github.com/flutter/engine/pull/49716) +* Revert Dart SDK to 3245b92a5930 by @jason-simmons in [49727](https://github.com/flutter/engine/pull/49727) +* Run tests on macOS 13 only by @vashworth in [49722](https://github.com/flutter/engine/pull/49722) +* [Fuchsia] Use chromium test-scripts to download images and execute tests by @zijiehe-google-com in [49650](https://github.com/flutter/engine/pull/49650) +* Reverts "[Fuchsia] Use chromium test-scripts to download images and execute tests" by @auto-submit in [49772](https://github.com/flutter/engine/pull/49772) +* Remove `gclient_variables` from `linux_license.json` by @keyonghan in [49766](https://github.com/flutter/engine/pull/49766) +* Relands: Refactors RBE support by @zanderso in [49660](https://github.com/flutter/engine/pull/49660) +* Add gclient_variables back for linux_license and fix the excluded files by @keyonghan in [49775](https://github.com/flutter/engine/pull/49775) +* [Linux] Remove the usage of std::function in FlKeyEmbedderResponder by @dkwingsmt in [49293](https://github.com/flutter/engine/pull/49293) +* Fix linux_android_emulator_api_33 build config for rbe by @zanderso in [49776](https://github.com/flutter/engine/pull/49776) +* Remove pthread based thread local support. by @chinmaygarde in [49297](https://github.com/flutter/engine/pull/49297) +* Manually bump Dart to 3.4.0-34.0.dev by @bdero in [49792](https://github.com/flutter/engine/pull/49792) +* Support running sound null safe kernels from dart_runner by @iinozemtsev in [49598](https://github.com/flutter/engine/pull/49598) +* Add `flutter` prefix to import by @jiahaog in [49793](https://github.com/flutter/engine/pull/49793) +* Use the correct impeller-cmake-example mirror by @bdero in [49791](https://github.com/flutter/engine/pull/49791) +* Reverts "Manually bump Dart to 3.4.0-34.0.dev" by @auto-submit in [49802](https://github.com/flutter/engine/pull/49802) +* Revert "Add gclient_variables back for linux_license and fix the excluded files" by @zanderso in [49817](https://github.com/flutter/engine/pull/49817) +* Move mac cache builder to bringup. by @godofredoc in [49843](https://github.com/flutter/engine/pull/49843) +* Reverts "Manual roll Dart SDK from d6c08fa9bb54 to 6ff69d6b7f59 (15 revisions)" by @auto-submit in [49852](https://github.com/flutter/engine/pull/49852) +* Update tests to Xcode 15 and iOS 17 simulator by @vashworth in [49833](https://github.com/flutter/engine/pull/49833) +* Simplify osv-scanner workflow by @sealesj in [49807](https://github.com/flutter/engine/pull/49807) +* Use any mac machine available for orchestrator run. by @godofredoc in [49845](https://github.com/flutter/engine/pull/49845) +* [fuchsia] Wire through the tzdata-icu capability by @filmil in [48907](https://github.com/flutter/engine/pull/48907) +* Re-enable osv-scanner on pushes to main by @sealesj in [49729](https://github.com/flutter/engine/pull/49729) +* [Fuchsia] Redo - Use chromium test-scripts to download images and execute tests by @zijiehe-google-com in [49847](https://github.com/flutter/engine/pull/49847) +* Adding ignore paths to cache test by @ricardoamador in [49874](https://github.com/flutter/engine/pull/49874) +* Reverts "[Fuchsia] Redo - Use chromium test-scripts to download images and execute tests" by @auto-submit in [49908](https://github.com/flutter/engine/pull/49908) +* Add Mac cache_builder back into Prod by @ricardoamador in [49936](https://github.com/flutter/engine/pull/49936) +* Reverts "Add Mac cache_builder back into Prod" by @auto-submit in [49961](https://github.com/flutter/engine/pull/49961) +* Update buildroot for fidl_binding_deps() support in the Fuchsia SDK by @mbrase in [49909](https://github.com/flutter/engine/pull/49909) +* Exclude prebuilts/Library from Mac builder_cache by @zanderso in [49971](https://github.com/flutter/engine/pull/49971) +* Roll buildroot to 5d969bd98e31ec90c23ccb982666ace80559f442 by @zanderso in [49956](https://github.com/flutter/engine/pull/49956) +* Exclude the Dart SDK sdk/lib/svg/dart2js directory from the license crawl by @jason-simmons in [49977](https://github.com/flutter/engine/pull/49977) +* [ui] hold a strong reference to fragment program objects. by @jonahwilliams in [49868](https://github.com/flutter/engine/pull/49868) +* Replace Fuchsia logging macros (FX_LOG*) with FML logging by @mbrase in [49970](https://github.com/flutter/engine/pull/49970) +* Fuchsia + ocmock mirror migration by @sealesj in [50003](https://github.com/flutter/engine/pull/50003) +* Add custom FlValue types and support their en/decoding via FlStandardMessageCodec by @robert-ancell in [49162](https://github.com/flutter/engine/pull/49162) +* Use top-level GN arg for Skottie instead of CanvasKit-specific arg. by @johnstiles-google in [50019](https://github.com/flutter/engine/pull/50019) +* [Fuchsia] Redo - Use chromium test-scripts to download images and execute tests by @zijiehe-google-com in [49940](https://github.com/flutter/engine/pull/49940) +* Roll webp to 1.3.2 by @Hixie in [49883](https://github.com/flutter/engine/pull/49883) +* Fix a typo in ChannelBuffers documentation by @bleroux in [49928](https://github.com/flutter/engine/pull/49928) +* Remove fuchsia from allowed_hosts post-migration by @sealesj in [50013](https://github.com/flutter/engine/pull/50013) +* Introduce a prototype of a "header guard enforcement" tool by @matanlurey in [48903](https://github.com/flutter/engine/pull/48903) +* Roll dart to 3.4.0-79.0.dev by @aam in [50100](https://github.com/flutter/engine/pull/50100) +* Delete `ci/docker`, assuming it is not used. by @matanlurey in [50103](https://github.com/flutter/engine/pull/50103) +* Followups to screenshot patch by @dnfield in [50096](https://github.com/flutter/engine/pull/50096) +* Enable `header_guard_check` (and `--fix`) in `ci/format` by @matanlurey in [50102](https://github.com/flutter/engine/pull/50102) +* Move Mac builder_cache to prod by @keyonghan in [50044](https://github.com/flutter/engine/pull/50044) +* Revert Dart to Version 3.4.0-82.0.dev by @zanderso in [50131](https://github.com/flutter/engine/pull/50131) +* Remove ockmock GitHub reference by @sealesj in [50086](https://github.com/flutter/engine/pull/50086) +* Include dart vm internal sources into flutter distro. by @aam in [50116](https://github.com/flutter/engine/pull/50116) +* Handle construction/destruction of GObject private data containing C++ objects in Linux embedder tests by @jason-simmons in [50022](https://github.com/flutter/engine/pull/50022) +* Fix incorrect FML_VLOG() severity usage by @mbrase in [50118](https://github.com/flutter/engine/pull/50118) +* Use structured logging on Fuchsia by @mbrase in [49918](https://github.com/flutter/engine/pull/49918) +* Roll buildroot to 52689fe8955a9a4916a38f0b8ae5ea3e217037f4 by @mk12 in [50160](https://github.com/flutter/engine/pull/50160) +* Support running sound null safe kernels from flutter_jit_runner by @iinozemtsev in [50002](https://github.com/flutter/engine/pull/50002) +* More correctly name methods regarding event loop that are currently named microtask by @mkustermann in [50138](https://github.com/flutter/engine/pull/50138) +* [Fuchsia] Execute most of the testing/fuchsia/test_suites.yaml on debug and release builds by @zijiehe-google-com in [50058](https://github.com/flutter/engine/pull/50058) +* Multiview: Add view ID to _render and remove render rule skipping by @dkwingsmt in [50220](https://github.com/flutter/engine/pull/50220) +* Ignore CRLF endings when determining the names of header guards. by @matanlurey in [50227](https://github.com/flutter/engine/pull/50227) +* Remove string field from FlKeyEvent by @robert-ancell in [50189](https://github.com/flutter/engine/pull/50189) +* [Impeller] added an assert that goldens are generated by @gaaclarke in [50222](https://github.com/flutter/engine/pull/50222) +* Update expected golden number. by @jonahwilliams in [50249](https://github.com/flutter/engine/pull/50249) +* Fix the output paths of the Web esbuild GN template by @jason-simmons in [50188](https://github.com/flutter/engine/pull/50188) +* Get bounds from RTree in DLBuilder::Build() by @flar in [50253](https://github.com/flutter/engine/pull/50253) +* Refactor the linux_android targets to make use of recent changes to android virtual device params by @ricardoamador in [50099](https://github.com/flutter/engine/pull/50099) +* Remove number of arguments from defining Dart FFI by @dkwingsmt in [50153](https://github.com/flutter/engine/pull/50153) +* Add a link the different possible Android virtual device configs by @ricardoamador in [50267](https://github.com/flutter/engine/pull/50267) +* Move linux_fuchsia to staging by @zanderso in [50288](https://github.com/flutter/engine/pull/50288) +* Revert "[Fuchsia] Execute most of the testing/fuchsia/test_suites.yaml on debug and release builds" by @zanderso in [50291](https://github.com/flutter/engine/pull/50291) +* Reverts "Move linux_fuchsia to staging" by @auto-submit in [50294](https://github.com/flutter/engine/pull/50294) +* Remove the skia_fontmgr_factory argument from the Web GN configuration by @jason-simmons in [50183](https://github.com/flutter/engine/pull/50183) +* [Impeller] Do not reference `this` in the submit callback for Metal GPU Surfaces by @dnfield in [50361](https://github.com/flutter/engine/pull/50361) +* [github actions] add cherry pick workflow for engine repo by @XilaiZhang in [50265](https://github.com/flutter/engine/pull/50265) +* [fuchsia] Bump Fuchsia's API level to 16 by @jrwang in [50358](https://github.com/flutter/engine/pull/50358) +* Capture `FAILURES!!!` when running Android `scenario_app` tests. by @matanlurey in [50255](https://github.com/flutter/engine/pull/50255) +* Run all Android `scenario_app` tests, not just the smoke test. by @matanlurey in [50400](https://github.com/flutter/engine/pull/50400) +* Revert "Revert "[Fuchsia] Execute most of the testing/fuchsia/test_suites.yaml on debug and release builds"" by @zijiehe-google-com in [50295](https://github.com/flutter/engine/pull/50295) +* Reverts "Revert "Revert "[Fuchsia] Execute most of the testing/fuchsia/test_suites.yaml on debug and release builds""" by @auto-submit in [50407](https://github.com/flutter/engine/pull/50407) +* Add use_rbe to gclient variables for Framework Smoke Tests by @keyonghan in [50403](https://github.com/flutter/engine/pull/50403) +* Provide toStrings for Native objects by @Hixie in [50168](https://github.com/flutter/engine/pull/50168) +* Redo "[Fuchsia] Execute most of the testing/fuchsia/test_suites.yaml on debug and release builds" by @zijiehe-google-com in [50408](https://github.com/flutter/engine/pull/50408) +* Fixed CONTRIBUTING.md markdown lints by @gaaclarke in [50439](https://github.com/flutter/engine/pull/50439) +* Reverts "Roll Dart SDK from 452dd17120b7 to 322c81160fa9 (1 revision)" by @auto-submit in [50450](https://github.com/flutter/engine/pull/50450) +* [Fuchsia] Run tests with multiple packages by @zijiehe-google-com in [50219](https://github.com/flutter/engine/pull/50219) +* Clear objects before setting them. by @robert-ancell in [50344](https://github.com/flutter/engine/pull/50344) +* [github actions] update license year by @XilaiZhang in [50458](https://github.com/flutter/engine/pull/50458) +* Fix Core Foundation object leaks. by @0xZOne in [50460](https://github.com/flutter/engine/pull/50460) +* Updated CONTRIBUTING.md to have a testing section by @gaaclarke in [50469](https://github.com/flutter/engine/pull/50469) +* Sever the //flutter/vulkan dependency in Flutter tester. by @chinmaygarde in [50454](https://github.com/flutter/engine/pull/50454) +* Supports building with RBE on a Windows host. by @zanderso in [49877](https://github.com/flutter/engine/pull/49877) +* Make .style.yapf and .pylintrc agree on line length by @zanderso in [50510](https://github.com/flutter/engine/pull/50510) +* [Impeller] Add --enable-impeller-vulkan-playgrounds to ./flutter/tools/gn by @chinmaygarde in [50477](https://github.com/flutter/engine/pull/50477) +* Adds a runner to engine_build_configs by @zanderso in [50342](https://github.com/flutter/engine/pull/50342) +* Update build/rbe CIPD hash by @zanderso in [50524](https://github.com/flutter/engine/pull/50524) +* Remove host_debug_unopt build from linux_host_engine.json by @zanderso in [50555](https://github.com/flutter/engine/pull/50555) +* Update codec defines for Skia by @kjlubick in [50554](https://github.com/flutter/engine/pull/50554) +* Initializes RBE in the build config runner by @zanderso in [50543](https://github.com/flutter/engine/pull/50543) +* [fuchsia] Update Inspect library usage by @miguelfrde in [50467](https://github.com/flutter/engine/pull/50467) +* Remove FlKeyEvent.dispose_origin and use GdkEvent type for origin by @robert-ancell in [50483](https://github.com/flutter/engine/pull/50483) +* Replace usage of an integer for GdkModifierType by @robert-ancell in [50481](https://github.com/flutter/engine/pull/50481) +* Make `dart:ui#Paint` `final` to allow changes/disallow implementing. by @matanlurey in [50557](https://github.com/flutter/engine/pull/50557) +* Add Impeller runtime options to Android `scenario_app` by @matanlurey in [50487](https://github.com/flutter/engine/pull/50487) +* Move libpng to //flutter/third_party/libpng by @zanderso in [50571](https://github.com/flutter/engine/pull/50571) +* Do not use AChoreographer on 32 bit devices by @dnfield in [50586](https://github.com/flutter/engine/pull/50586) +* [Fuchsia] Run tests with test arguments by @zijiehe-google-com in [50478](https://github.com/flutter/engine/pull/50478) +* Allow deprecated members from the Dart SDK to roll in. by @matanlurey in [50575](https://github.com/flutter/engine/pull/50575) +* [engine_build_configs] Use dart:ffi Abi to determine the host cpu by @zanderso in [50604](https://github.com/flutter/engine/pull/50604) +* Run Skia and Impeller OpenGLES on APIv28. by @matanlurey in [50583](https://github.com/flutter/engine/pull/50583) +* [Impeller] replaces golden file count with a golden diff file by @gaaclarke in [50621](https://github.com/flutter/engine/pull/50621) +* In run_tests, use the regular path to the Vulkan library if lib.unstripped does not exist by @jason-simmons in [50629](https://github.com/flutter/engine/pull/50629) +* Starts a command line tool for assisting engine dev workflows by @zanderso in [50642](https://github.com/flutter/engine/pull/50642) +* Refactor, update, and move around `testing/scenario_app/README.md` by @matanlurey in [50659](https://github.com/flutter/engine/pull/50659) +* Run engine_tool tests by @zanderso in [50662](https://github.com/flutter/engine/pull/50662) +* Make all Android `scenario_app` activities full-screen, even on older Android versions. by @matanlurey in [50666](https://github.com/flutter/engine/pull/50666) +* [Fuchsia] Run run_with_dart_aot test on fuchsia_profile_x64 by @zijiehe-google-com in [50613](https://github.com/flutter/engine/pull/50613) +* Add useful default options to `scenario_app/bin/android_integration_tests.dart` by @matanlurey in [50667](https://github.com/flutter/engine/pull/50667) +* Move `boringssl` to `flutter/third_party`. by @matanlurey in [50601](https://github.com/flutter/engine/pull/50601) +* Use modern concurrency constructs. by @matanlurey in [50671](https://github.com/flutter/engine/pull/50671) +* Disable Android API v28 tests on CI. by @matanlurey in [50672](https://github.com/flutter/engine/pull/50672) +* Add a `&right_filter=params` to the Skia Gold links. by @matanlurey in [50675](https://github.com/flutter/engine/pull/50675) +* Add support for dart_src GN variable to flutter_frontend_server build by @whesse in [50685](https://github.com/flutter/engine/pull/50685) +* Pin OSV-Scanner reusable workflow by @sealesj in [50649](https://github.com/flutter/engine/pull/50649) +* Added tool to easily check golden diffs locally. by @gaaclarke in [50654](https://github.com/flutter/engine/pull/50654) +* Shift some Linux builders from Goma to RBE by @zanderso in [50653](https://github.com/flutter/engine/pull/50653) +* Documentation for test timeouts. by @godofredoc in [50687](https://github.com/flutter/engine/pull/50687) +* [Fuchsia] Run arm64 tests on terminal.qemu-arm64 on x64 hosts by @zijiehe-google-com in [50657](https://github.com/flutter/engine/pull/50657) +* Update README.md by @matanlurey in [50702](https://github.com/flutter/engine/pull/50702) +* [et] Adds a logger by @zanderso in [50693](https://github.com/flutter/engine/pull/50693) +* Add the web package to the set of Dart third_party packages in DEPS by @jason-simmons in [50714](https://github.com/flutter/engine/pull/50714) +* Use the Pixel 7/API 33 device in the Firebase test lab script by @jason-simmons in [50721](https://github.com/flutter/engine/pull/50721) +* Pulled out dir contents golden tool by @gaaclarke in [50703](https://github.com/flutter/engine/pull/50703) +* Restore use of the API 34 device in the Firebase Test Lab script and handle FTL infrastructure errors in the script by @jason-simmons in [50735](https://github.com/flutter/engine/pull/50735) +* Connect signals in swapped form. by @robert-ancell in [50705](https://github.com/flutter/engine/pull/50705) +* Write `adb logcat` results and screenshots to `FLUTTER_LOGS_DIR` if able. by @matanlurey in [50722](https://github.com/flutter/engine/pull/50722) +* [Fuchsia] Create dedicated testers to run tests and deprecate femu_test by @zijiehe-google-com in [50697](https://github.com/flutter/engine/pull/50697) +* [et] Adds a .bat entrypoint for Windows by @zanderso in [50784](https://github.com/flutter/engine/pull/50784) +* Move the `scenario_app` running Impeller+OpenGLES to `bringup: triue` by @matanlurey in [50789](https://github.com/flutter/engine/pull/50789) +* [Impeller] more nullchecks in image decoder. by @jonahwilliams in [50787](https://github.com/flutter/engine/pull/50787) +* Disable framework smoke tests. by @jonahwilliams in [50800](https://github.com/flutter/engine/pull/50800) +* [Flutter GPU] Fix symbol export for windows. by @bdero in [50755](https://github.com/flutter/engine/pull/50755) +* [et] Adds a format command by @zanderso in [50747](https://github.com/flutter/engine/pull/50747) +* Make global builds uniquely named per platform by @zanderso in [50764](https://github.com/flutter/engine/pull/50764) +* Add pub.dev to the hosted package URIs checked by the pub_get_offline script by @jason-simmons in [50811](https://github.com/flutter/engine/pull/50811) +* Update impeller-cmake-example by @bdero in [50808](https://github.com/flutter/engine/pull/50808) +* Fix the local-only lint errors due to an unexpected `GeneratedPluginRegistrant.java` by @matanlurey in [50795](https://github.com/flutter/engine/pull/50795) +* Migrate the Fuchsia embedder to the Dart_RecordTimelineEvent API by @jason-simmons in [50823](https://github.com/flutter/engine/pull/50823) +* Fail engine post-submit on skia-gold comparions. by @matanlurey in [50826](https://github.com/flutter/engine/pull/50826) +* Make the GL context current in EmbedderSurfaceGLImpeller before creating the GPU surface by @jason-simmons in [50807](https://github.com/flutter/engine/pull/50807) +* Ignore EOF newline characters and added tests to `dir_contents_diff` tool by @matanlurey in [50805](https://github.com/flutter/engine/pull/50805) +* Add the `scenario_app` `'solid_blue'` golden to the Android test suite by @matanlurey in [50801](https://github.com/flutter/engine/pull/50801) +* Add a throw statement for imgtestAdd non 0 exit codes. by @matanlurey in [50829](https://github.com/flutter/engine/pull/50829) +* Starts a .ci.yaml parser by @zanderso in [50783](https://github.com/flutter/engine/pull/50783) +* Update the vulkan_glfw sample for the latest roll of vulkan-deps by @jason-simmons in [50839](https://github.com/flutter/engine/pull/50839) +* Clean up contributing formatting, add a Skia gold callout by @matanlurey in [50828](https://github.com/flutter/engine/pull/50828) +* Remove/reduce unused or private methods and add tests to `SkiaGoldClient` by @matanlurey in [50844](https://github.com/flutter/engine/pull/50844) +* Add a similar `runIf` guard to `web_engine` as web framework. by @matanlurey in [50846](https://github.com/flutter/engine/pull/50846) +* Minor non-semantic refactors of `ExternalTexturesFlutterActivity` by @matanlurey in [50845](https://github.com/flutter/engine/pull/50845) +* Change "Linux mac_unopt" to "Mac mac_unopt" by @zanderso in [50863](https://github.com/flutter/engine/pull/50863) +* Use RBE on more Windows builders by @zanderso in [50866](https://github.com/flutter/engine/pull/50866) +* Remove 'bringup: true' from 'Mac mac_unopt' by @zanderso in [50865](https://github.com/flutter/engine/pull/50865) +* Delete and create iOS simulator before running Scenario app test by @vashworth in [50835](https://github.com/flutter/engine/pull/50835) +* Avoid generated plugin registrant warnings for scenario_app by @dnfield in [50874](https://github.com/flutter/engine/pull/50874) +* Remove unused property from `Linux Web Framework tests` by @keyonghan in [50891](https://github.com/flutter/engine/pull/50891) +* Remove unused drone_dimension field by @keyonghan in [50893](https://github.com/flutter/engine/pull/50893) +* Remove obsolete `cache_root` property by @keyonghan in [50894](https://github.com/flutter/engine/pull/50894) +* Provide a subset of `adb logcat` logs streaming during scenario_app testing by @matanlurey in [50886](https://github.com/flutter/engine/pull/50886) +* Move ban-plugin-java script into separate file and improve testing. by @matanlurey in [50875](https://github.com/flutter/engine/pull/50875) +* Replace SkColorSpace::filterColor with filterColor4f by @brianosman in [50821](https://github.com/flutter/engine/pull/50821) +* Add an initial 'build' command to engine_tool by @johnmccutchan in [50681](https://github.com/flutter/engine/pull/50681) +* Reverts "Reland 3: Multiview pipeline (#49950)" by @auto-submit in [50929](https://github.com/flutter/engine/pull/50929) +* Refactor Android `scenario_app` to remove shell entrypoint, simplify. by @matanlurey in [50922](https://github.com/flutter/engine/pull/50922) +* Avoiding using separate FlutterLoaders in scenario_app by @dnfield in [50927](https://github.com/flutter/engine/pull/50927) +* Actually list all sources for scenario_app target. by @matanlurey in [50933](https://github.com/flutter/engine/pull/50933) +* Reland 4: Multiview pipeline by @dkwingsmt in [50931](https://github.com/flutter/engine/pull/50931) +* Further shard Android emulator tests by @zanderso in [50954](https://github.com/flutter/engine/pull/50954) +* Move linux_android_emulator_skia builder to prod by @zanderso in [50956](https://github.com/flutter/engine/pull/50956) +* [et] Improve the logger for the ninja build, adds a spinner by @zanderso in [50952](https://github.com/flutter/engine/pull/50952) +* Better filtering for Android `scenario_app` runner. by @matanlurey in [50937](https://github.com/flutter/engine/pull/50937) +* [scenario] trigger firstFrameLatch on exception. by @jonahwilliams in [50981](https://github.com/flutter/engine/pull/50981) +* Refactor args parsing/environment constructor for `scenario_app` by @matanlurey in [50980](https://github.com/flutter/engine/pull/50980) +* Revert "Reland 4: Multiview pipeline (#50931)" by @dkwingsmt in [50985](https://github.com/flutter/engine/pull/50985) +* Migrate Android `scenario_app` to the `SurfaceProducer` API by @matanlurey in [50993](https://github.com/flutter/engine/pull/50993) +* Reverts "Migrate Android `scenario_app` to the `SurfaceProducer` API (#50993)" by @auto-submit in [50995](https://github.com/flutter/engine/pull/50995) +* Roll buildroot to 21b1b9f2645fada701885108e86aefbcb3b1cca0 by @jason-simmons in [50991](https://github.com/flutter/engine/pull/50991) +* Fix usage of `--out-dir` with a relative path. by @matanlurey in [50992](https://github.com/flutter/engine/pull/50992) +* Respect SIGINT (Ctrl-C) for Android scenario_app. by @matanlurey in [50989](https://github.com/flutter/engine/pull/50989) +* Actually use Impeller in scenario_app tests by @dnfield in [50977](https://github.com/flutter/engine/pull/50977) +* Move protobuf to //flutter/third_party by @zanderso in [50997](https://github.com/flutter/engine/pull/50997) +* [Fuchsia] Use shared gn-sdk from chromium by @zijiehe-google-com in [50855](https://github.com/flutter/engine/pull/50855) +* GLES for scenario_app tests using Impeller by @dnfield in [51000](https://github.com/flutter/engine/pull/51000) +* Adjust Android emulator test timeouts by @zanderso in [51004](https://github.com/flutter/engine/pull/51004) +* Fail lazily when 1+ Skia gold comparions fail. by @matanlurey in [51010](https://github.com/flutter/engine/pull/51010) +* Code consistency fixes in FlScrollingManager by @robert-ancell in [50959](https://github.com/flutter/engine/pull/50959) +* Improve, test, and fix a bug related to `adb logcat` filtering. by @matanlurey in [51012](https://github.com/flutter/engine/pull/51012) +* Remove rewrapper prefix from compiler commands for clang-tidy by @zanderso in [51001](https://github.com/flutter/engine/pull/51001) +* Rename some classes in the engine_build_configs package by @johnmccutchan in [51016](https://github.com/flutter/engine/pull/51016) +* Process FlutterMacOS.framework before creating xcframework by @vashworth in [51023](https://github.com/flutter/engine/pull/51023) +* When run_tests.py is in --quiet mode, write verbose logs to a file by @zanderso in [51029](https://github.com/flutter/engine/pull/51029) +* Roll buildroot to 7b537de78ac2239982ace130d1845374e5dcf113 by @cbracken in [51053](https://github.com/flutter/engine/pull/51053) +* Revert to goma on mac_clang_tidy builder by @zanderso in [51060](https://github.com/flutter/engine/pull/51060) +* Make Skia object ostream operators work with unit tests by @flar in [51041](https://github.com/flutter/engine/pull/51041) +* Roll abseil-cpp to 1db3bdd4eb208bef55c77f22aa94991e52225230 by @cbracken in [51062](https://github.com/flutter/engine/pull/51062) +* Update Linux embedder to latest semantics API by @robert-ancell in [51030](https://github.com/flutter/engine/pull/51030) +* The `adb logcat` filtering will continue until morale improves. by @matanlurey in [51069](https://github.com/flutter/engine/pull/51069) +* Use RBE for mac_clang_tidy by @zanderso in [51083](https://github.com/flutter/engine/pull/51083) +* Refactor GL rendering to prepare for GTK4 by @robert-ancell in [50754](https://github.com/flutter/engine/pull/50754) +* Add et run command by @johnmccutchan in [51037](https://github.com/flutter/engine/pull/51037) +* Add a basic e2e-test for `skia_gold_client`. by @matanlurey in [51078](https://github.com/flutter/engine/pull/51078) +* Run apple SDK finders as gclient hooks by @zanderso in [50957](https://github.com/flutter/engine/pull/50957) +* Fold the GN dart_pkg template into its only use by @zanderso in [51151](https://github.com/flutter/engine/pull/51151) +* Fix custom FlValue API not being exported by @robert-ancell in [51154](https://github.com/flutter/engine/pull/51154) +* Use Instrumentation.waitForIdleSync() after rotation requests. by @matanlurey in [51169](https://github.com/flutter/engine/pull/51169) +* Scenario App: Adds a `run_{count}.{backend}.` file prefix to every run (on CI) by @matanlurey in [51102](https://github.com/flutter/engine/pull/51102) +* [fuchsia] Prepare for @transitional removal by @ianloic in [51185](https://github.com/flutter/engine/pull/51185) +* [fuchsia] Remove now unnecessary diagnostics directory by @miguelfrde in [51180](https://github.com/flutter/engine/pull/51180) +* Shift git version fetching to tools/gn by @zanderso in [51175](https://github.com/flutter/engine/pull/51175) +* Adds githooks that reminds to run `gclient sync -D` by @zanderso in [51156](https://github.com/flutter/engine/pull/51156) +* Add device selection to `et run` by @johnmccutchan in [51184](https://github.com/flutter/engine/pull/51184) +* Fix typo in githook message by @zanderso in [51205](https://github.com/flutter/engine/pull/51205) +* Skip configuration dependency if unit tests are disabled by @gspencergoog in [51179](https://github.com/flutter/engine/pull/51179) +* Fix git hooks on Windows by @loic-sharma in [51203](https://github.com/flutter/engine/pull/51203) +* [g3 roll] Revert "Remove unused drone_dimension field" by @XilaiZhang in [51214](https://github.com/flutter/engine/pull/51214) +* Revamp the `scenario_app/../README.md` to encourage self-sustenance by @matanlurey in [51196](https://github.com/flutter/engine/pull/51196) +* [et] Allow users to update dependencies by @loic-sharma in [51177](https://github.com/flutter/engine/pull/51177) +* Re-stamp skia_gold_client e2e tests. by @matanlurey in [51220](https://github.com/flutter/engine/pull/51220) +* Disable flaky linux desktop test by @zanderso in [51231](https://github.com/flutter/engine/pull/51231) +* add new builder benchmark with a global saveLayer by @flar in [51236](https://github.com/flutter/engine/pull/51236) +* Skip impeller goldens on release branches by @Jasguerrero in [51237](https://github.com/flutter/engine/pull/51237) +* Reland 5: Multiview pipeline by @dkwingsmt in [51186](https://github.com/flutter/engine/pull/51186) +* Skip impeller goldens on release by @Jasguerrero in [51240](https://github.com/flutter/engine/pull/51240) +* Migrate build_overrides from buildroot to engine by @cbracken in [51258](https://github.com/flutter/engine/pull/51258) +* [gn] Disable running some python scripts from GN by @zanderso in [51248](https://github.com/flutter/engine/pull/51248) +* Roll buildroot to ef514ca5144ba0a4ce5e7075c325d24cd6da73a4 by @cbracken in [51265](https://github.com/flutter/engine/pull/51265) +* Add fuchsia_gn_sdk GN variable pointing to //flutter/tools/fuchsia/gn-sdk by @mkustermann in [51287](https://github.com/flutter/engine/pull/51287) +* Update CI scripts to use either src/flutter/third_party/dart or src/third_party/dart by @jason-simmons in [51276](https://github.com/flutter/engine/pull/51276) +* [Fuchsia] Providing FUCHSIA_SDK_PATH env var for fuchsia lsc by @zijiehe-google-com in [51234](https://github.com/flutter/engine/pull/51234) +* Revert test if changes to golden tests by @zanderso in [51291](https://github.com/flutter/engine/pull/51291) +* Update the instructions for updating licenses. by @chinmaygarde in [51297](https://github.com/flutter/engine/pull/51297) +* Don't rely on dart binary on PATH in run_test.py by @zanderso in [51302](https://github.com/flutter/engine/pull/51302) +* Roll buildroot to e9df434539745202fa5f9b729fe5f82e5de3f025 by @zanderso in [51306](https://github.com/flutter/engine/pull/51306) +* Remove flaky check from observatory/tracing_test.dart by @zanderso in [51320](https://github.com/flutter/engine/pull/51320) +* Conditionally run `golden_tests_harvester` for `run_impeller_golden_tests`. by @matanlurey in [51325](https://github.com/flutter/engine/pull/51325) +* Make scenario app have translucent splash screen so it doesn't affect screenshot colors by @gmackall in [51329](https://github.com/flutter/engine/pull/51329) +* [codesign] fix typo in binary path by @XilaiZhang in [51339](https://github.com/flutter/engine/pull/51339) +* Try making android scenario app not do animations by @gmackall in [51349](https://github.com/flutter/engine/pull/51349) +* Migrate perfetto to flutter/third_party by @cbracken in [51272](https://github.com/flutter/engine/pull/51272) +* Fix null filter NOP case in DlLocalMatrixImageFilter by @flar in [51340](https://github.com/flutter/engine/pull/51340) +* Fix some races in the platform isolate tests by @jason-simmons in [51358](https://github.com/flutter/engine/pull/51358) +* Remove early Flutter GPU prototype from ui/experiments. by @bdero in [51367](https://github.com/flutter/engine/pull/51367) +* Copy the flutter_gpu package into the engine artifacts. by @bdero in [51365](https://github.com/flutter/engine/pull/51365) +* Refactor `golden_tests_harvester`, throw when not `--dry-run`, add tests. by @matanlurey in [51364](https://github.com/flutter/engine/pull/51364) +* Add et lint command by @johnmccutchan in [51238](https://github.com/flutter/engine/pull/51238) +* Add a comparative benchmark for SkM44 vs SkMatrix vs impeller::Matrix by @flar in [51332](https://github.com/flutter/engine/pull/51332) +* [scenario app] make image matching fuzzier. by @jonahwilliams in [51376](https://github.com/flutter/engine/pull/51376) +* [Fuchsia] Enable sound null safety everywhere by @zijiehe-google-com in [51355](https://github.com/flutter/engine/pull/51355) +* Small improvements to et lint command by @johnmccutchan in [51372](https://github.com/flutter/engine/pull/51372) +* [Embedder API] Add multi-view present callback by @loic-sharma in [51267](https://github.com/flutter/engine/pull/51267) +* Avoid unnecessary transform resets for pixel snapping by @flar in [51337](https://github.com/flutter/engine/pull/51337) +* Remove always-true skia_enable_flutter_defines by @kjlubick in [51423](https://github.com/flutter/engine/pull/51423) +* [et] build and run commands disable RBE with a flag or when not available by @zanderso in [51404](https://github.com/flutter/engine/pull/51404) +* Reduce code-duplication a bit and add more error context across `SkiaGoldClient`. by @matanlurey in [51426](https://github.com/flutter/engine/pull/51426) +* Add DisplayList Region and Transform benchmarks to CI by @flar in [51429](https://github.com/flutter/engine/pull/51429) +* Reverts "Add DisplayList Region and Transform benchmarks to CI (#51429)" by @auto-submit in [51432](https://github.com/flutter/engine/pull/51432) +* Add some header-goodies for et. by @matanlurey in [51434](https://github.com/flutter/engine/pull/51434) +* [Fuchsia] Remove the use of //build/ in fuchsia by @zijiehe-google-com in [51072](https://github.com/flutter/engine/pull/51072) +* Remove the Android-drawn surface rendering from scenario_app. by @matanlurey in [51433](https://github.com/flutter/engine/pull/51433) +* Add `android_debug_unopt_arm64` to `local_engine.json`. by @matanlurey in [51427](https://github.com/flutter/engine/pull/51427) +* Add a pixel test to cover multiple clips with a BDF by @dnfield in [51431](https://github.com/flutter/engine/pull/51431) +* Add more explicit logging (just to `stderr`) if a try-job detects an untriaged image by @matanlurey in [51454](https://github.com/flutter/engine/pull/51454) +* Log messages when an image successfully uploads to Skia Gold by @matanlurey in [51455](https://github.com/flutter/engine/pull/51455) +* Reland "Add DisplayList Region and Transform benchmarks to CI" by @flar in [51458](https://github.com/flutter/engine/pull/51458) +* Silence gn warning about unused Skia flag by @flar in [51464](https://github.com/flutter/engine/pull/51464) +* [Fuchsia] only download fuchsia deps when necessary by @zijiehe-google-com in [51439](https://github.com/flutter/engine/pull/51439) +* [Embedder API] Remove view by @loic-sharma in [51400](https://github.com/flutter/engine/pull/51400) +* Write recent logcat output to the LUCI log directory if an Android unit test fails by @jason-simmons in [51462](https://github.com/flutter/engine/pull/51462) +* Reverts "[Fuchsia] only download fuchsia deps when necessary (#51439)" by @auto-submit in [51500](https://github.com/flutter/engine/pull/51500) +* Update fuchsia_libs.gni by @Breakthrough in [51447](https://github.com/flutter/engine/pull/51447) +* [Fuchsia] Remove the legacy tools/fuchsia/target_api_level file by @zijiehe-google-com in [51497](https://github.com/flutter/engine/pull/51497) +* Add the platform isolate API to the files included in the sky_engine package by @jason-simmons in [51538](https://github.com/flutter/engine/pull/51538) +* [golden_test_harvester]: Put back sending the dimensions to the SkiaGoldClient by @gaaclarke in [51536](https://github.com/flutter/engine/pull/51536) +* Add a breadcrumb from FlutterView to PlatformDispatcher. by @Hixie in [51504](https://github.com/flutter/engine/pull/51504) +* [Embedder API] Fix test helper's present callback registration by @loic-sharma in [51560](https://github.com/flutter/engine/pull/51560) +* [Fuchsia] Assert renders are only to the implicit view by @loic-sharma in [51559](https://github.com/flutter/engine/pull/51559) +* Make the et feature request link properly add the github label by @gmackall in [51594](https://github.com/flutter/engine/pull/51594) +* Post Dart message handling tasks directly to the platform task runner for isolates running on the platform thread by @jason-simmons in [51573](https://github.com/flutter/engine/pull/51573) +* Update one more use of deprecated GrDirectContext::MakeMetal by @kjlubick in [51619](https://github.com/flutter/engine/pull/51619) +* [Embedder API] Add helper to create viewport metrics by @loic-sharma in [51562](https://github.com/flutter/engine/pull/51562) +* Add fl_standard_method_codec_new_with_message_codec() by @robert-ancell in [51599](https://github.com/flutter/engine/pull/51599) +* font_subset tests: name correct variant in exception by @selfisekai in [51492](https://github.com/flutter/engine/pull/51492) +* Roll buildroot to 2a16784938d3be059014d4112f00ac70a386fa0c by @zanderso in [51674](https://github.com/flutter/engine/pull/51674) +* Use RBE for Fuchsia CI builds by @zanderso in [51675](https://github.com/flutter/engine/pull/51675) +* Roll buildroot to ba3ca696f4f95e998707523be755c15440c6bf3f by @zanderso in [51678](https://github.com/flutter/engine/pull/51678) +* Stop rolling zlib with Dart SDK rolls. by @rmacnak-google in [51667](https://github.com/flutter/engine/pull/51667) +* Turn off internal retries for Android scenario app tests by @zanderso in [51689](https://github.com/flutter/engine/pull/51689) +* Fail pre-submit if a negative image is encountered as part of `goldctl imgtest add`. by @matanlurey in [51685](https://github.com/flutter/engine/pull/51685) +* [Impeller] add missing null check. by @jonahwilliams in [51711](https://github.com/flutter/engine/pull/51711) +* Reverts "Fail pre-submit if a negative image is encountered as part of `goldctl imgtest add`. (#51685)" by @auto-submit in [51718](https://github.com/flutter/engine/pull/51718) +* Fix skunicode BUILD.gn rules by @kjlubick in [51708](https://github.com/flutter/engine/pull/51708) +* Remove Impeller/OpenGLES from CI branch for Android e2e tests. by @matanlurey in [51734](https://github.com/flutter/engine/pull/51734) +* [flutter_releases] Flutter beta 3.22.0-0.0.pre Engine Cherrypicks by @itsjustkevin in [51851](https://github.com/flutter/engine/pull/51851) + +## New Contributors +* @zijiehe-google-com made their first contribution in [49650](https://github.com/flutter/engine/pull/49650) +* @iinozemtsev made their first contribution in [49598](https://github.com/flutter/engine/pull/49598) +* @hasali19 made their first contribution in [49784](https://github.com/flutter/engine/pull/49784) +* @Markzipan made their first contribution in [47783](https://github.com/flutter/engine/pull/47783) +* @nikkivirtuoso made their first contribution in [49865](https://github.com/flutter/engine/pull/49865) +* @eitanliu made their first contribution in [49659](https://github.com/flutter/engine/pull/49659) +* @bartcone made their first contribution in [49980](https://github.com/flutter/engine/pull/49980) +* @Satsrag made their first contribution in [45522](https://github.com/flutter/engine/pull/45522) +* @renancaraujo made their first contribution in [49754](https://github.com/flutter/engine/pull/49754) +* @kevmoo made their first contribution in [51097](https://github.com/flutter/engine/pull/51097) +* @p-mazhnik made their first contribution in [51103](https://github.com/flutter/engine/pull/51103) +* @Breakthrough made their first contribution in [51447](https://github.com/flutter/engine/pull/51447) + +**Full Changelog**: https://github.com/flutter/engine/compare/3.19.0...3.22.0-0.1.pre From ec441c7e8405e6b1f16d62db6c183005b435c467 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Sun, 12 May 2024 18:33:08 -0700 Subject: [PATCH 078/109] Adaptive and responsive docs (#10305) Updating the adaptive/responsive docs to make them more complete and more cohesive. Addresses: https://github.com/flutter/website/issues/10304 cc: @mariamhas --------- Signed-off-by: dependabot[bot] Co-authored-by: Parker Lougheed Co-authored-by: eckertl <50594304+eckertl@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: jaredleishman <19354410+jaredleishman@users.noreply.github.com> Co-authored-by: Brett Morgan Co-authored-by: Anthony Sansone Co-authored-by: davidforest123 <107166009+davidforest123@users.noreply.github.com> Co-authored-by: Ashita Prasad Co-authored-by: Dominik Roszkowski Co-authored-by: jarrodcolburn Co-authored-by: Jarrod Colburn --- examples/codelabs | 2 +- .../{layout => }/adaptive_app_demos/README.md | 0 .../adaptive_app_demos/analysis_options.yaml | 0 .../adaptive_app_demos/lib/app_model.dart | 0 .../lib/global/device_size.dart | 0 .../lib/global/device_type.dart | 0 .../lib/global/targeted_actions.dart | 0 .../adaptive_app_demos/lib/main.dart | 0 .../lib/main_app_scaffold.dart | 0 .../lib/pages/adaptive_data_table_page.dart | 0 .../lib/pages/adaptive_grid_page.dart | 0 .../lib/pages/adaptive_reflow_page.dart | 0 .../lib/pages/focus_examples_page.dart | 0 .../lib/pages/login_page.dart | 0 .../lib/widgets/app_title_bar.dart | 0 .../lib/widgets/buttons.dart | 0 .../lib/widgets/extra_widget_excerpts.dart | 0 .../lib/widgets/ok_cancel_dialog.dart | 0 .../widgets/scroll_view_with_scrollbars.dart | 0 .../adaptive_app_demos/pubspec.yaml | 2 +- firebase.json | 13 +- site-shared | 2 +- src/_data/sidenav.yml | 30 +- .../docs/ui/adaptive-responsive/abstract.png | Bin 0 -> 50826 bytes .../adaptive_scaffold.gif | Bin .../adaptive_scaffold2.gif | Bin .../docs/ui/adaptive-responsive/branch.png | Bin 0 -> 45143 bytes .../adaptive-responsive}/embed_image1.png | Bin .../adaptive-responsive}/embed_image2.png | Bin .../large-screen-guidelines.png | Bin 0 -> 43253 bytes .../ui/adaptive-responsive/large-screen.png | Bin 0 -> 369236 bytes .../docs/ui/adaptive-responsive/measure.png | Bin 0 -> 62901 bytes .../docs/ui/adaptive-responsive/platforms.png | Bin 0 -> 60734 bytes .../adaptive-responsive}/titlebar.png | Bin .../get-started/flutter-for/swiftui-devs.md | 2 +- src/content/platform-integration/web/faq.md | 14 +- src/content/platform-integration/web/index.md | 2 +- src/content/release/archive-whats-new.md | 7 +- .../ui/adaptive-responsive/best-practices.md | 240 ++++++++++ src/content/ui/adaptive-responsive/general.md | 163 +++++++ src/content/ui/adaptive-responsive/idioms.md | 398 +++++++++++++++++ src/content/ui/adaptive-responsive/index.md | 66 +++ src/content/ui/adaptive-responsive/input.md | 422 ++++++++++++++++++ .../ui/adaptive-responsive/large-screens.md | 254 +++++++++++ .../ui/adaptive-responsive/more-info.md | 54 +++ .../safearea-mediaquery.md | 106 +++++ .../layout/responsive/adaptive-responsive.md | 174 -------- .../responsive/building-adaptive-apps.md | 2 +- src/content/ui/layout/responsive/index.md | 9 - 49 files changed, 1744 insertions(+), 218 deletions(-) rename examples/ui/{layout => }/adaptive_app_demos/README.md (100%) rename examples/ui/{layout => }/adaptive_app_demos/analysis_options.yaml (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/app_model.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/global/device_size.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/global/device_type.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/global/targeted_actions.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/main.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/main_app_scaffold.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/pages/adaptive_data_table_page.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/pages/adaptive_grid_page.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/pages/adaptive_reflow_page.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/pages/focus_examples_page.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/pages/login_page.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/widgets/app_title_bar.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/widgets/buttons.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/widgets/extra_widget_excerpts.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/widgets/ok_cancel_dialog.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/lib/widgets/scroll_view_with_scrollbars.dart (100%) rename examples/ui/{layout => }/adaptive_app_demos/pubspec.yaml (92%) create mode 100644 src/content/assets/images/docs/ui/adaptive-responsive/abstract.png rename src/content/assets/images/docs/{development/ui/layout => ui/adaptive-responsive}/adaptive_scaffold.gif (100%) rename src/content/assets/images/docs/{development/ui/layout => ui/adaptive-responsive}/adaptive_scaffold2.gif (100%) create mode 100644 src/content/assets/images/docs/ui/adaptive-responsive/branch.png rename src/content/assets/images/docs/{development/ui/layout => ui/adaptive-responsive}/embed_image1.png (100%) rename src/content/assets/images/docs/{development/ui/layout => ui/adaptive-responsive}/embed_image2.png (100%) create mode 100644 src/content/assets/images/docs/ui/adaptive-responsive/large-screen-guidelines.png create mode 100644 src/content/assets/images/docs/ui/adaptive-responsive/large-screen.png create mode 100644 src/content/assets/images/docs/ui/adaptive-responsive/measure.png create mode 100644 src/content/assets/images/docs/ui/adaptive-responsive/platforms.png rename src/content/assets/images/docs/{development/ui/layout => ui/adaptive-responsive}/titlebar.png (100%) create mode 100644 src/content/ui/adaptive-responsive/best-practices.md create mode 100644 src/content/ui/adaptive-responsive/general.md create mode 100644 src/content/ui/adaptive-responsive/idioms.md create mode 100644 src/content/ui/adaptive-responsive/index.md create mode 100644 src/content/ui/adaptive-responsive/input.md create mode 100644 src/content/ui/adaptive-responsive/large-screens.md create mode 100644 src/content/ui/adaptive-responsive/more-info.md create mode 100644 src/content/ui/adaptive-responsive/safearea-mediaquery.md delete mode 100644 src/content/ui/layout/responsive/adaptive-responsive.md delete mode 100644 src/content/ui/layout/responsive/index.md diff --git a/examples/codelabs b/examples/codelabs index 40e061249c..155bcda24c 160000 --- a/examples/codelabs +++ b/examples/codelabs @@ -1 +1 @@ -Subproject commit 40e061249cd843be0e676d2438820887e1db4458 +Subproject commit 155bcda24cb0c6c9e37340bca780feb503890bbb diff --git a/examples/ui/layout/adaptive_app_demos/README.md b/examples/ui/adaptive_app_demos/README.md similarity index 100% rename from examples/ui/layout/adaptive_app_demos/README.md rename to examples/ui/adaptive_app_demos/README.md diff --git a/examples/ui/layout/adaptive_app_demos/analysis_options.yaml b/examples/ui/adaptive_app_demos/analysis_options.yaml similarity index 100% rename from examples/ui/layout/adaptive_app_demos/analysis_options.yaml rename to examples/ui/adaptive_app_demos/analysis_options.yaml diff --git a/examples/ui/layout/adaptive_app_demos/lib/app_model.dart b/examples/ui/adaptive_app_demos/lib/app_model.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/app_model.dart rename to examples/ui/adaptive_app_demos/lib/app_model.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/global/device_size.dart b/examples/ui/adaptive_app_demos/lib/global/device_size.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/global/device_size.dart rename to examples/ui/adaptive_app_demos/lib/global/device_size.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/global/device_type.dart b/examples/ui/adaptive_app_demos/lib/global/device_type.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/global/device_type.dart rename to examples/ui/adaptive_app_demos/lib/global/device_type.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/global/targeted_actions.dart b/examples/ui/adaptive_app_demos/lib/global/targeted_actions.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/global/targeted_actions.dart rename to examples/ui/adaptive_app_demos/lib/global/targeted_actions.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/main.dart b/examples/ui/adaptive_app_demos/lib/main.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/main.dart rename to examples/ui/adaptive_app_demos/lib/main.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/main_app_scaffold.dart b/examples/ui/adaptive_app_demos/lib/main_app_scaffold.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/main_app_scaffold.dart rename to examples/ui/adaptive_app_demos/lib/main_app_scaffold.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_data_table_page.dart b/examples/ui/adaptive_app_demos/lib/pages/adaptive_data_table_page.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_data_table_page.dart rename to examples/ui/adaptive_app_demos/lib/pages/adaptive_data_table_page.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_grid_page.dart b/examples/ui/adaptive_app_demos/lib/pages/adaptive_grid_page.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_grid_page.dart rename to examples/ui/adaptive_app_demos/lib/pages/adaptive_grid_page.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_reflow_page.dart b/examples/ui/adaptive_app_demos/lib/pages/adaptive_reflow_page.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/pages/adaptive_reflow_page.dart rename to examples/ui/adaptive_app_demos/lib/pages/adaptive_reflow_page.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/pages/focus_examples_page.dart b/examples/ui/adaptive_app_demos/lib/pages/focus_examples_page.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/pages/focus_examples_page.dart rename to examples/ui/adaptive_app_demos/lib/pages/focus_examples_page.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/pages/login_page.dart b/examples/ui/adaptive_app_demos/lib/pages/login_page.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/pages/login_page.dart rename to examples/ui/adaptive_app_demos/lib/pages/login_page.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/widgets/app_title_bar.dart b/examples/ui/adaptive_app_demos/lib/widgets/app_title_bar.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/widgets/app_title_bar.dart rename to examples/ui/adaptive_app_demos/lib/widgets/app_title_bar.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/widgets/buttons.dart b/examples/ui/adaptive_app_demos/lib/widgets/buttons.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/widgets/buttons.dart rename to examples/ui/adaptive_app_demos/lib/widgets/buttons.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/widgets/extra_widget_excerpts.dart b/examples/ui/adaptive_app_demos/lib/widgets/extra_widget_excerpts.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/widgets/extra_widget_excerpts.dart rename to examples/ui/adaptive_app_demos/lib/widgets/extra_widget_excerpts.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/widgets/ok_cancel_dialog.dart b/examples/ui/adaptive_app_demos/lib/widgets/ok_cancel_dialog.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/widgets/ok_cancel_dialog.dart rename to examples/ui/adaptive_app_demos/lib/widgets/ok_cancel_dialog.dart diff --git a/examples/ui/layout/adaptive_app_demos/lib/widgets/scroll_view_with_scrollbars.dart b/examples/ui/adaptive_app_demos/lib/widgets/scroll_view_with_scrollbars.dart similarity index 100% rename from examples/ui/layout/adaptive_app_demos/lib/widgets/scroll_view_with_scrollbars.dart rename to examples/ui/adaptive_app_demos/lib/widgets/scroll_view_with_scrollbars.dart diff --git a/examples/ui/layout/adaptive_app_demos/pubspec.yaml b/examples/ui/adaptive_app_demos/pubspec.yaml similarity index 92% rename from examples/ui/layout/adaptive_app_demos/pubspec.yaml rename to examples/ui/adaptive_app_demos/pubspec.yaml index 77e75c9a72..4e1edd61ff 100644 --- a/examples/ui/layout/adaptive_app_demos/pubspec.yaml +++ b/examples/ui/adaptive_app_demos/pubspec.yaml @@ -17,7 +17,7 @@ dependencies: dev_dependencies: example_utils: - path: ../../../example_utils + path: ../../example_utils flutter_test: sdk: flutter diff --git a/firebase.json b/firebase.json index 98cd763302..3f7deaa1d8 100644 --- a/firebase.json +++ b/firebase.json @@ -28,7 +28,7 @@ { "source": "/accessibility", "destination": "/ui/accessibility-and-internationalization/accessibility", "type": 301 }, { "source": "/adaptations", "destination": "/platform-integration/platform-adaptations", "type": 301 }, - { "source": "/adaptive*", "destination": "/ui/layout/responsive/adaptive-responsive", "type": 301 }, + { "source": "/adaptive*", "destination": "/ui/adaptive-responsive", "type": 301 }, { "source": "/android-release", "destination": "/deployment/android", "type": 301 }, { "source": "/animations", "destination": "/ui/animations", "type": 301 }, { "source": "/animations/:rest*", "destination": "/ui/animations/:rest*", "type": 301 }, @@ -189,12 +189,13 @@ { "source": "/ui/advanced/splash-screen", "destination": "/platform-integration/android/splash-screen", "type": 301 }, { "source": "/ui/advanced/typography", "destination": "/ui/design/text/typography", "type": 301 }, { "source": "/ui/assets-and-images", "destination": "/ui/assets/assets-and-images", "type": 301 }, - { "source": "/ui/building-adaptive-apps", "destination": "/ui/layout/responsive/building-adaptive-apps", "type": 301 }, + { "source": "/ui/building-adaptive-apps", "destination": "/ui/adaptive-responsive", "type": 301 }, { "source": "/ui/interactive", "destination": "/ui/interactivity", "type": 301 }, - { "source": "/ui/layout/adaptive-responsive", "destination": "/ui/layout/responsive/adaptive-responsive", "type": 301 }, + { "source": "/ui/layout/adaptive-responsive", "destination": "/ui/adaptive-responsive", "type": 301 }, { "source": "/ui/layout/box-constraints", "destination": "/ui/layout/constraints#unbounded", "type": 301 }, - { "source": "/ui/layout/building-adaptive-apps", "destination": "/ui/layout/responsive/building-adaptive-apps", "type": 301 }, - { "source": "/ui/layout/responsive", "destination": "/ui/layout/responsive/adaptive-responsive", "type": 301 }, + { "source": "/ui/layout/building-adaptive-apps", "destination": "/ui/adaptive-responsive", "type": 301 }, + { "source": "/ui/layout/responsive", "destination": "/ui/adaptive-responsive", "type": 301 }, + { "source": "/ui/layout/responsive/adaptive-responsive", "destination": "/ui/adaptive-responsive", "type": 301 }, { "source": "/ui/material", "destination": "/ui/design/material", "type": 301 }, { "source": "/ui/material3-updates", "destination": "/ui/design/material", "type": 301 }, { "source": "/ui/scrolling", "destination": "/ui/layout/scrolling", "type": 301 }, @@ -234,7 +235,7 @@ { "source": "/go/a11y-links", "destination": "https://docs.google.com/document/d/1FxzANiyJFkoRxJ7V2IejpfB5DX19gxiJps-8N2oUW_U/edit#", "type": 301 }, { "source": "/go/a11y-text-attributes", "destination": "https://docs.google.com/document/d/1vhbwxFOTRTUvW2C_onFffEH5Fn2pAfMQDyv-gekias0/edit?usp=sharing&resourcekey=0-ChQvjIoWYO7jXcaCXMj5Qw", "type": 301 }, { "source": "/go/actions-and-shortcuts-design-revision", "destination": "https://docs.google.com/document/d/1A9yald55O_C6Weqp4tOtyMisfOC1ZC0UMq7Yc-pNfVQ/edit", "type": 301 }, - { "source": "/go/adaptive", "destination": "/ui/layout/responsive/building-adaptive-apps", "type": 301 }, + { "source": "/go/adaptive", "destination": "/ui/adaptive-responsive", "type": 301 }, { "source": "/go/adaptive-layout-foldables", "destination": "https://docs.google.com/document/d/1qhrpTWYs5f67X8v32NCCNTRMIjSrVHuaMEFAul-Q_Ms/edit?usp=sharing", "type": 301 }, { "source": "/go/add-missing-features-to-selection-controls", "destination": "https://docs.google.com/document/d/1QizXwBiO-2REIcEovl5pK06BaLPOWYmNwOE5jactJZA/edit?usp=sharing&resourcekey=0-1pb9mJiAq29Gesmt25GAug", "type": 301 }, { "source": "/go/add-to-app-samples", "destination": "https://docs.google.com/document/d/1M_GsAL8C1NxbsmzI35w2Th1wvX1KMoPHY5yeeNbzjY0", "type": 301 }, diff --git a/site-shared b/site-shared index 01264751bd..e466136cd7 160000 --- a/site-shared +++ b/site-shared @@ -1 +1 @@ -Subproject commit 01264751bdd7cc70d06f57d80cf4e4693e9bd406 +Subproject commit e466136cd77d715352a7f86a7abf563a1cfce735 diff --git a/src/_data/sidenav.yml b/src/_data/sidenav.yml index bb121162c9..7189437961 100644 --- a/src/_data/sidenav.yml +++ b/src/_data/sidenav.yml @@ -180,18 +180,24 @@ permalink: /cookbook/lists/floating-app-bar - title: Create a scrolling parallax effect permalink: /cookbook/effects/parallax-scrolling - # TODO(parlough): Rename this to 'Responsive design' - # and add 'Adaptive design' under 'Design & theming'. - - title: Adaptive design - permalink: /ui/layout/responsive - children: - - title: Adaptive and responsive app design - permalink: /ui/layout/responsive/adaptive-responsive - - title: Build an adaptive app - permalink: /ui/layout/responsive/building-adaptive-apps - - title: Update app UI based on orientation - permalink: /cookbook/design/orientation - +- title: Adaptive & responsive design + permalink: /ui/adaptive-responsive + children: + - title: Overview + permalink: /ui/adaptive-responsive + match-page-url-exactly: true + - title: General approach + permalink: /ui/adaptive-responsive/general + - title: SafeArea & MediaQuery + permalink: /ui/adaptive-responsive/safearea-mediaquery + - title: Large screens & foldables + permalink: /ui/adaptive-responsive/large-screens + - title: User input & accessibility + permalink: /ui/adaptive-responsive/input + - title: Best practices + permalink: /ui/adaptive-responsive/best-practices + - title: Additional resources + permalink: /ui/adaptive-responsive/more-info - title: Design & theming permalink: /ui/design children: diff --git a/src/content/assets/images/docs/ui/adaptive-responsive/abstract.png b/src/content/assets/images/docs/ui/adaptive-responsive/abstract.png new file mode 100644 index 0000000000000000000000000000000000000000..a969b252fd71f6eb81c1077dd5aba7b6e63fa888 GIT binary patch literal 50826 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 literal 0 HcmV?d00001 diff --git a/src/content/assets/images/docs/development/ui/layout/adaptive_scaffold.gif b/src/content/assets/images/docs/ui/adaptive-responsive/adaptive_scaffold.gif similarity index 100% rename from src/content/assets/images/docs/development/ui/layout/adaptive_scaffold.gif rename to src/content/assets/images/docs/ui/adaptive-responsive/adaptive_scaffold.gif diff --git a/src/content/assets/images/docs/development/ui/layout/adaptive_scaffold2.gif b/src/content/assets/images/docs/ui/adaptive-responsive/adaptive_scaffold2.gif similarity index 100% rename from src/content/assets/images/docs/development/ui/layout/adaptive_scaffold2.gif rename to src/content/assets/images/docs/ui/adaptive-responsive/adaptive_scaffold2.gif diff --git a/src/content/assets/images/docs/ui/adaptive-responsive/branch.png b/src/content/assets/images/docs/ui/adaptive-responsive/branch.png new file mode 100644 index 0000000000000000000000000000000000000000..b4f97306b41edb378accbf56fc8f909fc7e3f0ab GIT binary patch literal 45143 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 literal 0 HcmV?d00001 diff --git a/src/content/assets/images/docs/development/ui/layout/embed_image1.png b/src/content/assets/images/docs/ui/adaptive-responsive/embed_image1.png similarity index 100% rename from src/content/assets/images/docs/development/ui/layout/embed_image1.png rename to src/content/assets/images/docs/ui/adaptive-responsive/embed_image1.png diff --git a/src/content/assets/images/docs/development/ui/layout/embed_image2.png b/src/content/assets/images/docs/ui/adaptive-responsive/embed_image2.png similarity index 100% rename from src/content/assets/images/docs/development/ui/layout/embed_image2.png rename to src/content/assets/images/docs/ui/adaptive-responsive/embed_image2.png diff --git a/src/content/assets/images/docs/ui/adaptive-responsive/large-screen-guidelines.png b/src/content/assets/images/docs/ui/adaptive-responsive/large-screen-guidelines.png new file mode 100644 index 0000000000000000000000000000000000000000..40cd6a3be38bb27440d959b4e61c6beea9e102b1 GIT binary patch literal 43253 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%0AgRuP?UGnTmA9X7 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 Ndf7m$_|omi{|8Ze8{7Z@ literal 0 HcmV?d00001 diff --git a/src/content/assets/images/docs/ui/adaptive-responsive/large-screen.png b/src/content/assets/images/docs/ui/adaptive-responsive/large-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..47d555bafdb7eb8c20ec7c08a700f733ecdbc30f GIT binary patch literal 369236 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%0D;LL_zJV!C9c2POoMfYui$L` zk{)6C%AMsR+>DmTAXjfoT{Qw2SJbPQIyae%BdapR>BjCkX=*=Y&=y92xf4hA5P0zs z@5#58gSL9^LOONFK|TT~n!2GM5TC$O^v5g8JSU}wKQPL>{G|N2TG~q{C2TANwWpr_ zTn*L=`{T4Z%Lbgvpk1FUswtzCn{CJZDOd?fHbMM`NVvqIjev-|`KBxY2K;J%@)8#w zNtAY+Z;=w8b}M$vmQV7V9o(XlWZr(jogzj~`Lpg5kyg%aRLH&ZnQQie!H|5^Q~N;M z5A7;?p-#9ZS-d`eWE}}=F-Rg|p^I*`8>X3bwikib2e{e`nk2 zok_yj2NWvl!P~srioo(CZ?(a~mv?n|AqP~vwp|z|t>h!Gb+J70Z9eM)LEROf3m~n( z#>Z9!zc9jT9bN5(85C^2bdte|B?X+5eZpN0(w|Y*9r=>J(Pm8c)R{y?PE&+Sx$-;9 zCBGmOvd}^jM3|q#h6VseYb(+of~U1<>PGzPMQq|u+X0T@Vd`&?no3&I%k+$XCclv* z{8xr&g7iIvL0ifY=D_7EEU@(?c+G|)`4F#@D z8jLve4nwvdlM9350Y@5EPutb$JY#hd0w7K2rtzVHZm})aSGL&M*v9ODT@?&H4>+Pz z%U~E>8^8w!nmT(rR?a+n*pUZKNnhL>Z14U4;djU9R)1xz(4tRH*n&s?bkJ~j{q~FF z=0`s{UVHVs*|KN6gQED9yy?=gptlvN`wgkEWtv==Z$&)AO)dR7R73cn# zm6a_V#&kri%4T5e3MzW9jC8Q>AmsHA^s~{2PNRBNCx^TnSG^qKJZ|%3t5$I)>N|tG8|~m)~qF=g=mdPPY*s zq7w($O5}|AE;MzdeGbrrs$h(PJFg7l(5YQso2191vGufT5A?z;!%E+AY=`Y`0A+W3 z*(x-8YTdNsqnN1M)E)k92VVLyIJ|M7 zLXpvK=-?R?B;G>RsRA%XWVC~GnN8Dfr>f1cBeu8hpwYpYX@Fw`q;3721FH9CdfsfRl4KhAq$eIC}=>l_|E0gmTkv4L?~pe)xNu*pmLms!gtyrDat-Pl3&W}IRh z+9wD%2TJJOZRFyK?Xr*o2A6{*2Z5;{3xYaaAOfdq2^wVT4R~E@SjtowayLJ~Ui+V2 z9OP}kK~CzFt6}aIQBRhW!7?bHl_B*CK07$4WPoeggi7!yr}5%|R-G%c6{orgPV`yb zHLq$F7gmxot$lBGa3D+y_E*O;ebh3kAc+pxL60Ipo!_~gT?WE4zaD0oy3BRA#@g>L zGTTR@XX&_Gh70nQUn)!-ENR(B^aIY?eZRkb5^QFEZnDVkdlHadj0Tb7jjs2cM=OTP2 zi`U7JG_o{+*GnCeOg3<5JB)3@p5zyLrpj!a9 z5>Sbc{gMmXl_jn|vcevDRI+;Ei_mX(Gs*9)uT7U9b*wDnNZZ!NEkPc-TSem1hP~jH z|H|rbby{NTMh%sJc(d&{ia6;fS#)8}9d&W;l*gzg!CX4T*>bK(#LI8moq6R2?TD{g z8d*4aTjYrI6$XHZzVuQK7jd&5h$t-d3!080^0o~NZORk@X8CulsSR;VA{3+KA=7PJVH*O}*-^O0#Uox8~_6uI+OTnTeuI2${ zsSCih-WFz-S@M&Xa)p2E_hlIaD_$Oth_02H=A%8;zRVyFRdurHWyU|tU$vl)-jCtA zL;L@;QuRP5XMTNdY-1fK1xL~5yM=ROMYV1B`AUCT?b~b-d#F%evqKBD!_e_@wbBOX zvtMqLTVqw!!B;B0#s-6wPJn9

    id{ZbOrE#&cXb3?k2My0Youiaa(@1~#@AdG++= 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 literal 0 HcmV?d00001 diff --git a/src/content/assets/images/docs/ui/adaptive-responsive/platforms.png b/src/content/assets/images/docs/ui/adaptive-responsive/platforms.png new file mode 100644 index 0000000000000000000000000000000000000000..672ec7eaaef55dc5d6a3a789b1a6f6ec2d63d57e GIT binary patch literal 60734 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%0Dd@u!oaH5lEm82jPc9p$e)*T0*uw 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 literal 0 HcmV?d00001 diff --git a/src/content/assets/images/docs/development/ui/layout/titlebar.png b/src/content/assets/images/docs/ui/adaptive-responsive/titlebar.png similarity index 100% rename from src/content/assets/images/docs/development/ui/layout/titlebar.png rename to src/content/assets/images/docs/ui/adaptive-responsive/titlebar.png diff --git a/src/content/get-started/flutter-for/swiftui-devs.md b/src/content/get-started/flutter-for/swiftui-devs.md index acd72b7a67..6cfd0495bd 100644 --- a/src/content/get-started/flutter-for/swiftui-devs.md +++ b/src/content/get-started/flutter-for/swiftui-devs.md @@ -1374,7 +1374,7 @@ To review a complete walkthrough, check out the [video_player example][]. [Wonderous]: https://flutter.gskinner.com/wonderous/?utm_source=flutterdocs&utm_medium=docs&utm_campaign=iosdevs [video_player]: {{site.pub-pkg}}/video_player [video_player example]: {{site.pub-pkg}}/video_player/example -[Creating responsive and adaptive apps]: /ui/layout/responsive/adaptive-responsive +[Creating responsive and adaptive apps]: /ui/adaptive-responsive [`MediaQuery.of()`]: {{site.api}}/flutter/widgets/MediaQuery-class.html [`CustomPaint`]: {{site.api}}/flutter/widgets/CustomPaint-class.html [`CustomPainter`]: {{site.api}}/flutter/rendering/CustomPainter-class.html diff --git a/src/content/platform-integration/web/faq.md b/src/content/platform-integration/web/faq.md index 828a12ec50..264ca8bc1d 100644 --- a/src/content/platform-integration/web/faq.md +++ b/src/content/platform-integration/web/faq.md @@ -124,9 +124,9 @@ If you encounter problems, please [file an issue][]. Use [Flutter DevTools][] for the following tasks: -* [debugging][] -* [logging][] -* [running Flutter inspector][] +* [Debugging][] +* [Logging][] +* [Running Flutter inspector][] Use [Chrome DevTools][] for the following tasks: @@ -150,8 +150,8 @@ Not currently. [Analyzing performance]: {{site.developers}}/web/tools/chrome-devtools/evaluate-performance [building a web app with Flutter]: /platform-integration/web/building [Chrome DevTools]: {{site.developers}}/web/tools/chrome-devtools -[Creating responsive apps]: /ui/layout/responsive/adaptive-responsive -[debugging]: /tools/devtools/debugger +[Creating responsive apps]: /ui/adaptive-responsive +[Debugging]: /tools/devtools/debugger [file an issue]: {{site.repo.flutter}}/issues/new?title=[web]:+%3Cdescribe+issue+here%3E&labels=%E2%98%B8+platform-web&body=Describe+your+issue+and+include+the+command+you%27re+running,+flutter_web%20version,+browser+version [Flutter DevTools]: /tools/devtools/overview [Generating event timeline]: {{site.developers}}/web/tools/chrome-devtools/evaluate-performance/performance-reference @@ -159,9 +159,9 @@ Not currently. [`iframe`]: https://html.com/tags/iframe/ [isolates]: {{site.dart-site}}/guides/language/concurrency [Issue 32248]: {{site.repo.flutter}}/issues/32248 -[logging]: /tools/devtools/logging +[Logging]: /tools/devtools/logging [Preparing a web app for release]: /deployment/web -[running Flutter inspector]: /tools/devtools/inspector +[Running Flutter inspector]: /tools/devtools/inspector [Upgrading from package:flutter_web to the Flutter SDK]: {{site.repo.flutter}}/wiki/Upgrading-from-package:flutter_web-to-the-Flutter-SDK [widget tests]: /testing/overview#widget-tests [Web support for Flutter]: /platform-integration/web diff --git a/src/content/platform-integration/web/index.md b/src/content/platform-integration/web/index.md index 364ebf871d..01385b1dbd 100644 --- a/src/content/platform-integration/web/index.md +++ b/src/content/platform-integration/web/index.md @@ -83,7 +83,7 @@ The following resources can help you get started: --- [Building a web application with Flutter]: /platform-integration/web/building -[Creating responsive apps]: /ui/layout/responsive/adaptive-responsive +[Creating responsive apps]: /ui/adaptive-responsive [Discord]: https://discordapp.com/invite/yeZ6s7k [file an issue]: https://goo.gle/flutter_web_issue [Wonderous app]: {{site.wonderous}}/web diff --git a/src/content/release/archive-whats-new.md b/src/content/release/archive-whats-new.md index 465709efdb..2487b56214 100644 --- a/src/content/release/archive-whats-new.md +++ b/src/content/release/archive-whats-new.md @@ -684,7 +684,7 @@ null safety, but that work is not yet completed. **Docs updated or added since the 2.0 release** -* A new page on [Building adaptive apps][]. +* A new page on Building adaptive apps. * A new page describing how to use [Google APIs][] with Flutter. * A new landing page for [Embedded Support for Flutter][]. @@ -746,7 +746,6 @@ publication since the last stable release: [Adding in-app purchases to your Flutter app]: {{site.codelabs}}/codelabs/flutter-in-app-purchases [Announcing Flutter 2.2]: {{site.flutter-medium}}/announcing-flutter-2-2-at-google-i-o-2021-92f0fcbd7ef9 -[Building adaptive apps]: /ui/layout/responsive/building-adaptive-apps [Build Voice Bots for Android with Dialogflow Essentials & Flutter]: {{site.codelabs}}/codelabs/dialogflow-flutter [Building your first Flutter app]: {{site.yt.watch}}?v=Z6KZ3cTGBWw [DartPad Sharing Guide (using a Gist file)]: {{site.github}}/dart-lang/dart-pad/wiki/Sharing-Guide @@ -846,7 +845,7 @@ publication since the last stable release: [Announcing Flutter 2]: {{site.google-blog}}/2021/03/announcing-flutter-2.html [comp]: {{site.flutter-medium}}/providing-operating-system-compatibility-on-a-large-scale-374cc2fb0dad [Configuring the URL strategy on the web]: /ui/navigation/url-strategies -[Creating responsive and adaptive apps]: /ui/layout/responsive/adaptive-responsive +[Creating responsive and adaptive apps]: /ui/adaptive-responsive [Dart sound null safety: technical preview 2]: {{site.flutter-medium}}/null-safety-flutter-tech-preview-cb5c98aba187 [Deprecation Lifetime in Flutter]: {{site.flutter-medium}}/deprecation-lifetime-in-flutter-e4d76ee738ad [Desktop support for Flutter]: /platform-integration/desktop @@ -1261,7 +1260,7 @@ Happy Fluttering! [building a web application]: /platform-integration/web/building [`ColorFiltered`]: {{site.api}}/flutter/widgets/ColorFiltered-class.html [ColorFiltered demo]: {{site.github}}/csells/flutter_color_filter -[creating responsive apps]: /ui/layout/responsive/adaptive-responsive +[creating responsive apps]: /ui/adaptive-responsive [Flutter for web]: /platform-integration/web [Flutter news from GDD China: uniting Flutter on web and mobile, and introducing Flutter 1.9]: {{site.google-blog}}/2019/09/flutter-news-from-gdd-china-flutter1.9.html?m=1 [Improving Flutter's Error Messages]: {{site.flutter-medium}}/improving-flutters-error-messages-e098513cecf9 diff --git a/src/content/ui/adaptive-responsive/best-practices.md b/src/content/ui/adaptive-responsive/best-practices.md new file mode 100644 index 0000000000..770ce8aad6 --- /dev/null +++ b/src/content/ui/adaptive-responsive/best-practices.md @@ -0,0 +1,240 @@ +--- +title: Best practices for adaptive design +description: >- + Summary of some of the best practices for adaptive design. +short-title: Best practices +--- + +Recommended best practices for adaptive design include: + +## Design considerations + +### Break down your widgets + +While designing your app, try to break down large, +complex widgets into smaller, simpler ones. + +Refactoring widgets can reduce the complexity of +adopting an adaptive UI by sharing core pieces of code. +There are other benefits as well: + +* On the performance side, having lots of small `const` + widgets improves rebuild times over having large, + complex widgets. +* Flutter can reuse `const` widget instances, + while a larger complex widget has to be set up + for every rebuild. +* From a code health perspective, organizing your UI + into smaller bite sized pieces helps keep the complexity + of each `Widget` down. A less-complex `Widget` is more readable, + easier to refactor, and less likely to have surprising behavior. + +To learn more, check out the 3 steps of +adaptive design in [General approach][]. + +[General approach]: /ui/adaptive-responsive/general + +### Design to the strengths of each form factor + +Beyond screen size, you should also spend time +considering the unique strengths and weaknesses +of different form factors. It isn't always ideal +for your multiplatform app to offer identical +functionality everywhere. Consider whether it makes +sense to focus on specific capabilities, +or even remove certain features, on some device categories. + +For example, mobile devices are portable and have cameras, +but they aren't well suited for detailed creative work. +With this in mind, you might focus more on capturing content +and tagging it with location data for a mobile UI, +but focus on organizing or manipulating that content +for a tablet or desktop UI. + +Another example is leveraging the web's extremely low barrier +for sharing. If you're deploying a web app, +decide which [deep links][] to support, +and design your navigation routes with those in mind. + +The key takeaway here is to think about what each +platform does best and see if there are unique capabilities +you can leverage. + +[deep links]: /ui/navigation/deep-linking + +### Solve touch first + +Building a great touch UI can often be more difficult +than a traditional desktop UI due, in part, +to the lack of input accelerators like right-click, +scroll wheel, or keyboard shortcuts. + +One way to approach this challenge is to focus initially +on a great touch-oriented UI. You can still do most of +your testing using the desktop target for its iteration speed. +But, remember to switch frequently to a mobile device to +verify that everything feels right. + +After you have the touch interface polished, you can tweak +the visual density for mouse users, and then layer on all +the additional inputs. Approach these other inputs as +accelerator—alternatives that make a task faster. +The important thing to consider is what a user expects +when using a particular input device, +and work to reflect that in your app. + +## Implementation details + +### Don't lock the orientation of your app. + +An adaptive app should look good on windows of +different sizes and shapes. While locking an app +to portrait mode on phones can help narrow the scope +of a minimum viable product, it can increase the +effort required to make the app adaptive in the future. + +For example, the assumption that phones will only +render your app in a full screen portrait mode is +not a guarantee. Multi window app support is becoming common, +and foldables have many use cases that work best with +multiple apps running side by side. + +If you absolutely must lock your app in portrait mode (but don't), +use the `Display` API instead of something like `MediaQuery` +to get the physical dimensions of the screen. + +To summarize: + + * Locked screens can be [an accessibility issue][] for some users + * Android large format tiers require portrait and landscape + support at the [lowest level][]. + * Android devices can [override a locked screen][] + * Apple guidelines say [aim to support both orientations][] + +[an accessibility issue]: https://www.w3.org/WAI/WCAG21/Understanding/orientation.html +[aim to support both orientations]: https://www.w3.org/WAI/WCAG21/Understanding/orientation.html +[lowest level]: {{site.android-dev}}/docs/quality-guidelines/large-screen-app-quality#T3-8 +[override a locked screen]: {{site.android-dev}}/guide/topics/large-screens/large-screen-compatibility-mode#per-app_overrides + +### Avoid orientation-based layouts + +Avoid using `MediaQuery`'s orientation field +or `OrientationBuilder` to switch between +different app layouts. This is similar to the +guidance of not checking device types to determine +screen size. The device's orientation also doesn't +necessarily inform you of how much space your app window has. + +Instead, use `MediaQuery`'s `sizeOf` or `LayoutBuilder`, +as discussed in the [General approach][] page. +Then use adaptive breakpoints like the ones that +[Material][] recommends. + +[General approach]: /ui/adaptive-responsive/general# +[Material]: https://m3.material.io/foundations/layout/applying-layout/window-size-classes + +### Don't gobble up all of the horizontal space + +Apps that use the full width of the window to +display boxes or text fields don't play well +when these apps run on large screens. + +To learn how to avoid this, +check out [Layout with GridView][]. + +[Layout with GridView]: /ui/adaptive-responsive/large-screens#layout-with-gridview + +### Avoid checking for hardware types + +Avoid writing code that checks whether the device you're +running on is a "phone" or a "tablet", or any other type +of device when making layout decisions. + +What space your app is actually given to render in +isn't always tied to the full screen size of the device. +Flutter can run on many different platforms, +and your app might be running in a resizeable window on ChromeOS, +side by side with another app on tablets in a multi-window mode, +or even in a picture-in-picture on phones. +Therefore, device type and app window size aren't +really strongly connected. + +Instead, use `MediaQuery` to get the size of the window +your app is currently running in. + +This isn't only helpful for UI code. +To learn how abstracting out device +capabilities can help your business logic code, +check out the 2022 Google I/O talk, +[Flutter lessons for federated plugin development][]. + +[Flutter lessons for federated plugin development]: {{site.youtube-site}}/watch?v=GAnSNplNpCA + +### Support a variety of input devices + +Apps should support basic mice, trackpads, +and keyboard shortcuts. The most common user +flows should support keyboard navigation +to ensure accessibility. In particular, +your app follow accessible best practices +for keyboards on large devices. + +The Material library provides widgets with +excellent default behavior for touch, mouse, +and keyboard interaction. + +To learn how to add this support to custom widgets, +check out [User input & accessibility][]. + +[User input & accessibility]: /ui/adaptive-responsive/input + +### Restore List state + +{% comment %} +PENDING: Reid, I think you suggested renaming/removing this item? I can't, for the life of me, find that comment in the PR +{% endcomment %} + +To maintain the scroll position in a list +that doesn't change its layout when the +device's orientation changes, +use the [`PageStorageKey`][] class. +[`PageStorageKey`][] persists the +widget state in storage after the widget is +destroyed and restores state when recreated. + +You can see an example of this in the [Wonderous app][], +where it stores the list's state in the +`SingleChildScrollView` widget. + +If the `List` widget changes its layout +when the device's orientation changes, +you might have to do a bit of math ([example][]) +to change the scroll position on screen rotation. + +[example]: {{site.github}}/gskinnerTeam/flutter-wonderous-app/blob/34e49a08084fbbe69ed67be948ab00ef23819313/lib/ui/screens/collection/widgets/_collection_list.dart#L39 +[`PageStorageKey`]: {{site.api}}/flutter/widgets/PageStorageKey-class.html +[Wonderous app]: {{site.github}}/gskinnerTeam/flutter-wonderous-app/blob/8a29d6709668980340b1b59c3d3588f123edd4d8/lib/ui/screens/wonder_events/widgets/_events_list.dart#L64 + +## Save app state + +Apps should retain or restore [app state][] +as the device rotates, changes window size, +or folds and unfolds. +By default, an app should maintain state. + +If your app loses state during device configuration, +verify that the plugins and native extensions +that your app uses support the +device type, such as a large screen. +Some native extensions might lose state when the +device changes position. + +For more information on a real-world case +where this occurred, check out +[Problem: Folding/unfolding causes state loss][state-loss] +in [Developing Flutter apps for Large screens][article], +a free article on Medium. + +[app state]: {{site.android-dev}}/jetpack/compose/state#store-state +[article]: {{site.flutter-medium}}/developing-flutter-apps-for-large-screens-53b7b0e17f10 +[state-loss]: {{site.flutter-medium}}/developing-flutter-apps-for-large-screens-53b7b0e17f10#:~:text=Problem%3A%20Folding/Unfolding%20causes%20state%2Dloss diff --git a/src/content/ui/adaptive-responsive/general.md b/src/content/ui/adaptive-responsive/general.md new file mode 100644 index 0000000000..ea82a1e2ef --- /dev/null +++ b/src/content/ui/adaptive-responsive/general.md @@ -0,0 +1,163 @@ +--- +title: General approach to adaptive apps +description: >- + General advice on how to approach making your Flutter app adaptive. +short-title: General approach +--- + + + +So, just _how_ do you approach taking an app +designed for conventional mobile devices, +and make it beautiful on a wide range +of devices? What steps are required? + +Google engineers, who have experience doing this +very thing for large apps, recommend the +following 3-step approach. + +## Step 1: Abstract + +![Step 1: Abstract info common to any UI widget](/assets/images/docs/ui/adaptive-responsive/abstract.png) + +First, identify the widgets that you plan to +make dynamic. Analyze the constructors for those +widgets and abstract out the data that you can share. + +Common widgets that require adaptibility are: + +* Dialogs, both fullscreen and modal +* Navigation UI, both rail and bottom bar +* Custom layout, such as "is the UI area taller or wider?" + +For example, in a `Dialog` widget, you can share +the info that contains the _content_ of the dialog. + +Or, perhaps you want to switch between a +`NavigationBar` when the app window is small, +and a `NavigationRail` when the app window is large. +These widgets would likely share a list of +navigable destinations. In this case, +you might create a `Destination` widget to hold +this info, and specify the `Destination` as having both +an icon and a text label. + +Next, you will evaluate your screen size to decide +on how to display your UI. + +## Step 2: Measure + +![Step 2: How to measure screen size](/assets/images/docs/ui/adaptive-responsive/measure.png) + +You have two ways to determine the size of your display area: +`MediaQuery` and `LayoutBuilder`. + +### MediaQuery + +In the past, you might have used `MediaQuery.of` to +determine the size of the device's screen. +However, devices today feature screens +with a wide variety of sizes and shapes, +and this test can be misleading. + +For example, maybe your app currently occupies a +small window on a large screen. If you use the +`MediaQuery.of` method and conclude the screen to be small +(when, in fact, the app displays in a tiny window on a large screen), +and you've portrait locked your app, it causes the +app's window to lock to the center of the +screen, surrounded with black. +This is hardly an ideal UI on a large screen. + +:::note +The Material Guidelines encourage you to never +_portrait lock_ your app (by disabling landscape mode). +However, if you feel you really must, +then at least define the portrait mode to work +in top-down mode as well as bottom up. +::: + +Keep in mind that `MediaQuery.sizeOf` returns the +current size of the app's entire screen and +not just a single widget. + +You have two ways to measure your screen space. +You can use either `MediaQuery.sizeOf` or `LayoutBuilder`, +depending on whether you want the size of the whole +app window, or more local sizing. + +If you want your widget to be fullscreen, +even when the app window is small, +use `MediaQuery.sizeOf` so you can choose the +UI based on the size of the app window itself. +In the previous section, you want to base the +sizing behavior on the entire app's window, +so you would use `MediaQuery.sizeOf`. + +:::secondary Why use `MediaQuery.sizeOf` instead of `MediaQuery.of`? +Previous advice recommended that you use the `of` method of +`MediaQuery` to obtain the app window's dimensions. +Why has this advice changed? +The short answer is **for performance reasons.** + +`MediaQuery` contains a lot of data, but if you're +only interested in the size property, it's more +efficient to use the `sizeOf` method. Both methods +return the size of the app window in logical pixels +(also known as _density independent pixels_). +The logical pixel dimensions generally works best as its +roughly the same visual size across all devices. +The `MediaQuery` class has other specialized functions +for each of its individual properties for the same reason. +::: + +Requesting the size of the app window from inside +the `build` method, as in `MediaQuery.sizeOf(context)`, +causes the given `BuildContext` to rebuild any time +the size property changes. + +### LayoutBuilder + +`LayoutBuilder` accomplishes a similar goal as +`MediaQuery.sizeOf`, with some distinctions. + +Rather than providing the size of the app's window, +`LayoutBuilder` provides the layout constraints from +the parent `Widget`. This means that you get +sizing information based on the specific spot +in the widget tree where you added the `LayoutBuilder`. +Also, `LayoutBuilder` returns a `BoxConstraints` +object instead of a `Size` object, +so you are given the valid width +and height ranges (minimum and maximum) for the content, +rather than just a fixed size. +This can be useful for custom widgets. + +For example, imagine a custom widget, where you want +the sizing to be based on the space specifically +given to that widget, and not the app window in general. +In this scenario, use `LayoutBuilder`. + +## Step 3: Branch + +![Step 3: Branch the code based on the desired UI](/assets/images/docs/ui/adaptive-responsive/measure.png) + +At this point, you must decide what sizing breakpoints to use +when choosing what version of the UI to display. +For example, the [Material layout][] guidelines suggest using +a bottom nav bar for windows less than 600 logical pixels wide, +and a nav rail for those that are 600 pixels wide or greater. +Again, your choice shouldn't depend on the _type_ of device, +but on the device's available window size. + +[Material layout]: https://m3.material.io/foundations/layout/applying-layout/window-size-classes + +To work through an example that switches between a +`NavigationRail` and a `NavigationBar`, check out +the [Building an animated responsive app layout with Material 3][codelab]. + +[codelab]: {{site.codelabs}}/codelabs/flutter-animated-responsive-layout + +The next page discusses how to ensure that your +app looks best on large screens and foldables. + diff --git a/src/content/ui/adaptive-responsive/idioms.md b/src/content/ui/adaptive-responsive/idioms.md new file mode 100644 index 0000000000..231fd0d5b7 --- /dev/null +++ b/src/content/ui/adaptive-responsive/idioms.md @@ -0,0 +1,398 @@ +--- +title: Platform idioms +description: >- + Learn how to create a responsive app > + that responds to changes in the screen size. +short-title: Idioms +--- + + + +{% comment %} +PENDING: Leave this page out for now... In V2, I'd like to include it. Mariam suggested splitting it up by platform and I like that idea +{% endcomment %} + +The final area to consider for adaptive apps is platform standards. +Each platform has its own idioms and norms; +these nominal or de facto standards inform user expectations +of how an application should behave. Thanks, in part to the web, +users are accustomed to more customized experiences, +but reflecting these platform standards can still provide +significant benefits: + +* **Reduce cognitive load** +: By matching the user's existing mental model, + accomplishing tasks becomes intuitive, + which requires less thinking, + boosts productivity, and reduces frustrations. + +* **Build trust** +: Users can become wary or suspicious + when applications don't adhere to their expectations. + Conversely, a UI that feels familiar can build user trust + and can help improve the perception of quality. + This often has the added benefit of better app store + ratings—something we can all appreciate! + +## Consider expected behavior on each platform + +The first step is to spend some time considering what +the expected appearance, presentation, +or behavior is on this platform. +Try to forget any limitations of your current implementation, +and just envision the ideal user experience. +Work backwards from there. + +Another way to think about this is to ask, +"How would a user of this platform expect to achieve this goal?" +Then, try to envision how that would work in your app +without any compromises. + +This can be difficult if you aren't a regular user of the platform. +You might be unaware of the specific idioms and can easily miss +them completely. For example, a lifetime Android user is +likely unaware of platform conventions on iOS, +and the same holds true for macOS, Linux, and Windows. +These differences might be subtle to you, +but be painfully obvious to an experienced user. + +### Find a platform advocate + +If possible, assign someone as an advocate for each platform. +Ideally, your advocate uses the platform as their primary device, +and can offer the perspective of a highly opinionated user. +To reduce the number of people, combine roles. +Have one advocate for Windows and Android, +one for Linux and the web, and one for Mac and iOS. + +The goal is to have constant, informed feedback so the app +feels great on each platform. Advocates should be encouraged +to be quite picky, calling out anything they feel differs from +typical applications on their device. A simple example is how +the default button in a dialog is typically on the left on Mac +and Linux, but is on the right on Windows. +Details like that are easy to miss if you aren't using a platform +on a regular basis. + +:::secondary Important +Advocates don't need to be developers or +even full-time team members. They can be designers, +stakeholders, or external testers that are provided +with regular builds. +::: + +### Stay unique + +Conforming to expected behaviors doesn't mean that your app +needs to use default components or styling. +Many of the most popular multiplatform apps have very distinct +and opinionated UIs including custom buttons, context menus, +and title bars. + +The more you can consolidate styling and behavior across platforms, +the easier development and testing will be. +The trick is to balance creating a unique experience with a +strong identity, while respecting the norms of each platform. + +## Common idioms and norms to consider + +Take a quick look at a few specific norms and idioms +you might want to consider, and how you could approach +them in Flutter. + +### Scrollbar appearance and behavior + +Desktop and mobile users expect scrollbars, +but they expect them to behave differently on different platforms. +Mobile users expect smaller scrollbars that only appear +while scrolling, whereas desktop users generally expect +omnipresent, larger scrollbars that they can click or drag. + +Flutter comes with a built-in `Scrollbar` widget that already +has support for adaptive colors and sizes according to the +current platform. The one tweak you might want to make is to +toggle `alwaysShown` when on a desktop platform: + + +```dart +return Scrollbar( + thumbVisibility: DeviceType.isDesktop, + controller: _scrollController, + child: GridView.count( + controller: _scrollController, + padding: const EdgeInsets.all(Insets.extraLarge), + childAspectRatio: 1, + crossAxisCount: colCount, + children: listChildren, + ), +); +``` + +This subtle attention to detail can make your app feel more +comfortable on a given platform. + +### Multi-select + +Dealing with multi-select within a list is another area +with subtle differences across platforms: + + +```dart +static bool get isSpanSelectModifierDown => + isKeyDown({LogicalKeyboardKey.shiftLeft, LogicalKeyboardKey.shiftRight}); +``` + +To perform a platform-aware check for control or command, +you can write something like this: + + +```dart +static bool get isMultiSelectModifierDown { + bool isDown = false; + if (Platform.isMacOS) { + isDown = isKeyDown( + {LogicalKeyboardKey.metaLeft, LogicalKeyboardKey.metaRight}, + ); + } else { + isDown = isKeyDown( + {LogicalKeyboardKey.controlLeft, LogicalKeyboardKey.controlRight}, + ); + } + return isDown; +} +``` + +A final consideration for keyboard users is the **Select All** action. +If you have a large list of items of selectable items, +many of your keyboard users will expect that they can use +`Control+A` to select all the items. + +#### Touch devices + +On touch devices, multi-selection is typically simplified, +with the expected behavior being similar to having the +`isMultiSelectModifier` down on the desktop. +You can select or deselect items using a single tap, +and will usually have a button to **Select All** or +**Clear** the current selection. + +How you handle multi-selection on different devices depends +on your specific use cases, but the important thing is to +make sure that you're offering each platform the best +interaction model possible. + +### Selectable text + +A common expectation on the web (and to a lesser extent desktop) +is that most visible text can be selected with the mouse cursor. +When text is not selectable, +users on the web tend to have an adverse reaction. + +Luckily, this is easy to support with the [`SelectableText`][] widget: + + +```dart +return const SelectableText('Select me!'); +``` + +To support rich text, then use `TextSpan`: + + +```dart +return const SelectableText.rich( + TextSpan( + children: [ + TextSpan(text: 'Hello'), + TextSpan(text: 'Bold', style: TextStyle(fontWeight: FontWeight.bold)), + ], + ), +); +``` + +[`SelectableText`]: {{site.api}}/flutter/material/SelectableText-class.html + +### Title bars + +On modern desktop applications, it's common to customize +the title bar of your app window, adding a logo for +stronger branding or contextual controls to help save +vertical space in your main UI. + +![Samples of title bars](/assets/images/docs/ui/adaptive-responsive/titlebar.png){:width="100%"} + +This isn't supported directly in Flutter, but you can use the +[`bits_dojo`][] package to disable the native title bars, +and replace them with your own. + +This package lets you add whatever widgets you want to the +`TitleBar` because it uses pure Flutter widgets under the hood. +This makes it easy to adapt the title bar as you navigate +to different sections of the app. + +[`bits_dojo`]: {{site.github}}/bitsdojo/bitsdojo_window + +### Context menus and tooltips + +On desktop, there are several interactions that +manifest as a widget shown in an overlay, +but with differences in how they're triggered, dismissed, +and positioned: + +* **Context menu** +: Typically triggered by a right-click, + a context menu is positioned close to the mouse, + and is dismissed by clicking anywhere, + selecting an option from the menu, or clicking outside it. + +* **Tooltip** +: Typically triggered by hovering for + 200-400ms over an interactive element, + a tooltip is usually anchored to a widget + (as opposed to the mouse position) and is dismissed + when the mouse cursor leaves that widget. + +* **Popup panel (also known as flyout)** +: Similar to a tooltip, + a popup panel is usually anchored to a widget. + The main difference is that panels are most often + shown on a tap event, and they usually don't hide + themselves when the cursor leaves. + Instead, panels are typically dismissed by clicking + outside the panel or by pressing a **Close** or **Submit** button. + +To show basic tooltips in Flutter, +use the built-in [`Tooltip`][] widget: + + +```dart +return const Tooltip( + message: 'I am a Tooltip', + child: Text('Hover over the text to show a tooltip.'), +); +``` + +Flutter also provides built-in context menus when editing +or selecting text. + +To show more advanced tooltips, popup panels, +or create custom context menus, +you either use one of the available packages, +or build it yourself using a `Stack` or `Overlay`. + +Some available packages include: + +* [`context_menus`][] +* [`anchored_popups`][] +* [`flutter_portal`][] +* [`super_tooltip`][] +* [`custom_pop_up_menu`][] + +While these controls can be valuable for touch users as accelerators, +they are essential for mouse users. These users expect +to right-click things, edit content in place, +and hover for more information. Failing to meet those expectations +can lead to disappointed users, or at least, +a feeling that something isn't quite right. + +[`anchored_popups`]: {{site.pub}}/packages/anchored_popups +[`context_menus`]: {{site.pub}}/packages/context_menus +[`custom_pop_up_menu`]: {{site.pub}}/packages/custom_pop_up_menu +[`flutter_portal`]: {{site.pub}}/packages/flutter_portal +[`super_tooltip`]: {{site.pub}}/packages/super_tooltip +[`Tooltip`]: {{site.api}}/flutter/material/Tooltip-class.html + +### Horizontal button order + +On Windows, when presenting a row of buttons, +the confirmation button is placed at the start of +the row (left side). On all other platforms, +it's the opposite. The confirmation button is +placed at the end of the row (right side). + +This can be easily handled in Flutter using the +`TextDirection` property on `Row`: + + +```dart +TextDirection btnDirection = + DeviceType.isWindows ? TextDirection.rtl : TextDirection.ltr; +return Row( + children: [ + const Spacer(), + Row( + textDirection: btnDirection, + children: [ + DialogButton( + label: 'Cancel', + onPressed: () => Navigator.pop(context, false), + ), + DialogButton( + label: 'Ok', + onPressed: () => Navigator.pop(context, true), + ), + ], + ), + ], +); +``` + +![Sample of embedded image](/assets/images/docs/ui/adaptive-responsive/embed_image1.png){:width="75%"} + +![Sample of embedded image](/assets/images/docs/ui/adaptive-responsive/embed_image2.png){:width="90%"} + +### Menu bar + +Another common pattern on desktop apps is the menu bar. +On Windows and Linux, this menu lives as part of the Chrome title bar, +whereas on macOS, it's located along the top of the primary screen. + +Currently, you can specify custom menu bar entries using +a prototype plugin, but it's expected that this functionality will +eventually be integrated into the main SDK. + +It's worth mentioning that on Windows and Linux, +you can't combine a custom title bar with a menu bar. +When you create a custom title bar, +you're replacing the native one completely, +which means you also lose the integrated native menu bar. + +If you need both a custom title bar and a menu bar, +you can achieve that by implementing it in Flutter, +similar to a custom context menu. + +### Drag and drop + +One of the core interactions for both touch-based and +pointer-based inputs is drag and drop. Although this +interaction is expected for both types of input, +there are important differences to think about when +it comes to scrolling lists of draggable items. + +Generally speaking, touch users expect to see drag handles +to differentiate draggable areas from scrollable ones, +or alternatively, to initiate a drag by using a long +press gesture. This is because scrolling and dragging +are both sharing a single finger for input. + +Mouse users have more input options. They can use a wheel +or scrollbar to scroll, which generally eliminates the need +for dedicated drag handles. If you look at the macOS +Finder or Windows Explorer, you'll see that they work +this way: you just select an item and start dragging. + +In Flutter, you can implement drag and drop in many ways. +Discussing specific implementations is outside +the scope of this article, but some high level options +include the following: + +* Use the [`Draggable`][] and [`DragTarget`][] APIs + directly for a custom look and feel. + +* Hook into `onPan` gesture events, + and move an object yourself within a parent `Stack`. + +* Use one of the [pre-made list packages][] on pub.dev. + +[`Draggable`]: {{site.api}}/flutter/widgets/Draggable-class.html +[`DragTarget`]: {{site.api}}/flutter/widgets/DragTarget-class.html +[pre-made list packages]: {{site.pub}}/packages?q=reorderable+list diff --git a/src/content/ui/adaptive-responsive/index.md b/src/content/ui/adaptive-responsive/index.md new file mode 100644 index 0000000000..c9dbd32603 --- /dev/null +++ b/src/content/ui/adaptive-responsive/index.md @@ -0,0 +1,66 @@ +--- +title: Adaptive and responsive design in Flutter +description: >- + It's important to create an app, + whether for mobile or web, + that responds to size and orientation changes + and maximizes the use of each platform. +short-title: Adaptive design +--- + +![List of supported platforms](/assets/images/docs/ui/adaptive-responsive/platforms.png) + +One of Flutter's primary goals is to create a framework +that allows you to develop apps from a single codebase +that look and feel great on any platform. + +This means that your app might appear on screens of +many different sizes, from a watch, to a foldable +phone with two screens, to a high definition monitor. +And your input device might be a physical or +virtual keyboard, a mouse, a touchscreen, or +any number of other devices. + +Two terms that describe these design concepts +are _adaptive_ and _responsive_. Ideally, +you'd want your app to be _both_ but what, +exactly, does this mean? + +## What is responsive vs adaptive? + +An easy way to think about it is that responsive design +is about fitting the UI _into_ the space and +adaptive design is about the UI being _usable_ in +the space. + +So, a responsive app adjusts the placement of design +elements to _fit_ the available space. And an +adaptive app selects the appropriate layout and +input devices to be usable _in_ the available space. +For example, should a tablet UI use bottom navigation or +side-panel navigation? + +:::note +Often adaptive and responsive concepts are +collapsed into a single term. Most often, +_adaptive design_ is used to refer to both +adaptive and responsive. +::: + +This section covers various aspects of adaptive and +responsive design: + +* [General approach][] +* [SafeArea & MediaQuery][] +* [Large screens & foldables][] +* [User input & accessibility][] +* [Best practices for adaptive apps][] +* [Additional resources][] + +[Additional resources]: /ui/adaptive-responsive/more-info +[Best practices for adaptive apps]: /ui/adaptive-responsive/best-practices +[General approach]: /ui/adaptive-responsive/general +[Large screens & foldables]: /ui/adaptive-responsive/large-screens +[SafeArea & MediaQuery]: /ui/adaptive-responsive/safearea-mediaquery +[User input & accessibility]: /ui/adaptive-responsive/input + diff --git a/src/content/ui/adaptive-responsive/input.md b/src/content/ui/adaptive-responsive/input.md new file mode 100644 index 0000000000..795c39cf27 --- /dev/null +++ b/src/content/ui/adaptive-responsive/input.md @@ -0,0 +1,422 @@ +--- +title: User input & accessibility +description: >- + xxx +--- + + + +It isn't enough to just adapt how your app looks, +you also have to support a variety of user inputs. +The mouse and keyboard introduce input types beyond those +found on a touch device, like scroll wheel, right-click, +hover interactions, tab traversal, and keyboard shortcuts. + +Some of these features work by default on Material +widgets. But, if you've created a custom widget, +you might need to implement them directly. + +Some features that encompass a well-designed app, +also help users who work with assistive technologies. +For example, aside from being **good app design**, +some features, like tab traversal and keyboard shortcuts, +are _critical for users who work with assistive devices_. +In addition to the standard advice for +[creating accessible apps][], this page covers +info for creating apps that are both +adaptive _and_ accessible. + +[creating accessible apps]: /ui/accessibility-and-internationalization/accessibility + +## Scroll wheel for custom widgets + +Scrolling widgets like `ScrollView` or `ListView` +support the scroll wheel by default, and because +almost every scrollable custom widget is built +using one of these, it works with those as well. + +If you need to implement custom scroll behavior, +you can use the [`Listener`][] widget, which lets you +customize how your UI reacts to the scroll wheel. + + +```dart +return Listener( + onPointerSignal: (event) { + if (event is PointerScrollEvent) print(event.scrollDelta.dy); + }, + child: ListView(), +); +``` + +[`Listener`]: {{site.api}}/flutter/widgets/Listener-class.html + +## Tab traversal and focus interactions + +Users with physical keyboards expect that they can use +the tab key to quickly navigate an application, +and users with motor or vision differences often rely +completely on keyboard navigation. + +There are two considerations for tab interactions: +how focus moves from widget to widget, known as traversal, +and the visual highlight shown when a widget is focused. + +Most built-in components, like buttons and text fields, +support traversal and highlights by default. +If you have your own widget that you want included in +traversal, you can use the [`FocusableActionDetector`][] widget +to create your own controls. The [`FocusableActionDetector`][] +widget is helpful for combining focus, mouse input, +and shortcuts together in one widget. You can create +a detector that defines actions and key bindings, +and provides callbacks for handling focus and hover highlights. + + +```dart +class _BasicActionDetectorState extends State { + bool _hasFocus = false; + @override + Widget build(BuildContext context) { + return FocusableActionDetector( + onFocusChange: (value) => setState(() => _hasFocus = value), + actions: >{ + ActivateIntent: CallbackAction(onInvoke: (intent) { + print('Enter or Space was pressed!'); + return null; + }), + }, + child: Stack( + clipBehavior: Clip.none, + children: [ + const FlutterLogo(size: 100), + // Position focus in the negative margin for a cool effect + if (_hasFocus) + Positioned( + left: -4, + top: -4, + bottom: -4, + right: -4, + child: _roundedBorder(), + ) + ], + ), + ); + } +} +``` + +[`Actions`]: {{site.api}}/flutter/widgets/Actions-class.html +[`Focus`]: {{site.api}}/flutter/widgets/Focus-class.html +[`FocusableActionDetector`]: {{site.api}}/flutter/widgets/FocusableActionDetector-class.html +[`MouseRegion`]: {{site.api}}/flutter/widgets/MouseRegion-class.html +[`Shortcuts`]: {{site.api}}/flutter/widgets/Shortcuts-class.html + +### Controlling traversal order + +To get more control over the order that +widgets are focused on when the user tabs through, +you can use [`FocusTraversalGroup`][] to define sections +of the tree that should be treated as a group when tabbing. + +For example, you might to tab through all the fields in +a form before tabbing to the submit button: + + +```dart +return Column(children: [ + FocusTraversalGroup( + child: MyFormWithMultipleColumnsAndRows(), + ), + SubmitButton(), +]); +``` + +Flutter has several built-in ways to traverse widgets and groups, +defaulting to the `ReadingOrderTraversalPolicy` class. +This class usually works well, but it's possible to modify this +using another predefined `TraversalPolicy` class or by creating +a custom policy. + +[`FocusTraversalGroup`]: {{site.api}}/flutter/widgets/FocusTraversalGroup-class.html + +## Keyboard accelerators + +In addition to tab traversal, desktop and web users are accustomed +to having various keyboard shortcuts bound to specific actions. +Whether it's the `Delete` key for quick deletions or +`Control+N` for a new document, be sure to consider the different +accelerators your users expect. The keyboard is a powerful +input tool, so try to squeeze as much efficiency from it as you can. +Your users will appreciate it! + +Keyboard accelerators can be accomplished in a few ways in Flutter, +depending on your goals. + +If you have a single widget like a `TextField` or a `Button` that +already has a focus node, you can wrap it in a [`KeyboardListener`][] +or a [`Focus`][] widget and listen for keyboard events: + + +```dart + @override + Widget build(BuildContext context) { + return Focus( + onKeyEvent: (node, event) { + if (event is KeyDownEvent) { + print(event.logicalKey); + } + return KeyEventResult.ignored; + }, + child: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 400), + child: const TextField( + decoration: InputDecoration( + border: OutlineInputBorder(), + ), + ), + ), + ); + } +} +``` + +To apply a set of keyboard shortcuts to a large section +of the tree, use the [`Shortcuts`][] widget: + + +```dart +// Define a class for each type of shortcut action you want +class CreateNewItemIntent extends Intent { + const CreateNewItemIntent(); +} + +Widget build(BuildContext context) { + return Shortcuts( + // Bind intents to key combinations + shortcuts: const { + SingleActivator(LogicalKeyboardKey.keyN, control: true): + CreateNewItemIntent(), + }, + child: Actions( + // Bind intents to an actual method in your code + actions: >{ + CreateNewItemIntent: CallbackAction( + onInvoke: (intent) => _createNewItem(), + ), + }, + // Your sub-tree must be wrapped in a focusNode, so it can take focus. + child: Focus( + autofocus: true, + child: Container(), + ), + ), + ); +} +``` + +The [`Shortcuts`][] widget is useful because it only +allows shortcuts to be fired when this widget tree +or one of its children has focus and is visible. + +The final option is a global listener. This listener +can be used for always-on, app-wide shortcuts or for +panels that can accept shortcuts whenever they're visible +(regardless of their focus state). Adding global listeners +is easy with [`HardwareKeyboard`][]: + + +```dart +@override +void initState() { + super.initState(); + HardwareKeyboard.instance.addHandler(_handleKey); +} + +@override +void dispose() { + HardwareKeyboard.instance.removeHandler(_handleKey); + super.dispose(); +} +``` + +To check key combinations with the global listener, +you can use the `HardwareKeyboard.instance.logicalKeysPressed` set. +For example, a method like the following can check whether any +of the provided keys are being held down: + + +```dart +static bool isKeyDown(Set keys) { + return keys + .intersection(HardwareKeyboard.instance.logicalKeysPressed) + .isNotEmpty; +} +``` + +Putting these two things together, +you can fire an action when `Shift+N` is pressed: + + +```dart +bool _handleKey(KeyEvent event) { + bool isShiftDown = isKeyDown({ + LogicalKeyboardKey.shiftLeft, + LogicalKeyboardKey.shiftRight, + }); + + if (isShiftDown && event.logicalKey == LogicalKeyboardKey.keyN) { + _createNewItem(); + return true; + } + + return false; +} +``` + +One note of caution when using the static listener, +is that you often need to disable it when the user +is typing in a field or when the widget it's +associated with is hidden from view. +Unlike with `Shortcuts` or `KeyboardListener`, +this is your responsibility to manage. This can be especially +important when you're binding a Delete/Backspace accelerator for +`Delete`, but then have child `TextFields` that the user +might be typing in. + +[`HardwareKeyboard`]: {{site.api}}/flutter/services/HardwareKeyboard-class.html +[`KeyboardListener`]: {{site.api}}/flutter/widgets/KeyboardListener-class.html + +## Mouse enter, exit, and hover for custom widgets {:#custom-widgets} + +On desktop, it's common to change the mouse cursor +to indicate the functionality about the content the +mouse is hovering over. For example, you typically see +a hand cursor when you hover over a button, +or an `I` cursor when you hover over text. + +Flutter's Material buttons handle basic focus states +for standard button and text cursors. +(A notable exception is if you change the default styling +of the Material buttons to set the `overlayColor` to transparent.) + +Implement a focus state for any custom buttons or +gesture detectors in your app. +If you change the default Material button styles, +test for keyboard focus states and +implement your own, if needed. + +To change the cursor from within your custom widgets, +use [`MouseRegion`][]: + + +```dart +// Show hand cursor +return MouseRegion( + cursor: SystemMouseCursors.click, + // Request focus when clicked + child: GestureDetector( + onTap: () { + Focus.of(context).requestFocus(); + _submit(); + }, + child: Logo(showBorder: hasFocus), + ), +); +``` + +`MouseRegion` is also useful for creating custom +rollover and hover effects: + + +```dart +return MouseRegion( + onEnter: (_) => setState(() => _isMouseOver = true), + onExit: (_) => setState(() => _isMouseOver = false), + onHover: (e) => print(e.localPosition), + child: Container( + height: 500, + color: _isMouseOver ? Colors.blue : Colors.black, + ), +); +``` + +For an example that changes the button style +to outline the button when it has focus, +check out the [button code for the Wonderous app][]. +The app modifies the [`FocusNode.hasFocus`][] +property to check whether the button has focus +and, if so, adds an outline. + +[button code for the Wonderous app]: {{site.github}}/gskinnerTeam/flutter-wonderous-app/blob/8a29d6709668980340b1b59c3d3588f123edd4d8/lib/ui/common/controls/buttons.dart#L143 +[`FocusNode.hasFocus`]: {{site.api}}/flutter/widgets/FocusNode/hasFocus.html + +## Visual density + +You might consider enlarging the "hit area" +of a widget to accommodate a touch screen, for example. + +Different input devices offer various levels of precision, +which necessitate differently-sized hit areas. +Flutter's `VisualDensity` class makes it easy to adjust the +density of your views across the entire application, +for example, by making a button larger +(and therefore easier to tap) on a touch device. + +When you change the `VisualDensity` for +your `MaterialApp`, `MaterialComponents` +that support it animate their densities to match. +By default, both horizontal and vertical densities +are set to 0.0, but you can set the densities to any +negative or positive value that you want. +By switching between different +densities, you can easily adjust your UI. + +![Adaptive scaffold](/assets/images/docs/ui/adaptive-responsive/adaptive_scaffold.gif){:width="100%"} + +To set a custom visual density, +inject the density into your `MaterialApp` theme: + + +```dart +double densityAmt = touchMode ? 0.0 : -1.0; +VisualDensity density = + VisualDensity(horizontal: densityAmt, vertical: densityAmt); +return MaterialApp( + theme: ThemeData(visualDensity: density), + home: MainAppScaffold(), + debugShowCheckedModeBanner: false, +); +``` + +To use `VisualDensity` inside your own views, +you can look it up: + + +```dart +VisualDensity density = Theme.of(context).visualDensity; +``` + +Not only does the container react automatically to changes +in density, it also animates when it changes. +This ties together your custom components, +along with the built-in components, +for a smooth transition effect across the app. + +As shown, `VisualDensity` is unit-less, +so it can mean different things to different views. +In the following example, 1 density unit equals 6 pixels, +but this is totally up to you to decide. +The fact that it is unit-less makes it quite versatile, +and it should work in most contexts. + +It's worth noting that the Material generally +use a value of around 4 logical pixels for each +visual density unit. For more information about the +supported components, see the [`VisualDensity`][] API. +For more information about density principles in general, +see the [Material Design guide][]. + +[Material Design guide]: {{site.material2}}/design/layout/applying-density.html#usage +[`VisualDensity`]: {{site.api}}/flutter/material/VisualDensity-class.html + diff --git a/src/content/ui/adaptive-responsive/large-screens.md b/src/content/ui/adaptive-responsive/large-screens.md new file mode 100644 index 0000000000..95803a8182 --- /dev/null +++ b/src/content/ui/adaptive-responsive/large-screens.md @@ -0,0 +1,254 @@ +--- +title: Large screen devices +description: >- + Things to keep in mind when adapting apps to large screens. +short-title: Large screens +--- + + + +This page provides guidance on optimizing your +app to improve its behavior on large screens. + +Flutter, like Android, defines [large screens][] as tablets, +foldables, and ChromeOS devices running Android. Flutter +_also_ defines large screen devices as web, desktop, +and iPads. + +:::secondary Why do large screens matter, in particular? +Demand for large screens continues to increase. +As of January 2024, +more than [270 million active large screen][large screens] +and foldable devices run on Android and more than +[14.9 million iPad users][]. + +When your app supports large screens, +it also receives other benefits. +Optimizing your app to fill the screen. +For example, it: + +* Improves your app's user engagement metrics. +* Increases your app's visibility in the Play Store. + Recent [Play Store updates][] show ratings by + device type and indicates when an app lacks + large screen support. +* Ensures that your app meets iPadOS submission + guidelines and is [accepted in the App Store][]. +::: + +[14.9 million iPad users]: https://www.statista.com/statistics/299632/tablet-shipments-apple/ +[accepted in the App Store]: https://developer.apple.com/ipados/submit/ +[large screens]: {{site.android-dev}}/guide/topics/large-screens/get-started-with-large-screens +[Play Store updates]: {{site.android-dev}}/2022/03/helping-users-discover-quality-apps-on.html + +## Layout with GridView + +Consider the following screenshots of an app. +The app displays its UI in a `ListView`. +The image on the left shows the app running +on a mobile device. The image on the right shows the +app running on a large screen device +_before the advice on this page was applied_. + +![Sample of large screen](/assets/images/docs/ui/adaptive-responsive/large-screen.png){:width="90%"} + +This is not optimal. + +The [Android Large Screen App Quality Guidelines][guidelines] +and the [iOS equivalent][] +say that neither text nor boxes should take up the +full screen width. How to solve this in an adaptive way? + +[guidelines]: https://developer.android.com/docs/quality-guidelines/large-screen-app-quality +[iOS equivalent]: https://developer.apple.com/design/human-interface-guidelines/designing-for-ipados + +A common solution uses `GridView`, as shown in the next section. + +### GridView + +You can use the `GridView` widget to transform +your existing `ListView` into more reasonably-sized items. + +`GridView` is similar to the [`ListView`][] widget, +but instead of handling only a list of widgets arranged linearly, +`GridView` can arrange widgets in a two-dimensional array. + +`GridView` also has constructors that are similar to `ListView`. +The `ListView` default constructor maps to `GridView.count`, +and `ListView.builder` is similar to `GridView.builder`. + +`GridView` has some additional constructors for more custom layouts. +To learn more, visit the [`GridView`][] API page. + +[`GridView`]: {{site.api}}/flutter/widgets/GridView-class.html +[`ListView`]: {{site.api}}/flutter/widgets/ListView-class.html + +For example, if your original app used a `ListView.builder`, +swap that out for a `GridView.builder`. +If your app has a large number of items, +it's recommended to use this builder constructor to only +build the item widgets that are actually visible. + +Most of the parameters in the constructor are the same between +the two widgets, so it's a straightforward swap. +However, you need to figure out what to set for the `gridDelegate`. + +Flutter provides powerful premade `gridDelegates` +that you can use, namely: + +[`SliverGridDelegateWithFixedCrossAxisCount`][] +: Lets you assign a specific number of columns to your grid. + +[`SliverGridDelegateWithMaxCrossAxisExtent`][] +: Lets you define a max item width. + +[`SliverGridDelegateWithFixedCrossAxisCount`]: {{site.api}}/flutter/rendering/SliverGridDelegateWithFixedCrossAxisCount-class.html +[`SliverGridDelegateWithMaxCrossAxisExtent`]: {{site.api}}/flutter/rendering/SliverGridDelegateWithMaxCrossAxisExtent-class.html + +:::secondary +Don't use the grid delegate for these classes that lets +you set the column count directly and then hardcode +the number of columns based on whether the device +is a tablet, or whatever. +The number of columns should be based on the size of +the window and not the size of the physical device. + +This distinction is important because many mobile +devices support multi-window mode, which can +cause your app to be rendered in a space smaller than +the physical size of the display. Also, Flutter apps +can run on web and desktop, which might be sized in many ways. +**For this reason, use `MediaQuery` to get the app window size +rather than the physical device size.** +::: + +### Other solutions + +Another way to approach these situations is to +use the `maxWidth` property of `BoxConstraints`. +This involves the following: + +* Wrap the `GridView`in a `ConstrainedBox` and give + it a `BoxConstraints` with a maximum width set. +* Use a `Container` instead of a `ConstrainedBox` + if you want other functionality like setting the + background color. + +For choosing the maximum width value, +consider using the values recommended +by Material 3 in the [Applying layout][] guide. + +[Applying layout]: https://m3.material.io/foundations/layout/applying-layout/window-size-classes + +## Foldables + +As mentioned previously, Android and Flutter both +recommend in their design guidance **not** +to lock screen orientation, +but some apps lock screen orientation anyway. +Be aware that this can cause problems when running your +app on a foldable device. + +When running on a foldable, the app might look ok +when the device is folded. But when unfolding, +you might find the app letterboxed. + +As described in the [SafeArea & MediaQuery][sa-mq] page, +letterboxing means that the app's window is locked to +the center of the screen while the window is +surrounded with black. + +[sa-mq]: /ui/adaptive-responsive/safearea-mediaquery + +Why can this happen? + +This can happen when using `MediaQuery` to figure out +the window size for yur app. When the device is folded, +orientation is restricted to portrait mode. +Under the hood, `setPreferredOrientations` causes +Android to use a portrait compatibility mode and the app +is displayed in a letterboxed state. +In the letterboxed state, `MediaQuery` never receives +the larger window size that allows the UI to expand. + +You can solve this in one of two ways: + +* Support all orientations. +* Use the dimensions of the _physical display_. + In fact, this is one of the _few_ situations where + you would use the physical display dimensions and + _not_ the window dimensions. + +How to obtain the physical screen dimensions? + +You can use the [`Display`][] API, introduced in +Flutter 3.13, which contains the size, +pixel ratio, and the refresh rate of the physical device. + +[`Display`]: https://main-api.flutter.dev/flutter/dart-ui/Display-class.html + +The following sample code retrieves a `Display` object: + +```dart +/// AppState object. +ui.FlutterView? _view; + +@override +void didChangeDependencies() { + super.didChangeDependencies(); + _view = View.maybeOf(context); +} + +void didChangeMetrics() { + final ui.Display? display = _view?.display; +} +``` + +The important thing is to find the display of the +view that you care about. This creates a forward-looking +API that should handle current _and_ future multi-display +and multi-view devices. + +## Adaptive input + +Adding support for more screens, also means +expanding input controls. + +Android guidelines describe three tiers of large format device support. + +![3 tiers of large format device support](/assets/images/docs/ui/adaptive-responsive/large-screen-guidelines.png){:width="90%"} + +Tier 3, the lowest level of support, +includes support for mouse and stylus input +([Material 3 guidelines][m3-guide], [Apple guidelines][]). + +If your app uses Material 3 and its buttons and selectors, +then your app already has built-in support for +various additional input states. + +But what if you have a custom widget? +Check out the [User input][] page for +guidance on adding +[input support for widgets][]. + +[Apple guidelines]: https://developer.apple.com/design/human-interface-guidelines/designing-for-ipados#Best-practices +[input support for widgets]: /ui/adaptive-responsive/input#custom-widgets +[m3-guide]: {{site.android-dev}}/developer.android.com/docs/quality-guidelines/large-screen-app-quality +[User input]: /ui/adaptive-responsive/input + +### Navigation + +Navigation can create unique challenges when working with a variety of +differently-sized devices. Generally, you want to switch between +a [`BottomNavigationBar`][] and a [`NavigationRail`] depending on +available screen space. + +For more information (and corresponding example code), +check out [Problem: Navigation rail][], a section in the +[Developing Flutter apps for Large screens][article] article. + +[article]: {{site.flutter-medium}}/developing-flutter-apps-for-large-screens-53b7b0e17f10 +[`BottomNavigationBar`]: {{site.api}}/flutter/material/BottomNavigationBar-class.html +[`NavigationRail`]: {{site.api}}/flutter/material/NavigationRail-class.html +[Problem: Navigation rail]: {{site.flutter-medium}}/developing-flutter-apps-for-large-screens-53b7b0e17f10#:~:text=Problem%3A%20Navigation%20rail1 + diff --git a/src/content/ui/adaptive-responsive/more-info.md b/src/content/ui/adaptive-responsive/more-info.md new file mode 100644 index 0000000000..596f0721fc --- /dev/null +++ b/src/content/ui/adaptive-responsive/more-info.md @@ -0,0 +1,54 @@ +--- +title: Additional resources +description: >- + Other resources that you might find useful when writing adaptive apps. +short-title: Learn +--- + +## Examples + +If you'd like to see how these concepts come together, +check out the source code for the following +apps/demos: + +* [Wonderous][] +* [Flutter adaptive demo][] + +[Flutter adaptive demo]: {{site.github}}/gskinnerTeam/flutter-adaptive-demo +[Wonderous]: {{site.github}}/gskinnerTeam/flutter-wonderous-app + +## Learn more about basic usability principles + +Of course, these pages don't constitute an +exhaustive list of the things you might consider. +The more operating systems, form factors, +and input devices you support, the more difficult +it becomes to spec out every permutation in design. + +Taking time to learn basic usability principles as a +developer empowers you to make better decisions, +reduces back-and-forth iterations with +design during production, and results in +improved productivity with better outcomes. + +Here are some resources that you might find useful: + +* [Android large screen guidelines][] +* [Material guidelines on applying layout][] +* [Material design for large screens][] +* [Material guidelines on canonical layouts][] +* [Build high quality apps (Android)][] +* [UI design do's and don'ts (Apple)][] +* [Human interface guidelines (Apple)][] +* [Responsive design techniques (Microsoft)][] +* [Machine sizes and breakpoints (Microsoft)][] + +[Android large screen guidelines]: {{site.android-dev}}/docs/quality-guidelines/large-screen-app-quality +[Build high quality apps (Android)]: {{site.android-dev}}/quality +[Material guidelines on applying layout]: {{site.material}}/foundations/layout/applying-layout/window-size-classes +[Material guidelines on canonical layouts]: {{site.material}}/foundations/layout/canonical-layouts/overview +[Human interface guidelines (Apple)]: {{site.apple-dev}}/design/human-interface-guidelines/ +[Material design for large screens]: {{site.material2}}/blog/material-design-for-large-screens +[Machine sizes and breakpoints (Microsoft)]: https://docs.microsoft.com/en-us/windows/uwp/design/layout/screen-sizes-and-breakpoints-for-responsive-desig +[Responsive design techniques (Microsoft)]: https://docs.microsoft.com/en-us/windows/uwp/design/layout/responsive-design +[UI design do's and don'ts (Apple)]: {{site.apple-dev}}/design/tips/ diff --git a/src/content/ui/adaptive-responsive/safearea-mediaquery.md b/src/content/ui/adaptive-responsive/safearea-mediaquery.md new file mode 100644 index 0000000000..7624ffec79 --- /dev/null +++ b/src/content/ui/adaptive-responsive/safearea-mediaquery.md @@ -0,0 +1,106 @@ +--- +title: SafeArea & MediaQuery +description: >- + Learn how to use SafeArea to create an adaptive app. +--- + +This page discusses how and when to use the +`SafeArea` and `MediaQuery` widgets. + +## SafeArea + +When running your app on the latest devices, +you might encounter bits of the UI being blocked +by cutouts on the device's screen. +You can fix this with the [`SafeArea`][] widget, +which insets its child widget to avoid intrusions +(like notches and camera cutouts), +as well as operating system UI +(such as the status bar on Android), +or by rounded corners of the physical display. + +If you don't want this behavior, +the `SafeArea` widget allows you to +disable padding on any of its four sides. +By default, all four sides are enabled. + +It's generally recommended to wrap the body of a +`Scaffold` widget in `SafeArea` as a good place to start, +but you don't always need to put it this high in the +`Widget` tree. + +For example, if you purposefully want your app to stretch +under the cutouts, you can move the `SafeArea` to wrap +whatever content makes sense, +and let the rest of the app take up the full screen. + +Using `SafeArea` ensures that your app content won't be +cut off by physical display features or operating system UI, +and sets your app up for success even as new devices with +different shapes and styles of cutouts enter the market. + +How does `SafeArea` do so much in a small amount of code? +Behind the scenes it uses the `MediaQuery` object. + +[`SafeArea`]: {{site.api}}/flutter/widgets/SafeArea-class.html + +## MediaQuery + +As discussed in the [SafeArea](#safearea) section, +`MediaQuery` is a powerful widget for creating +adaptive apps. Sometimes you'll use `MediaQuery` +directly, and sometimes you'll use `SafeArea`, +which uses `MediaQuery` behind the scenes. + +`MediaQuery` provides lots of information, +including the app's current window size. +It exposes accessibility settings like high contrast mode +and text scaling, or if the user is using an accessibility +service like TalkBack or VoiceOver. +`MediaQuery` also contains info about the features +of your device's display, such as having a hinge or a fold. + +`SafeArea` uses the data from `MediaQuery` to figure out +how much to inset its child `Widget`. +Specifically, it uses the `MediaQuery` padding property, +which is basically the amount of the display that's +partially obscured by system UI, display notches, or status bar. + +So, why not use `MediaQuery` directly? + +The answer is that `SafeArea` does one clever thing +that makes it beneficial to use over just raw `MediaQueryData`. +Specifically, it modifies the `MediaQuery` exposed +to `SafeArea`'s children to make it appear as if the +padding added to `SafeArea` doesn't exist. +This means that you can nest `SafeArea`s, +and only the topmost one will apply the padding +needed to avoid the notches as system UI. + +As your app grows and you move widgets around, +you don't have to worry about having too much +padding applied if you have multiple `SafeArea`s, +whereas you would have issues if using +`MediaQueryData.padding` directly. + +You _can_ wrap the body of a `Scaffold` widget +with a `SafeArea`, but you don't _have_ to put it this high +in the widget tree. +The `SafeArea` just needs to wrap the contents +that would cause information loss if cut off by the +hardware features mentioned earlier. + +For example, if you purposefully want your app to stretch +under the cutouts, you can move the `SafeArea` to wrap +whatever content makes sense, +and let the rest of the app take up the full screen. +A side note is that this is what the `AppBar` widget +does by default, which is how it goes underneath the +system status bar. This is also why wrapping the body +of a `Scaffold` in a `SafeArea` is recommended, +instead of wrapping the whole `Scaffold` itself. + +`SafeArea` ensures that your app content won't be +cut off in a generic way and sets your app up +for success even as new devices with different +shapes and styles of cutouts enter the market. diff --git a/src/content/ui/layout/responsive/adaptive-responsive.md b/src/content/ui/layout/responsive/adaptive-responsive.md deleted file mode 100644 index 25cee77882..0000000000 --- a/src/content/ui/layout/responsive/adaptive-responsive.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Creating responsive and adaptive apps -description: It's important to create apps, whether for mobile or web, so that they are responsive to size and orientation changes. -short-title: Responsive and adaptive ---- - -One of Flutter's primary goals is to create a framework -that allows you to develop apps from a single codebase -that look and feel great on any platform. - -This means that your app might appear on screens of -many different sizes, from a watch, to a foldable -phone with two screens, to a high def monitor. - -Two terms that describe concepts for this -scenario are _adaptive_ and _responsive_. Ideally, -you'd want your app to be _both_ but what, -exactly, does this mean? -These terms are similar, but they are not the same. - -## The difference between an adaptive and a responsive app - -_Adaptive_ and _responsive_ can be viewed as separate -dimensions of an app: you can have an adaptive app -that is not responsive, or vice versa. And, of course, -an app can be both, or neither. - -**Responsive** -: Typically, a _responsive_ app has had its layout - tuned for the available screen size. Often this - means (for example), re-laying out the UI if the - user resizes the window, or changes the device's - orientation. This is especially necessary when - the same app can run on a variety of devices, - from a watch, phone, tablet, to a laptop or - desktop computer. - -**Adaptive** -: _Adapting_ an app to run on different device types, - such as mobile and desktop, requires dealing - with mouse and keyboard input, as well as - touch input. It also means there are different - expectations about the app's visual density, - how component selection works - (cascading menus vs bottom sheets, for example), - using platform-specific features (such as - top-level windows), and more. - -Learn more in the following 5-minute video: - - - -[Adaptive vs Responsive][] - -## Creating a responsive Flutter app - -Flutter allows you to create apps that self-adapt -to the device's screen size and orientation. - -There are two basic approaches to creating Flutter -apps with responsive design: - -**Use the [`LayoutBuilder`][] class** -: From its [`builder`][] property, you get a - [`BoxConstraints`][] object. - Examine the constraint's properties to decide what to - display. For example, if your [`maxWidth`][] is greater than - your width breakpoint, return a [`Scaffold`][] object with a - row that has a list on the left. If it's narrower, - return a [`Scaffold`][] object with a drawer containing that - list. You can also adjust your display based on the - device's height, the aspect ratio, or some other property. - When the constraints change (for example, - the user rotates the phone, or puts your app into a tile UI - on Android), the build function runs. - -**Use the [`MediaQuery.of()`][] method in your build functions** -: This gives you the size, orientation, etc, of your current app. - This is more useful if you want to make decisions based on the - complete context rather than on just the size of your particular - widget. Again, if you use this, then your build function automatically - runs if the user somehow changes the app's size. - -Other useful widgets and classes for creating a responsive UI: - -* [`AspectRatio`][] -* [`CustomSingleChildLayout`][] -* [`CustomMultiChildLayout`][] -* [`FittedBox`][] -* [`FractionallySizedBox`][] -* [`LayoutBuilder`][] -* [`MediaQuery`][] -* [`MediaQueryData`][] -* [`OrientationBuilder`][] - -### Other resources - -For more information, here are a few resources, -including contributions from the Flutter community: - -* [Developing for Multiple Screen Sizes and Orientations in - Flutter][] by Deven Joshi -* [Build Responsive UIs in Flutter][] by Raouf Rahiche -* [Making Cross-platform Flutter Landing Page Responsive][] - by Priyanka Tyagi -* [How to make flutter app responsive according to different screen - size?][], a question on StackOverflow - -[`AspectRatio`]: {{site.api}}/flutter/widgets/AspectRatio-class.html -[`BoxConstraints`]: {{site.api}}/flutter/rendering/BoxConstraints-class.html -[Build Responsive UIs in Flutter]: {{site.medium}}/flutter-community/build-responsive-uis-in-flutter-fd450bd59158 -[`builder`]: {{site.api}}/flutter/widgets/LayoutBuilder/builder.html -[`CustomMultiChildLayout`]: {{site.api}}/flutter/widgets/CustomMultiChildLayout-class.html -[`CustomSingleChildLayout`]: {{site.api}}/flutter/widgets/CustomSingleChildLayout-class.html -[Developing for Multiple Screen Sizes and Orientations in Flutter]: {{site.medium}}/flutter-community/developing-for-multiple-screen-sizes-and-orientations-in-flutter-fragments-in-flutter-a4c51b849434 -[`FittedBox`]: {{site.api}}/flutter/widgets/FittedBox-class.html - -[`FractionallySizedBox`]: {{site.api}}/flutter/widgets/FractionallySizedBox-class.html -[How to make flutter app responsive according to different screen size?]: {{site.so}}/questions/49704497/how-to-make-flutter-app-responsive-according-to-different-screen-size -[`LayoutBuilder`]: {{site.api}}/flutter/widgets/LayoutBuilder-class.html -[Making Cross-platform Flutter Landing Page Responsive]: {{site.medium}}/flutter-community/making-cross-platform-flutter-landing-page-responsive-7fffe0655970 -[`maxWidth`]: {{site.api}}/flutter/rendering/BoxConstraints/maxWidth.html -[`MediaQuery`]: {{site.api}}/flutter/widgets/MediaQuery-class.html -[`MediaQuery.of()`]: {{site.api}}/flutter/widgets/MediaQuery/of.html -[`MediaQueryData`]: {{site.api}}/flutter/widgets/MediaQueryData-class.html -[`OrientationBuilder`]: {{site.api}}/flutter/widgets/OrientationBuilder-class.html -[`Scaffold`]: {{site.api}}/flutter/material/Scaffold-class.html - -## Creating an adaptive Flutter app - -Learn more about creating an adaptive Flutter app with -[Building adaptive apps][], written by the gskinner team. - -You might also check out the following episodes -of The Boring Show: - - - -[Adaptive layouts][] - - - -[Adaptive layouts, part 2][] - -For an excellent example of an adaptive app, -check out Flutter Folio, a scrapbooking app created -in collaboration with gskinner and the Flutter team: - - - -The [Folio source code][] is also available on GitHub. -Learn more on the [gskinner blog][]. - -### Other resources - -You can learn more about creating platform adaptive apps -in the following resources: - -* [Platform-specific behaviors and adaptations][], a page on this site. -* [Extreme UI Adaptability in Flutter][], the story of how Google Earth is - using Flutter to take adaptability to the next level. -* [Designing truly adaptive user interfaces][] a blog post and video by - Aloïs Deniel, presented at the Flutter Vikings 2020 conference. - -[Adaptive layouts]: {{site.yt.watch}}?v=n6Awpg1MO6M&t=694s -[Adaptive layouts, part 2]: {{site.yt.watch}}?v=eikOZzfc0l4&t=11s -[Adaptive vs Responsive]: {{site.youtube-site}}/HD5gYnspYzk?si=5ItDD7UjXvGCRM0K -[Building adaptive apps]: /ui/layout/responsive/building-adaptive-apps - -[Designing truly adaptive user interfaces]: https://www.aloisdeniel.com/blog/designing-truly-adaptative-user-interfaces -[Folio source code]: {{site.github}}/gskinnerTeam/flutter-folio -[gskinner blog]: https://blog.gskinner.com/ -[Platform-specific behaviors and adaptations]: /platform-integration/platform-adaptations -[Extreme UI Adaptability in Flutter]: {{site.flutter-medium}}/extreme-ui-adaptability-in-flutter-how-google-earth-supports-every-use-case-on-earth-6db4661e7a17 diff --git a/src/content/ui/layout/responsive/building-adaptive-apps.md b/src/content/ui/layout/responsive/building-adaptive-apps.md index 6d4ca58052..7c715043f7 100644 --- a/src/content/ui/layout/responsive/building-adaptive-apps.md +++ b/src/content/ui/layout/responsive/building-adaptive-apps.md @@ -3,7 +3,7 @@ title: Building adaptive apps description: Some considerations and instructions on how to build adaptive apps to run on a variety of platforms. --- - + ## Overview diff --git a/src/content/ui/layout/responsive/index.md b/src/content/ui/layout/responsive/index.md deleted file mode 100644 index a1214b49f9..0000000000 --- a/src/content/ui/layout/responsive/index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -layout: toc -title: Responsive & adaptive design -short-title: Adaptive design -description: > - Content covering making Flutter apps adaptive to - different device features and layouts. -sitemap: false ---- From 8f70e79c63b46db9708a1d689f9abdf337edddb2 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Sun, 12 May 2024 20:26:58 -0700 Subject: [PATCH 079/109] Incorporating some of Parker's feedback (#10573) I was eager to land the mammoth PR, but here are some minor updates... --- src/content/ui/adaptive-responsive/idioms.md | 2 +- src/content/ui/adaptive-responsive/input.md | 4 +++- src/content/ui/adaptive-responsive/large-screens.md | 3 ++- src/content/ui/adaptive-responsive/more-info.md | 9 +++++---- .../ui/adaptive-responsive/safearea-mediaquery.md | 3 ++- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/content/ui/adaptive-responsive/idioms.md b/src/content/ui/adaptive-responsive/idioms.md index 231fd0d5b7..6e10713ded 100644 --- a/src/content/ui/adaptive-responsive/idioms.md +++ b/src/content/ui/adaptive-responsive/idioms.md @@ -1,7 +1,7 @@ --- title: Platform idioms description: >- - Learn how to create a responsive app > + Learn how to create a responsive app that responds to changes in the screen size. short-title: Idioms --- diff --git a/src/content/ui/adaptive-responsive/input.md b/src/content/ui/adaptive-responsive/input.md index 795c39cf27..6ffad0e2d9 100644 --- a/src/content/ui/adaptive-responsive/input.md +++ b/src/content/ui/adaptive-responsive/input.md @@ -1,7 +1,9 @@ --- title: User input & accessibility description: >- - xxx + A truly adaptive app also handles differences + in how user input works and also programs + to help folks with accessibility issues. --- diff --git a/src/content/ui/adaptive-responsive/large-screens.md b/src/content/ui/adaptive-responsive/large-screens.md index 95803a8182..9edbba7eb7 100644 --- a/src/content/ui/adaptive-responsive/large-screens.md +++ b/src/content/ui/adaptive-responsive/large-screens.md @@ -1,7 +1,8 @@ --- title: Large screen devices description: >- - Things to keep in mind when adapting apps to large screens. + Things to keep in mind when adapting apps + to large screens. short-title: Large screens --- diff --git a/src/content/ui/adaptive-responsive/more-info.md b/src/content/ui/adaptive-responsive/more-info.md index 596f0721fc..47f584a57d 100644 --- a/src/content/ui/adaptive-responsive/more-info.md +++ b/src/content/ui/adaptive-responsive/more-info.md @@ -1,15 +1,16 @@ --- title: Additional resources description: >- - Other resources that you might find useful when writing adaptive apps. + Other resources that you might find useful + when writing adaptive apps. short-title: Learn --- ## Examples -If you'd like to see how these concepts come together, -check out the source code for the following -apps/demos: +If you'd like to see how the adaptive and responsive +concepts (as described in these pages) come together. +check out the source code for the following apps: * [Wonderous][] * [Flutter adaptive demo][] diff --git a/src/content/ui/adaptive-responsive/safearea-mediaquery.md b/src/content/ui/adaptive-responsive/safearea-mediaquery.md index 7624ffec79..55c4f4984d 100644 --- a/src/content/ui/adaptive-responsive/safearea-mediaquery.md +++ b/src/content/ui/adaptive-responsive/safearea-mediaquery.md @@ -1,7 +1,8 @@ --- title: SafeArea & MediaQuery description: >- - Learn how to use SafeArea to create an adaptive app. + Learn how to use SafeArea and MediaQuery + to create an adaptive app. --- This page discusses how and when to use the From bcf5e1d002f10237266beb3b702cae5ce717149e Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Mon, 13 May 2024 02:33:40 -0700 Subject: [PATCH 080/109] Adding all of the currently supported mediation packages (#10574) As per Zoey. --- src/content/resources/ads-overview.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/content/resources/ads-overview.md b/src/content/resources/ads-overview.md index 65f1d9facc..3a38f7e882 100644 --- a/src/content/resources/ads-overview.md +++ b/src/content/resources/ads-overview.md @@ -23,18 +23,29 @@ The the following resources can help get you started: * [Adding an AdMob banner and native inline ads to a Flutter app][] (codelab) * [How to support Google Mobile Ads (AdMob) mediation][mediation] (guide) -The following packages support AdMob mediation (in alphabetical order): +Listed in alphabetical order, +the following packages support AdMob mediation: * AppLovin ([gma_mediation_applovin][]) +* DT Exchange ([gma_mediation_dtexchange][]) +* InMobi ([gma_mediation_inmobi][]) +* IronSource ([gma_mediation_ironsource][]) +* Liftoff ([gma_mediation_liftoffmonetize][]) * Meta ([gma_mediation_meta][]) +* Mintegral ([gma_mediation_mintegral][]) * Pangle ([gma_mediation_pangle][]) +* Unity ([gma_mediation_unity][]) [Add ads to your mobile Flutter app or game]: /cookbook/plugins/google-mobile-ads [Adding AdMob ads to a Flutter app]: {{site.codelabs}}/codelabs/admob-ads-in-flutter#0 [Adding an AdMob banner and native inline ads to a Flutter app]: {{site.codelabs}}/codelabs/admob-inline-ads-in-flutter#0 [gma_mediation_applovin]: {{site.pub-pkg}}/gma_mediation_applovin +[gma_mediation_dtexchange]: {{site.pub-pkg}}/gma_mediation_dtexchange +[gma_mediation_inmobi]: {{site.pub-pkg}}/gma_mediation_inmobi +[gma_mediation_ironsource]: {{site.pub-pkg}}/gma_mediation_ironsource +[gma_mediation_liftoffmonetize]: {{site.pub-pkg}}/gma_mediation_liftoffmonetize [gma_mediation_meta]: {{site.pub-pkg}}/gma_mediation_meta +[gma_mediation_mintegral]: {{site.pub-pkg}}/gma_mediation_mintegral [gma_mediation_pangle]: {{site.pub-pkg}}/gma_mediation_pangle +[gma_mediation_unity]: {{site.pub-pkg}}/gma_mediation_unity [mediation]: https://developers.google.com/admob/flutter/mediation - - From 11be61603d440d9433c07eb4dc3bc86692811ccb Mon Sep 17 00:00:00 2001 From: chunhtai <47866232+chunhtai@users.noreply.github.com> Date: Mon, 13 May 2024 10:18:32 -0700 Subject: [PATCH 081/109] Update runtime analyzer design doc redirect (#10579) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ _Issues fixed by this PR (if any):_ ## Presubmit checklist - [ ] 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. --- firebase.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firebase.json b/firebase.json index 3f7deaa1d8..bdb0bc8db9 100644 --- a/firebase.json +++ b/firebase.json @@ -535,7 +535,7 @@ { "source": "/go/respecting-tabcontroller-animateto-duration", "destination": "https://docs.google.com/document/d/1wzSzUYstDM-Kg5kwskyXcEUX7QTb-lBOso7Z5ebrCTk/edit", "type": 301 }, { "source": "/go/restoring-anonymous-routes", "destination": "https://docs.google.com/document/d/1vnjDruoiDz0eEd4eVzg3IS6W_LRaFxNSlKWtU6iXp2M/edit", "type": 301 }, { "source": "/go/router-api-improvement", "destination": "https://docs.google.com/document/d/1kbUPagtDl30jqYAq-mDMdd-ftHm3q9AMq55ufZCo9lE/edit?usp=sharing&resourcekey=0-JBqYh_UD3h9OSA8NS5OO4g", "type": 301 }, - { "source": "/go/runtime-flutter-analyzer", "destination": "https://docs.google.com/document/d/1VZOv9NsmNeXaqM9h9EjKTz5cg7lEsA623XBfbojXU5U/edit?usp=sharing", "type": 301 }, + { "source": "/go/analyze-flutter-in-runtime", "destination": "https://docs.google.com/document/d/1VZOv9NsmNeXaqM9h9EjKTz5cg7lEsA623XBfbojXU5U/edit?usp=sharing", "type": 301 }, { "source": "/go/rfc-32-bit-ios-support", "destination": "https://docs.google.com/document/d/1Xz8B2w42ZGmrSdvQHo6LVLhiSZBIxnHxZxoZ-8oyRUc/edit", "type": 301 }, { "source": "/go/rfc-32-bit-ios-unsupported", "destination": "https://docs.google.com/document/d/1cc5EOsuTlbf4dTDTwmkD3aKjS8XEbVCIqi9BFct9XHM/edit?resourcekey=0-Iv0gXDx7nSDCe3YDfxDKqw", "type": 301 }, { "source": "/go/rfc-android-j-deprecation", "destination": "https://docs.google.com/document/d/1N06Pm1x19AIWorENk6OdmY5T8kMzPJUOZs8aL9VccG4/edit", "type": 301 }, From a32c7b35f3956a43e2f8ad80cdf39dada2313351 Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Mon, 13 May 2024 10:41:55 -0700 Subject: [PATCH 082/109] Add `/go/stateful-macro` design doc go link (#10580) --- firebase.json | 1 + 1 file changed, 1 insertion(+) diff --git a/firebase.json b/firebase.json index bdb0bc8db9..a9ec061982 100644 --- a/firebase.json +++ b/firebase.json @@ -557,6 +557,7 @@ { "source": "/go/sliver-flex-and-friends", "destination": "https://docs.google.com/document/d/1W4_5oD5z7JHhUjuQYwS_NJRAv27Ih7IazcMm739O5JU/edit", "type": 301 }, { "source": "/go/sliver-workshop", "destination": "https://dartpad.dev/workshops.html?webserver=https://dartpad-workshops-io2021.web.app/getting_started_with_slivers", "type": 301 }, { "source": "/go/state-restoration-design", "destination": "https://docs.google.com/document/d/1KIiq5CdqnSXxQXbZIDy2Ukc-JHFyLak1JR8e2cm3eO4/edit", "type": 301 }, + { "source": "/go/stateful-macro", "destination": "https://docs.google.com/document/d/1TMVFn2jXw705px7bUggk8vTvpLrUjxEG9mzb-cSqZuo/edit?usp=sharing&resourcekey=0-0s5mvWGH3OcW8GN-Rmr36A", "type": 301 }, { "source": "/go/static-tooling-in-devtools", "destination": "https://docs.google.com/document/d/1i6ISzzSKKDiiVftTnkCCvdgXEjK2eqYlPjCOKTjnvx8/edit?resourcekey=0-uyAiZEjFplyibsAkDAqKJw#", "type": 301 }, { "source": "/go/strategy-2022", "destination": "https://docs.google.com/document/d/e/2PACX-1vTI9X2XHN_IY8wDO4epQSD1CkRT8WDxf2CEExp5Ef4Id206UOMopkYqU73FvAnnYG6NAecNSDo9TaEO/pub", "type": 301 }, { "source": "/go/strategy-2023", "destination": "https://docs.google.com/document/d/e/2PACX-1vRknZ4Jkc-pWSMsDDyKwMrry7k2BSL_I94JCCQrg8FiHuy4fcypkgIVFbQVKPmzDQHfd20uZf2rFiXP/pub", "type": 301 }, From 2a84b8250301fb95043051b5f7ab21a06a074526 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Mon, 13 May 2024 21:13:50 -0700 Subject: [PATCH 083/109] Update build and examples for 3.22 release (#10584) --- .github/workflows/test.yml | 2 ++ .../basic_hero_animation/pubspec.yaml | 2 +- .../basic_radial_hero_animation/pubspec.yaml | 2 +- .../basic_staggered_animation/pubspec.yaml | 2 +- .../_animation/hero_animation/pubspec.yaml | 2 +- .../radial_hero_animation/pubspec.yaml | 2 +- .../pubspec.yaml | 2 +- .../staggered_pic_selection/pubspec.yaml | 2 +- examples/animation/animate0/pubspec.yaml | 2 +- examples/animation/animate1/pubspec.yaml | 2 +- examples/animation/animate2/pubspec.yaml | 2 +- examples/animation/animate3/pubspec.yaml | 2 +- examples/animation/animate4/pubspec.yaml | 2 +- examples/animation/animate5/pubspec.yaml | 2 +- examples/animation/implicit/pubspec.yaml | 2 +- examples/basics/pubspec.yaml | 2 +- .../animation/animated_container/pubspec.yaml | 2 +- .../animation/opacity_animation/pubspec.yaml | 2 +- .../page_route_animation/pubspec.yaml | 2 +- .../animation/physics_simulation/pubspec.yaml | 2 +- examples/cookbook/design/drawer/pubspec.yaml | 2 +- examples/cookbook/design/fonts/pubspec.yaml | 2 +- .../cookbook/design/orientation/pubspec.yaml | 2 +- .../design/package_fonts/pubspec.yaml | 2 +- .../cookbook/design/snackbars/pubspec.yaml | 2 +- examples/cookbook/design/tabs/pubspec.yaml | 2 +- examples/cookbook/design/themes/pubspec.yaml | 2 +- .../effects/download_button/pubspec.yaml | 2 +- .../effects/drag_a_widget/pubspec.yaml | 2 +- .../effects/expandable_fab/pubspec.yaml | 2 +- .../effects/gradient_bubbles/pubspec.yaml | 2 +- .../effects/nested_nav/lib/add_navigator.dart | 8 +++---- .../cookbook/effects/nested_nav/lib/main.dart | 8 +++---- .../nested_nav/lib/original_example.dart | 8 +++---- .../cookbook/effects/nested_nav/pubspec.yaml | 2 +- .../effects/parallax_scrolling/pubspec.yaml | 2 +- .../photo_filter_carousel/pubspec.yaml | 2 +- .../effects/shimmer_loading/pubspec.yaml | 2 +- .../staggered_menu_animation/pubspec.yaml | 2 +- .../effects/typing_indicator/pubspec.yaml | 2 +- examples/cookbook/forms/focus/pubspec.yaml | 2 +- .../forms/retrieve_input/pubspec.yaml | 2 +- .../forms/text_field_changes/pubspec.yaml | 2 +- .../cookbook/forms/text_input/pubspec.yaml | 2 +- .../cookbook/forms/validation/pubspec.yaml | 2 +- .../achievements_leaderboards/pubspec.yaml | 2 +- .../games/firestore_multiplayer/pubspec.yaml | 2 +- .../gestures/dismissible/pubspec.yaml | 2 +- .../gestures/handling_taps/pubspec.yaml | 2 +- .../cookbook/gestures/ripples/pubspec.yaml | 2 +- .../images/cached_images/pubspec.yaml | 2 +- .../images/fading_in_images/pubspec.yaml | 2 +- .../images/network_image/pubspec.yaml | 2 +- .../cookbook/lists/basic_list/pubspec.yaml | 2 +- .../lists/floating_app_bar/pubspec.yaml | 2 +- .../cookbook/lists/grid_lists/pubspec.yaml | 2 +- .../lists/horizontal_list/pubspec.yaml | 2 +- .../cookbook/lists/long_lists/pubspec.yaml | 2 +- .../cookbook/lists/mixed_list/pubspec.yaml | 2 +- .../cookbook/lists/spaced_items/pubspec.yaml | 2 +- .../maintenance/error_reporting/pubspec.yaml | 2 +- .../navigation/hero_animations/pubspec.yaml | 2 +- .../navigation/named_routes/pubspec.yaml | 2 +- .../navigate_with_arguments/pubspec.yaml | 2 +- .../navigation/navigation_basics/pubspec.yaml | 2 +- .../navigation/passing_data/pubspec.yaml | 2 +- .../navigation/returning_data/pubspec.yaml | 2 +- .../authenticated_requests/pubspec.yaml | 2 +- .../background_parsing/pubspec.yaml | 2 +- .../networking/delete_data/pubspec.yaml | 2 +- .../networking/fetch_data/pubspec.yaml | 2 +- .../networking/send_data/pubspec.yaml | 2 +- .../networking/update_data/pubspec.yaml | 2 +- .../networking/web_sockets/pubspec.yaml | 2 +- .../persistence/key_value/pubspec.yaml | 2 +- .../reading_writing_files/pubspec.yaml | 2 +- .../cookbook/persistence/sqlite/pubspec.yaml | 2 +- .../plugins/google_mobile_ads/pubspec.yaml | 2 +- .../plugins/picture_using_camera/pubspec.yaml | 2 +- .../cookbook/plugins/play_video/pubspec.yaml | 2 +- .../integration/introduction/pubspec.yaml | 2 +- .../integration/profiling/pubspec.yaml | 2 +- .../testing/unit/counter_app/pubspec.yaml | 2 +- .../testing/unit/mocking/pubspec.yaml | 4 ++-- .../testing/widget/finders/pubspec.yaml | 2 +- .../testing/widget/introduction/pubspec.yaml | 2 +- .../testing/widget/scrolling/pubspec.yaml | 2 +- .../testing/widget/tap_drag/pubspec.yaml | 2 +- examples/data-and-backend/json/pubspec.yaml | 4 ++-- examples/deployment/obfuscate/pubspec.yaml | 2 +- examples/example_utils/pubspec.yaml | 2 +- .../get-started/codelab_web/lib/main.dart | 8 +++---- .../get-started/codelab_web/lib/starter.dart | 8 +++---- .../get-started/codelab_web/lib/step1.dart | 8 +++---- .../get-started/codelab_web/lib/step2.dart | 8 +++---- .../get-started/codelab_web/lib/step3.dart | 8 +++---- examples/get-started/codelab_web/pubspec.yaml | 2 +- .../flutter-for/android_devs/pubspec.yaml | 2 +- .../flutter-for/declarative/pubspec.yaml | 2 +- .../flutter-for/ios_devs/pubspec.yaml | 2 +- .../react_native_devs/my_widgets/pubspec.yaml | 2 +- .../react_native_devs/pubspec.yaml | 2 +- .../flutter-for/web_devs/pubspec.yaml | 2 +- .../flutter-for/xamarin_devs/pubspec.yaml | 2 +- examples/googleapis/pubspec.yaml | 2 +- examples/integration_test/pubspec.yaml | 2 +- .../integration_test_migration/pubspec.yaml | 2 +- .../add_language/lib/nn_intl.dart | 6 +++++ .../add_language/pubspec.yaml | 2 +- .../gen_l10n_example/pubspec.yaml | 2 +- .../intl_example/pubspec.yaml | 6 ++++- .../internationalization/minimal/pubspec.yaml | 2 +- examples/layout/base/pubspec.yaml | 2 +- examples/layout/card_and_stack/pubspec.yaml | 2 +- examples/layout/constraints/pubspec.yaml | 2 +- examples/layout/container/pubspec.yaml | 2 +- examples/layout/grid_and_list/pubspec.yaml | 2 +- .../layout/lakes/interactive/pubspec.yaml | 2 +- examples/layout/lakes/step2/pubspec.yaml | 2 +- examples/layout/lakes/step3/pubspec.yaml | 2 +- examples/layout/lakes/step4/pubspec.yaml | 2 +- examples/layout/lakes/step5/pubspec.yaml | 2 +- examples/layout/lakes/step6/pubspec.yaml | 2 +- examples/layout/non_material/pubspec.yaml | 2 +- examples/layout/pavlova/pubspec.yaml | 2 +- examples/layout/row_column/pubspec.yaml | 2 +- examples/layout/sizing/pubspec.yaml | 2 +- .../perf/concurrency/isolates/pubspec.yaml | 2 +- .../perf/deferred_components/pubspec.yaml | 2 +- .../platform_integration/ffi/pubspec.yaml | 2 +- .../platform_integration/pigeon/pubspec.yaml | 2 +- .../platform_channels/pubspec.yaml | 2 +- .../platform_views/pubspec.yaml | 2 +- .../plugin_api_migration/pubspec.yaml | 2 +- .../architectural_overview/pubspec.yaml | 2 +- .../dart_swift_concurrency/pubspec.yaml | 2 +- examples/state_mgmt/simple/pubspec.yaml | 2 +- examples/testing/code_debugging/pubspec.yaml | 2 +- examples/testing/common_errors/pubspec.yaml | 2 +- examples/testing/errors/pubspec.yaml | 2 +- .../integration_tests/how_to/pubspec.yaml | 2 +- .../testing/native_debugging/pubspec.yaml | 4 ++-- examples/tools/pubspec.yaml | 2 +- .../lib/widgets/buttons.dart | 4 ++-- examples/ui/adaptive_app_demos/pubspec.yaml | 2 +- .../actions_and_shortcuts/pubspec.yaml | 2 +- examples/ui/advanced/focus/pubspec.yaml | 2 +- examples/ui/assets_and_images/pubspec.yaml | 2 +- examples/ui/interactive/pubspec.yaml | 2 +- examples/ui/widgets_intro/pubspec.yaml | 2 +- examples/visual_debugging/pubspec.yaml | 2 +- pubspec.yaml | 4 ++-- src/_data/site.yml | 2 +- src/content/cookbook/effects/nested-nav.md | 8 +++---- src/content/get-started/codelab-web.md | 24 +++++++++---------- src/content/release/release-notes/index.md | 2 +- src/content/tools/pubspec.md | 2 +- tool/flutter_site/pubspec.yaml | 2 +- 158 files changed, 211 insertions(+), 199 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f67b33b5d1..31725302c1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,6 +31,7 @@ jobs: - name: "Stable channel" branch: stable experimental: false + continue-on-error: ${{ matrix.experimental }} steps: - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b with: @@ -40,6 +41,7 @@ jobs: channel: ${{ matrix.branch }} - name: Fetch Dart dependencies run: dart pub get + continue-on-error: ${{ matrix.experimental }} - name: Check Dart code formatting run: dart run flutter_site format-dart --check continue-on-error: ${{ matrix.experimental }} diff --git a/examples/_animation/basic_hero_animation/pubspec.yaml b/examples/_animation/basic_hero_animation/pubspec.yaml index 3d4cc6dec4..44c66825a9 100644 --- a/examples/_animation/basic_hero_animation/pubspec.yaml +++ b/examples/_animation/basic_hero_animation/pubspec.yaml @@ -4,7 +4,7 @@ description: >- Shows how to create a simple or Hero animation using the Hero class directly. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/_animation/basic_radial_hero_animation/pubspec.yaml b/examples/_animation/basic_radial_hero_animation/pubspec.yaml index 964039fc39..fdcb662bac 100644 --- a/examples/_animation/basic_radial_hero_animation/pubspec.yaml +++ b/examples/_animation/basic_radial_hero_animation/pubspec.yaml @@ -5,7 +5,7 @@ description: >- as it animates to the new route. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/_animation/basic_staggered_animation/pubspec.yaml b/examples/_animation/basic_staggered_animation/pubspec.yaml index f9e986f2d1..4c3e1fd388 100644 --- a/examples/_animation/basic_staggered_animation/pubspec.yaml +++ b/examples/_animation/basic_staggered_animation/pubspec.yaml @@ -3,7 +3,7 @@ publish_to: none description: An introductory example to staggered animations. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/_animation/hero_animation/pubspec.yaml b/examples/_animation/hero_animation/pubspec.yaml index 745b29d386..e1697b16a7 100644 --- a/examples/_animation/hero_animation/pubspec.yaml +++ b/examples/_animation/hero_animation/pubspec.yaml @@ -3,7 +3,7 @@ publish_to: none description: Shows how to create a simple Hero transition. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/_animation/radial_hero_animation/pubspec.yaml b/examples/_animation/radial_hero_animation/pubspec.yaml index fe28621d45..1bc598b77d 100644 --- a/examples/_animation/radial_hero_animation/pubspec.yaml +++ b/examples/_animation/radial_hero_animation/pubspec.yaml @@ -5,7 +5,7 @@ description: >- as it animates to the new route. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/_animation/radial_hero_animation_animate_rectclip/pubspec.yaml b/examples/_animation/radial_hero_animation_animate_rectclip/pubspec.yaml index db4033497e..7ac3df0f14 100644 --- a/examples/_animation/radial_hero_animation_animate_rectclip/pubspec.yaml +++ b/examples/_animation/radial_hero_animation_animate_rectclip/pubspec.yaml @@ -5,7 +5,7 @@ description: >- as it animates to the new route. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/_animation/staggered_pic_selection/pubspec.yaml b/examples/_animation/staggered_pic_selection/pubspec.yaml index 30512a7a32..08d1423f4d 100644 --- a/examples/_animation/staggered_pic_selection/pubspec.yaml +++ b/examples/_animation/staggered_pic_selection/pubspec.yaml @@ -3,7 +3,7 @@ publish_to: none description: A more complex staggered animation example. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/animation/animate0/pubspec.yaml b/examples/animation/animate0/pubspec.yaml index 68aed151db..2802dcde8b 100644 --- a/examples/animation/animate0/pubspec.yaml +++ b/examples/animation/animate0/pubspec.yaml @@ -5,7 +5,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/animation/animate1/pubspec.yaml b/examples/animation/animate1/pubspec.yaml index 68aed151db..2802dcde8b 100644 --- a/examples/animation/animate1/pubspec.yaml +++ b/examples/animation/animate1/pubspec.yaml @@ -5,7 +5,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/animation/animate2/pubspec.yaml b/examples/animation/animate2/pubspec.yaml index 68aed151db..2802dcde8b 100644 --- a/examples/animation/animate2/pubspec.yaml +++ b/examples/animation/animate2/pubspec.yaml @@ -5,7 +5,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/animation/animate3/pubspec.yaml b/examples/animation/animate3/pubspec.yaml index 68aed151db..2802dcde8b 100644 --- a/examples/animation/animate3/pubspec.yaml +++ b/examples/animation/animate3/pubspec.yaml @@ -5,7 +5,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/animation/animate4/pubspec.yaml b/examples/animation/animate4/pubspec.yaml index 68aed151db..2802dcde8b 100644 --- a/examples/animation/animate4/pubspec.yaml +++ b/examples/animation/animate4/pubspec.yaml @@ -5,7 +5,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/animation/animate5/pubspec.yaml b/examples/animation/animate5/pubspec.yaml index 68aed151db..2802dcde8b 100644 --- a/examples/animation/animate5/pubspec.yaml +++ b/examples/animation/animate5/pubspec.yaml @@ -5,7 +5,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/animation/implicit/pubspec.yaml b/examples/animation/implicit/pubspec.yaml index 364fa1b95e..1ddf0011dd 100644 --- a/examples/animation/implicit/pubspec.yaml +++ b/examples/animation/implicit/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/basics/pubspec.yaml b/examples/basics/pubspec.yaml index 403db43948..16aac6ffe2 100644 --- a/examples/basics/pubspec.yaml +++ b/examples/basics/pubspec.yaml @@ -3,7 +3,7 @@ description: Some code to demonstrate null safety. version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/animation/animated_container/pubspec.yaml b/examples/cookbook/animation/animated_container/pubspec.yaml index 02ae612063..fb7f0d2f92 100644 --- a/examples/cookbook/animation/animated_container/pubspec.yaml +++ b/examples/cookbook/animation/animated_container/pubspec.yaml @@ -2,7 +2,7 @@ name: animated_container description: Sample code for cookbook. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/animation/opacity_animation/pubspec.yaml b/examples/cookbook/animation/opacity_animation/pubspec.yaml index 5cd899c6f3..caee5eec4e 100644 --- a/examples/cookbook/animation/opacity_animation/pubspec.yaml +++ b/examples/cookbook/animation/opacity_animation/pubspec.yaml @@ -2,7 +2,7 @@ name: opacity_animation description: Sample code for cookbook. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/animation/page_route_animation/pubspec.yaml b/examples/cookbook/animation/page_route_animation/pubspec.yaml index 32faa1640b..a05ce25d4b 100644 --- a/examples/cookbook/animation/page_route_animation/pubspec.yaml +++ b/examples/cookbook/animation/page_route_animation/pubspec.yaml @@ -2,7 +2,7 @@ name: page_route_animation description: Sample code for cookbook. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/animation/physics_simulation/pubspec.yaml b/examples/cookbook/animation/physics_simulation/pubspec.yaml index 43e8d718b4..c89e598218 100644 --- a/examples/cookbook/animation/physics_simulation/pubspec.yaml +++ b/examples/cookbook/animation/physics_simulation/pubspec.yaml @@ -2,7 +2,7 @@ name: physics_simulation description: Sample code for cookbook. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/design/drawer/pubspec.yaml b/examples/cookbook/design/drawer/pubspec.yaml index 235cee7802..6038fb678a 100644 --- a/examples/cookbook/design/drawer/pubspec.yaml +++ b/examples/cookbook/design/drawer/pubspec.yaml @@ -2,7 +2,7 @@ name: drawer description: Sample code for drawer cookbook recipe. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/design/fonts/pubspec.yaml b/examples/cookbook/design/fonts/pubspec.yaml index 6249a87220..5529255909 100644 --- a/examples/cookbook/design/fonts/pubspec.yaml +++ b/examples/cookbook/design/fonts/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/design/orientation/pubspec.yaml b/examples/cookbook/design/orientation/pubspec.yaml index 0d7f01b223..2a192b58c6 100644 --- a/examples/cookbook/design/orientation/pubspec.yaml +++ b/examples/cookbook/design/orientation/pubspec.yaml @@ -2,7 +2,7 @@ name: orientation description: Sample code for orientation cookbook recipe. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/design/package_fonts/pubspec.yaml b/examples/cookbook/design/package_fonts/pubspec.yaml index 98a2d931d1..697c907a41 100644 --- a/examples/cookbook/design/package_fonts/pubspec.yaml +++ b/examples/cookbook/design/package_fonts/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/design/snackbars/pubspec.yaml b/examples/cookbook/design/snackbars/pubspec.yaml index 64f199fd94..f34ee30e07 100644 --- a/examples/cookbook/design/snackbars/pubspec.yaml +++ b/examples/cookbook/design/snackbars/pubspec.yaml @@ -2,7 +2,7 @@ name: snackbars description: Sample code for snackbars cookbook recipe. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/design/tabs/pubspec.yaml b/examples/cookbook/design/tabs/pubspec.yaml index e0292397de..37a00eab7f 100644 --- a/examples/cookbook/design/tabs/pubspec.yaml +++ b/examples/cookbook/design/tabs/pubspec.yaml @@ -2,7 +2,7 @@ name: tabs description: Sample code for tabs cookbook recipe. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/design/themes/pubspec.yaml b/examples/cookbook/design/themes/pubspec.yaml index 93dc43c215..00973b05ba 100644 --- a/examples/cookbook/design/themes/pubspec.yaml +++ b/examples/cookbook/design/themes/pubspec.yaml @@ -2,7 +2,7 @@ name: themes description: Sample code for themes cookbook recipe. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/effects/download_button/pubspec.yaml b/examples/cookbook/effects/download_button/pubspec.yaml index 692eb9311e..77bdc07369 100644 --- a/examples/cookbook/effects/download_button/pubspec.yaml +++ b/examples/cookbook/effects/download_button/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/effects/drag_a_widget/pubspec.yaml b/examples/cookbook/effects/drag_a_widget/pubspec.yaml index a6ff108c1d..bd88c70346 100644 --- a/examples/cookbook/effects/drag_a_widget/pubspec.yaml +++ b/examples/cookbook/effects/drag_a_widget/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/effects/expandable_fab/pubspec.yaml b/examples/cookbook/effects/expandable_fab/pubspec.yaml index 0bb8d44327..0c6097445c 100644 --- a/examples/cookbook/effects/expandable_fab/pubspec.yaml +++ b/examples/cookbook/effects/expandable_fab/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/effects/gradient_bubbles/pubspec.yaml b/examples/cookbook/effects/gradient_bubbles/pubspec.yaml index 46aef9fdee..3a79e8cac1 100644 --- a/examples/cookbook/effects/gradient_bubbles/pubspec.yaml +++ b/examples/cookbook/effects/gradient_bubbles/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/effects/nested_nav/lib/add_navigator.dart b/examples/cookbook/effects/nested_nav/lib/add_navigator.dart index 043b448c41..b992f0828e 100644 --- a/examples/cookbook/effects/nested_nav/lib/add_navigator.dart +++ b/examples/cookbook/effects/nested_nav/lib/add_navigator.dart @@ -222,7 +222,7 @@ class SelectDevicePage extends StatelessWidget { height: 54, child: ElevatedButton( style: ButtonStyle( - backgroundColor: MaterialStateColor.resolveWith((states) { + backgroundColor: WidgetStateColor.resolveWith((states) { return const Color(0xFF222222); }), ), @@ -338,14 +338,14 @@ class FinishedPage extends StatelessWidget { const SizedBox(height: 32), ElevatedButton( style: ButtonStyle( - padding: MaterialStateProperty.resolveWith((states) { + padding: WidgetStateProperty.resolveWith((states) { return const EdgeInsets.symmetric( horizontal: 24, vertical: 12); }), - backgroundColor: MaterialStateColor.resolveWith((states) { + backgroundColor: WidgetStateColor.resolveWith((states) { return const Color(0xFF222222); }), - shape: MaterialStateProperty.resolveWith((states) { + shape: WidgetStateProperty.resolveWith((states) { return const StadiumBorder(); }), ), diff --git a/examples/cookbook/effects/nested_nav/lib/main.dart b/examples/cookbook/effects/nested_nav/lib/main.dart index ffc2bec9f4..2d043707ca 100644 --- a/examples/cookbook/effects/nested_nav/lib/main.dart +++ b/examples/cookbook/effects/nested_nav/lib/main.dart @@ -220,7 +220,7 @@ class SelectDevicePage extends StatelessWidget { height: 54, child: ElevatedButton( style: ButtonStyle( - backgroundColor: MaterialStateColor.resolveWith((states) { + backgroundColor: WidgetStateColor.resolveWith((states) { return const Color(0xFF222222); }), ), @@ -336,14 +336,14 @@ class FinishedPage extends StatelessWidget { const SizedBox(height: 32), ElevatedButton( style: ButtonStyle( - padding: MaterialStateProperty.resolveWith((states) { + padding: WidgetStateProperty.resolveWith((states) { return const EdgeInsets.symmetric( horizontal: 24, vertical: 12); }), - backgroundColor: MaterialStateColor.resolveWith((states) { + backgroundColor: WidgetStateColor.resolveWith((states) { return const Color(0xFF222222); }), - shape: MaterialStateProperty.resolveWith((states) { + shape: WidgetStateProperty.resolveWith((states) { return const StadiumBorder(); }), ), diff --git a/examples/cookbook/effects/nested_nav/lib/original_example.dart b/examples/cookbook/effects/nested_nav/lib/original_example.dart index 1da523eaaa..a340e80af7 100644 --- a/examples/cookbook/effects/nested_nav/lib/original_example.dart +++ b/examples/cookbook/effects/nested_nav/lib/original_example.dart @@ -216,7 +216,7 @@ class SelectDevicePage extends StatelessWidget { height: 54, child: ElevatedButton( style: ButtonStyle( - backgroundColor: MaterialStateColor.resolveWith((states) { + backgroundColor: WidgetStateColor.resolveWith((states) { return const Color(0xFF222222); }), ), @@ -332,14 +332,14 @@ class FinishedPage extends StatelessWidget { const SizedBox(height: 32), ElevatedButton( style: ButtonStyle( - padding: MaterialStateProperty.resolveWith((states) { + padding: WidgetStateProperty.resolveWith((states) { return const EdgeInsets.symmetric( horizontal: 24, vertical: 12); }), - backgroundColor: MaterialStateColor.resolveWith((states) { + backgroundColor: WidgetStateColor.resolveWith((states) { return const Color(0xFF222222); }), - shape: MaterialStateProperty.resolveWith((states) { + shape: WidgetStateProperty.resolveWith((states) { return const StadiumBorder(); }), ), diff --git a/examples/cookbook/effects/nested_nav/pubspec.yaml b/examples/cookbook/effects/nested_nav/pubspec.yaml index 3b0e9603be..c77e67b820 100644 --- a/examples/cookbook/effects/nested_nav/pubspec.yaml +++ b/examples/cookbook/effects/nested_nav/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/effects/parallax_scrolling/pubspec.yaml b/examples/cookbook/effects/parallax_scrolling/pubspec.yaml index 0b2b58dae3..a4d7598f86 100644 --- a/examples/cookbook/effects/parallax_scrolling/pubspec.yaml +++ b/examples/cookbook/effects/parallax_scrolling/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/effects/photo_filter_carousel/pubspec.yaml b/examples/cookbook/effects/photo_filter_carousel/pubspec.yaml index 1bfe11d0de..fb2b98cc36 100644 --- a/examples/cookbook/effects/photo_filter_carousel/pubspec.yaml +++ b/examples/cookbook/effects/photo_filter_carousel/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/effects/shimmer_loading/pubspec.yaml b/examples/cookbook/effects/shimmer_loading/pubspec.yaml index 4ed6d0604a..f3da4cd63f 100644 --- a/examples/cookbook/effects/shimmer_loading/pubspec.yaml +++ b/examples/cookbook/effects/shimmer_loading/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/effects/staggered_menu_animation/pubspec.yaml b/examples/cookbook/effects/staggered_menu_animation/pubspec.yaml index e7ca884e10..d2c05957c0 100644 --- a/examples/cookbook/effects/staggered_menu_animation/pubspec.yaml +++ b/examples/cookbook/effects/staggered_menu_animation/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/effects/typing_indicator/pubspec.yaml b/examples/cookbook/effects/typing_indicator/pubspec.yaml index 16133ca324..efc6ddb0a2 100644 --- a/examples/cookbook/effects/typing_indicator/pubspec.yaml +++ b/examples/cookbook/effects/typing_indicator/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/forms/focus/pubspec.yaml b/examples/cookbook/forms/focus/pubspec.yaml index 1d41d50632..de49ea8792 100644 --- a/examples/cookbook/forms/focus/pubspec.yaml +++ b/examples/cookbook/forms/focus/pubspec.yaml @@ -2,7 +2,7 @@ name: focus description: Sample code for focus cookbook recipe. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/forms/retrieve_input/pubspec.yaml b/examples/cookbook/forms/retrieve_input/pubspec.yaml index b3350d87c6..c9b23130bf 100644 --- a/examples/cookbook/forms/retrieve_input/pubspec.yaml +++ b/examples/cookbook/forms/retrieve_input/pubspec.yaml @@ -2,7 +2,7 @@ name: retrieve_input description: Sample code for retrieve_input cookbook recipe. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/forms/text_field_changes/pubspec.yaml b/examples/cookbook/forms/text_field_changes/pubspec.yaml index 3ab237f79c..3b238450aa 100644 --- a/examples/cookbook/forms/text_field_changes/pubspec.yaml +++ b/examples/cookbook/forms/text_field_changes/pubspec.yaml @@ -2,7 +2,7 @@ name: text_field_changes description: Sample code for text_field_changes environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/forms/text_input/pubspec.yaml b/examples/cookbook/forms/text_input/pubspec.yaml index 68adbf988c..d43c926fe6 100644 --- a/examples/cookbook/forms/text_input/pubspec.yaml +++ b/examples/cookbook/forms/text_input/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/forms/validation/pubspec.yaml b/examples/cookbook/forms/validation/pubspec.yaml index b32e744f93..93610fbbaf 100644 --- a/examples/cookbook/forms/validation/pubspec.yaml +++ b/examples/cookbook/forms/validation/pubspec.yaml @@ -2,7 +2,7 @@ name: form description: Use Form widget to perform form validation. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/games/achievements_leaderboards/pubspec.yaml b/examples/cookbook/games/achievements_leaderboards/pubspec.yaml index f8ed47e018..06be122fea 100644 --- a/examples/cookbook/games/achievements_leaderboards/pubspec.yaml +++ b/examples/cookbook/games/achievements_leaderboards/pubspec.yaml @@ -2,7 +2,7 @@ name: games_services_example description: Games services environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/games/firestore_multiplayer/pubspec.yaml b/examples/cookbook/games/firestore_multiplayer/pubspec.yaml index 9a2f8473df..39d18a9dea 100644 --- a/examples/cookbook/games/firestore_multiplayer/pubspec.yaml +++ b/examples/cookbook/games/firestore_multiplayer/pubspec.yaml @@ -2,7 +2,7 @@ name: firestore_multiplayer description: Firestore multiplayer environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/gestures/dismissible/pubspec.yaml b/examples/cookbook/gestures/dismissible/pubspec.yaml index ab6574636c..f42c445e66 100644 --- a/examples/cookbook/gestures/dismissible/pubspec.yaml +++ b/examples/cookbook/gestures/dismissible/pubspec.yaml @@ -2,7 +2,7 @@ name: dismissible description: Sample code for dismissible cookbook recipe. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/gestures/handling_taps/pubspec.yaml b/examples/cookbook/gestures/handling_taps/pubspec.yaml index b3e33acf23..7356792c09 100644 --- a/examples/cookbook/gestures/handling_taps/pubspec.yaml +++ b/examples/cookbook/gestures/handling_taps/pubspec.yaml @@ -2,7 +2,7 @@ name: handling_taps description: Example on handling_taps cookbook recipe. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/gestures/ripples/pubspec.yaml b/examples/cookbook/gestures/ripples/pubspec.yaml index a213be8e44..31ce859b2b 100644 --- a/examples/cookbook/gestures/ripples/pubspec.yaml +++ b/examples/cookbook/gestures/ripples/pubspec.yaml @@ -2,7 +2,7 @@ name: ripples description: Example for ripples cookbook recipe environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/images/cached_images/pubspec.yaml b/examples/cookbook/images/cached_images/pubspec.yaml index 764b6e0dc2..8eba9999fa 100644 --- a/examples/cookbook/images/cached_images/pubspec.yaml +++ b/examples/cookbook/images/cached_images/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/images/fading_in_images/pubspec.yaml b/examples/cookbook/images/fading_in_images/pubspec.yaml index c1e2babe90..5cecc6c61b 100644 --- a/examples/cookbook/images/fading_in_images/pubspec.yaml +++ b/examples/cookbook/images/fading_in_images/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/images/network_image/pubspec.yaml b/examples/cookbook/images/network_image/pubspec.yaml index 3458915c3d..c67aedab8e 100644 --- a/examples/cookbook/images/network_image/pubspec.yaml +++ b/examples/cookbook/images/network_image/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/lists/basic_list/pubspec.yaml b/examples/cookbook/lists/basic_list/pubspec.yaml index 13edf62722..61272099d7 100644 --- a/examples/cookbook/lists/basic_list/pubspec.yaml +++ b/examples/cookbook/lists/basic_list/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/lists/floating_app_bar/pubspec.yaml b/examples/cookbook/lists/floating_app_bar/pubspec.yaml index b8327ed1db..78b601e1b8 100644 --- a/examples/cookbook/lists/floating_app_bar/pubspec.yaml +++ b/examples/cookbook/lists/floating_app_bar/pubspec.yaml @@ -2,7 +2,7 @@ name: floating_app_bar description: Example for floating_app_bar cookbook recipe environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/lists/grid_lists/pubspec.yaml b/examples/cookbook/lists/grid_lists/pubspec.yaml index 2eb0b4e7d9..0e63aa9fd5 100644 --- a/examples/cookbook/lists/grid_lists/pubspec.yaml +++ b/examples/cookbook/lists/grid_lists/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/lists/horizontal_list/pubspec.yaml b/examples/cookbook/lists/horizontal_list/pubspec.yaml index e6759be334..3b52dc0e68 100644 --- a/examples/cookbook/lists/horizontal_list/pubspec.yaml +++ b/examples/cookbook/lists/horizontal_list/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/lists/long_lists/pubspec.yaml b/examples/cookbook/lists/long_lists/pubspec.yaml index fb831dace9..7410bbd873 100644 --- a/examples/cookbook/lists/long_lists/pubspec.yaml +++ b/examples/cookbook/lists/long_lists/pubspec.yaml @@ -2,7 +2,7 @@ name: long_lists description: Example for long_lists cookbook recipe environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/lists/mixed_list/pubspec.yaml b/examples/cookbook/lists/mixed_list/pubspec.yaml index eeba64c6c6..f89d1fba75 100644 --- a/examples/cookbook/lists/mixed_list/pubspec.yaml +++ b/examples/cookbook/lists/mixed_list/pubspec.yaml @@ -2,7 +2,7 @@ name: mixed_lists description: Example for mixed_lists cookbook recipe environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/lists/spaced_items/pubspec.yaml b/examples/cookbook/lists/spaced_items/pubspec.yaml index 2e5e408f2f..48da201a34 100644 --- a/examples/cookbook/lists/spaced_items/pubspec.yaml +++ b/examples/cookbook/lists/spaced_items/pubspec.yaml @@ -2,7 +2,7 @@ name: spaced_items description: Example for spaced_items cookbook recipe environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/maintenance/error_reporting/pubspec.yaml b/examples/cookbook/maintenance/error_reporting/pubspec.yaml index 61f87dadc7..528067ab54 100644 --- a/examples/cookbook/maintenance/error_reporting/pubspec.yaml +++ b/examples/cookbook/maintenance/error_reporting/pubspec.yaml @@ -3,7 +3,7 @@ description: Error reporting example using sentry. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/navigation/hero_animations/pubspec.yaml b/examples/cookbook/navigation/hero_animations/pubspec.yaml index 1ab9d02342..da1874224b 100644 --- a/examples/cookbook/navigation/hero_animations/pubspec.yaml +++ b/examples/cookbook/navigation/hero_animations/pubspec.yaml @@ -2,7 +2,7 @@ name: hero_animations description: Hero animations environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/navigation/named_routes/pubspec.yaml b/examples/cookbook/navigation/named_routes/pubspec.yaml index bae01655be..f5824c5813 100644 --- a/examples/cookbook/navigation/named_routes/pubspec.yaml +++ b/examples/cookbook/navigation/named_routes/pubspec.yaml @@ -2,7 +2,7 @@ name: navigate_with_arguments description: Use Form widget to perform form validation. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/navigation/navigate_with_arguments/pubspec.yaml b/examples/cookbook/navigation/navigate_with_arguments/pubspec.yaml index bae01655be..f5824c5813 100644 --- a/examples/cookbook/navigation/navigate_with_arguments/pubspec.yaml +++ b/examples/cookbook/navigation/navigate_with_arguments/pubspec.yaml @@ -2,7 +2,7 @@ name: navigate_with_arguments description: Use Form widget to perform form validation. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/navigation/navigation_basics/pubspec.yaml b/examples/cookbook/navigation/navigation_basics/pubspec.yaml index 36f4cd1598..a7c611cd17 100644 --- a/examples/cookbook/navigation/navigation_basics/pubspec.yaml +++ b/examples/cookbook/navigation/navigation_basics/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/navigation/passing_data/pubspec.yaml b/examples/cookbook/navigation/passing_data/pubspec.yaml index d67af2fb7f..98d8be2669 100644 --- a/examples/cookbook/navigation/passing_data/pubspec.yaml +++ b/examples/cookbook/navigation/passing_data/pubspec.yaml @@ -2,7 +2,7 @@ name: passing_data description: Passing data environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/navigation/returning_data/pubspec.yaml b/examples/cookbook/navigation/returning_data/pubspec.yaml index fb8f88f8fd..ea3afe5592 100644 --- a/examples/cookbook/navigation/returning_data/pubspec.yaml +++ b/examples/cookbook/navigation/returning_data/pubspec.yaml @@ -2,7 +2,7 @@ name: returning_data description: Returning data environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/networking/authenticated_requests/pubspec.yaml b/examples/cookbook/networking/authenticated_requests/pubspec.yaml index 07e6e080bd..101c435c24 100644 --- a/examples/cookbook/networking/authenticated_requests/pubspec.yaml +++ b/examples/cookbook/networking/authenticated_requests/pubspec.yaml @@ -2,7 +2,7 @@ name: hero_animations description: Hero animations environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/networking/background_parsing/pubspec.yaml b/examples/cookbook/networking/background_parsing/pubspec.yaml index f7ba407894..d01cb5c25e 100644 --- a/examples/cookbook/networking/background_parsing/pubspec.yaml +++ b/examples/cookbook/networking/background_parsing/pubspec.yaml @@ -2,7 +2,7 @@ name: background_parsing description: Background parsing environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/networking/delete_data/pubspec.yaml b/examples/cookbook/networking/delete_data/pubspec.yaml index 0a26c5edc9..cca8af82a7 100644 --- a/examples/cookbook/networking/delete_data/pubspec.yaml +++ b/examples/cookbook/networking/delete_data/pubspec.yaml @@ -2,7 +2,7 @@ name: delete_data description: Delete Data environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/networking/fetch_data/pubspec.yaml b/examples/cookbook/networking/fetch_data/pubspec.yaml index b53332f7f2..d0ca76c38f 100644 --- a/examples/cookbook/networking/fetch_data/pubspec.yaml +++ b/examples/cookbook/networking/fetch_data/pubspec.yaml @@ -2,7 +2,7 @@ name: fetch_data description: Fetch Data environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/networking/send_data/pubspec.yaml b/examples/cookbook/networking/send_data/pubspec.yaml index e3d4209b86..a59e16b4a9 100644 --- a/examples/cookbook/networking/send_data/pubspec.yaml +++ b/examples/cookbook/networking/send_data/pubspec.yaml @@ -2,7 +2,7 @@ name: send_data description: Send data environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/networking/update_data/pubspec.yaml b/examples/cookbook/networking/update_data/pubspec.yaml index d311ca8679..54751aaaec 100644 --- a/examples/cookbook/networking/update_data/pubspec.yaml +++ b/examples/cookbook/networking/update_data/pubspec.yaml @@ -2,7 +2,7 @@ name: update_data description: Update Data environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/networking/web_sockets/pubspec.yaml b/examples/cookbook/networking/web_sockets/pubspec.yaml index 14155ea41b..4686b4908a 100644 --- a/examples/cookbook/networking/web_sockets/pubspec.yaml +++ b/examples/cookbook/networking/web_sockets/pubspec.yaml @@ -2,7 +2,7 @@ name: web_sockets description: Web Sockets environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/persistence/key_value/pubspec.yaml b/examples/cookbook/persistence/key_value/pubspec.yaml index b208be021d..11df83c717 100644 --- a/examples/cookbook/persistence/key_value/pubspec.yaml +++ b/examples/cookbook/persistence/key_value/pubspec.yaml @@ -5,7 +5,7 @@ description: >- shows how to use the shared_preferences package. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/persistence/reading_writing_files/pubspec.yaml b/examples/cookbook/persistence/reading_writing_files/pubspec.yaml index 09ca88cec9..6b931793ef 100644 --- a/examples/cookbook/persistence/reading_writing_files/pubspec.yaml +++ b/examples/cookbook/persistence/reading_writing_files/pubspec.yaml @@ -2,7 +2,7 @@ name: reading_writing_files description: Reading and Writing Files environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/persistence/sqlite/pubspec.yaml b/examples/cookbook/persistence/sqlite/pubspec.yaml index 69abca2867..46a0bf6f78 100644 --- a/examples/cookbook/persistence/sqlite/pubspec.yaml +++ b/examples/cookbook/persistence/sqlite/pubspec.yaml @@ -2,7 +2,7 @@ name: sqlite description: Example of using sqflite plugin to access SQLite database. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/plugins/google_mobile_ads/pubspec.yaml b/examples/cookbook/plugins/google_mobile_ads/pubspec.yaml index 07c3993c8a..f0683468f1 100644 --- a/examples/cookbook/plugins/google_mobile_ads/pubspec.yaml +++ b/examples/cookbook/plugins/google_mobile_ads/pubspec.yaml @@ -2,7 +2,7 @@ name: google_mobile_ads_example description: Google mobile ads environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/plugins/picture_using_camera/pubspec.yaml b/examples/cookbook/plugins/picture_using_camera/pubspec.yaml index 1b01a1f39f..5d103396a6 100644 --- a/examples/cookbook/plugins/picture_using_camera/pubspec.yaml +++ b/examples/cookbook/plugins/picture_using_camera/pubspec.yaml @@ -2,7 +2,7 @@ name: picture_using_camera description: A new Flutter project. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/plugins/play_video/pubspec.yaml b/examples/cookbook/plugins/play_video/pubspec.yaml index 6d7336d44d..4f72d42368 100644 --- a/examples/cookbook/plugins/play_video/pubspec.yaml +++ b/examples/cookbook/plugins/play_video/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: none # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/testing/integration/introduction/pubspec.yaml b/examples/cookbook/testing/integration/introduction/pubspec.yaml index c2115cf24f..7df23df2cd 100644 --- a/examples/cookbook/testing/integration/introduction/pubspec.yaml +++ b/examples/cookbook/testing/integration/introduction/pubspec.yaml @@ -4,7 +4,7 @@ publish_to: none # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/testing/integration/profiling/pubspec.yaml b/examples/cookbook/testing/integration/profiling/pubspec.yaml index 8cf2299e5f..48491db5db 100644 --- a/examples/cookbook/testing/integration/profiling/pubspec.yaml +++ b/examples/cookbook/testing/integration/profiling/pubspec.yaml @@ -2,7 +2,7 @@ name: scrolling description: A new Flutter project. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/testing/unit/counter_app/pubspec.yaml b/examples/cookbook/testing/unit/counter_app/pubspec.yaml index 50b3024ea8..0a04b7300d 100644 --- a/examples/cookbook/testing/unit/counter_app/pubspec.yaml +++ b/examples/cookbook/testing/unit/counter_app/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/testing/unit/mocking/pubspec.yaml b/examples/cookbook/testing/unit/mocking/pubspec.yaml index 0c693f12b9..fa4653f68a 100644 --- a/examples/cookbook/testing/unit/mocking/pubspec.yaml +++ b/examples/cookbook/testing/unit/mocking/pubspec.yaml @@ -2,7 +2,7 @@ name: mocking description: Use the Mockito package to mimic the behavior of services for testing. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: @@ -17,7 +17,7 @@ dev_dependencies: flutter_test: sdk: flutter mockito: ^5.4.4 - build_runner: ^2.4.8 + build_runner: ^2.4.9 flutter: uses-material-design: true diff --git a/examples/cookbook/testing/widget/finders/pubspec.yaml b/examples/cookbook/testing/widget/finders/pubspec.yaml index 653b4dbc26..2d2a3923cb 100644 --- a/examples/cookbook/testing/widget/finders/pubspec.yaml +++ b/examples/cookbook/testing/widget/finders/pubspec.yaml @@ -2,7 +2,7 @@ name: finders description: A new Flutter project. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/testing/widget/introduction/pubspec.yaml b/examples/cookbook/testing/widget/introduction/pubspec.yaml index 69431344e8..dc4c68530c 100644 --- a/examples/cookbook/testing/widget/introduction/pubspec.yaml +++ b/examples/cookbook/testing/widget/introduction/pubspec.yaml @@ -2,7 +2,7 @@ name: introduction description: A new Flutter project. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/testing/widget/scrolling/pubspec.yaml b/examples/cookbook/testing/widget/scrolling/pubspec.yaml index 3dc126506b..aa87dccf1d 100644 --- a/examples/cookbook/testing/widget/scrolling/pubspec.yaml +++ b/examples/cookbook/testing/widget/scrolling/pubspec.yaml @@ -2,7 +2,7 @@ name: scrolling description: A new Flutter project. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/cookbook/testing/widget/tap_drag/pubspec.yaml b/examples/cookbook/testing/widget/tap_drag/pubspec.yaml index 653b4dbc26..2d2a3923cb 100644 --- a/examples/cookbook/testing/widget/tap_drag/pubspec.yaml +++ b/examples/cookbook/testing/widget/tap_drag/pubspec.yaml @@ -2,7 +2,7 @@ name: finders description: A new Flutter project. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/data-and-backend/json/pubspec.yaml b/examples/data-and-backend/json/pubspec.yaml index 854e556bc2..b967db1d29 100644 --- a/examples/data-and-backend/json/pubspec.yaml +++ b/examples/data-and-backend/json/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: json_annotation: ^4.8.1 @@ -13,5 +13,5 @@ dependencies: dev_dependencies: example_utils: path: ../../example_utils - build_runner: ^2.4.8 + build_runner: ^2.4.9 json_serializable: ^6.7.1 diff --git a/examples/deployment/obfuscate/pubspec.yaml b/examples/deployment/obfuscate/pubspec.yaml index 726db1a81e..a430b5df40 100644 --- a/examples/deployment/obfuscate/pubspec.yaml +++ b/examples/deployment/obfuscate/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/example_utils/pubspec.yaml b/examples/example_utils/pubspec.yaml index 2f39bcc218..d3943546cc 100644 --- a/examples/example_utils/pubspec.yaml +++ b/examples/example_utils/pubspec.yaml @@ -3,7 +3,7 @@ description: Utils for examples and code snippets on docs.flutter.dev. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter_lints: ^4.0.0 diff --git a/examples/get-started/codelab_web/lib/main.dart b/examples/get-started/codelab_web/lib/main.dart index 5168f8e317..0dacd381fc 100644 --- a/examples/get-started/codelab_web/lib/main.dart +++ b/examples/get-started/codelab_web/lib/main.dart @@ -120,13 +120,13 @@ class _SignUpFormState extends State { ), TextButton( style: ButtonStyle( - foregroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + foregroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.white; }), - backgroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + backgroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.blue; }), diff --git a/examples/get-started/codelab_web/lib/starter.dart b/examples/get-started/codelab_web/lib/starter.dart index 29ac2720dc..37a9bd1a66 100644 --- a/examples/get-started/codelab_web/lib/starter.dart +++ b/examples/get-started/codelab_web/lib/starter.dart @@ -79,13 +79,13 @@ class _SignUpFormState extends State { ), TextButton( style: ButtonStyle( - foregroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + foregroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.white; }), - backgroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + backgroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.blue; }), diff --git a/examples/get-started/codelab_web/lib/step1.dart b/examples/get-started/codelab_web/lib/step1.dart index 26087177a5..b625d16760 100644 --- a/examples/get-started/codelab_web/lib/step1.dart +++ b/examples/get-started/codelab_web/lib/step1.dart @@ -106,13 +106,13 @@ class _SignUpFormState extends State { ), TextButton( style: ButtonStyle( - foregroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + foregroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.white; }), - backgroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + backgroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.blue; }), diff --git a/examples/get-started/codelab_web/lib/step2.dart b/examples/get-started/codelab_web/lib/step2.dart index 85a465d950..75a823f415 100644 --- a/examples/get-started/codelab_web/lib/step2.dart +++ b/examples/get-started/codelab_web/lib/step2.dart @@ -127,13 +127,13 @@ class _SignUpFormState extends State { // #docregion on-pressed TextButton( style: ButtonStyle( - foregroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + foregroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.white; }), - backgroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + backgroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.blue; }), diff --git a/examples/get-started/codelab_web/lib/step3.dart b/examples/get-started/codelab_web/lib/step3.dart index 1c0cca0c93..3f5a71da61 100644 --- a/examples/get-started/codelab_web/lib/step3.dart +++ b/examples/get-started/codelab_web/lib/step3.dart @@ -122,13 +122,13 @@ class _SignUpFormState extends State { ), TextButton( style: ButtonStyle( - foregroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + foregroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.white; }), - backgroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + backgroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.blue; }), diff --git a/examples/get-started/codelab_web/pubspec.yaml b/examples/get-started/codelab_web/pubspec.yaml index 16e14fde88..a3b4013524 100644 --- a/examples/get-started/codelab_web/pubspec.yaml +++ b/examples/get-started/codelab_web/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/get-started/flutter-for/android_devs/pubspec.yaml b/examples/get-started/flutter-for/android_devs/pubspec.yaml index 39ba8be51d..f9312dad82 100644 --- a/examples/get-started/flutter-for/android_devs/pubspec.yaml +++ b/examples/get-started/flutter-for/android_devs/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/get-started/flutter-for/declarative/pubspec.yaml b/examples/get-started/flutter-for/declarative/pubspec.yaml index 06892cb212..a119a2ceab 100644 --- a/examples/get-started/flutter-for/declarative/pubspec.yaml +++ b/examples/get-started/flutter-for/declarative/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/get-started/flutter-for/ios_devs/pubspec.yaml b/examples/get-started/flutter-for/ios_devs/pubspec.yaml index 7f49124464..55820d83b9 100644 --- a/examples/get-started/flutter-for/ios_devs/pubspec.yaml +++ b/examples/get-started/flutter-for/ios_devs/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/get-started/flutter-for/react_native_devs/my_widgets/pubspec.yaml b/examples/get-started/flutter-for/react_native_devs/my_widgets/pubspec.yaml index 1e50713ae8..7453a3cb63 100644 --- a/examples/get-started/flutter-for/react_native_devs/my_widgets/pubspec.yaml +++ b/examples/get-started/flutter-for/react_native_devs/my_widgets/pubspec.yaml @@ -3,7 +3,7 @@ description: A library for `react_native_devs` to import. version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dev_dependencies: example_utils: diff --git a/examples/get-started/flutter-for/react_native_devs/pubspec.yaml b/examples/get-started/flutter-for/react_native_devs/pubspec.yaml index 79afe495ff..84cd214a44 100644 --- a/examples/get-started/flutter-for/react_native_devs/pubspec.yaml +++ b/examples/get-started/flutter-for/react_native_devs/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/get-started/flutter-for/web_devs/pubspec.yaml b/examples/get-started/flutter-for/web_devs/pubspec.yaml index 6631added4..17a9f990a6 100644 --- a/examples/get-started/flutter-for/web_devs/pubspec.yaml +++ b/examples/get-started/flutter-for/web_devs/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/get-started/flutter-for/xamarin_devs/pubspec.yaml b/examples/get-started/flutter-for/xamarin_devs/pubspec.yaml index 1eee3e1c65..d95ff52e1e 100644 --- a/examples/get-started/flutter-for/xamarin_devs/pubspec.yaml +++ b/examples/get-started/flutter-for/xamarin_devs/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/googleapis/pubspec.yaml b/examples/googleapis/pubspec.yaml index 140caa7e0f..9d3c47d6b3 100644 --- a/examples/googleapis/pubspec.yaml +++ b/examples/googleapis/pubspec.yaml @@ -2,7 +2,7 @@ name: google_sign_in_example publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: collection: any # Pull the version of collection from Flutter. diff --git a/examples/integration_test/pubspec.yaml b/examples/integration_test/pubspec.yaml index 5fe3fb81ab..28caf50dec 100644 --- a/examples/integration_test/pubspec.yaml +++ b/examples/integration_test/pubspec.yaml @@ -3,7 +3,7 @@ publish_to: none version: 0.0.1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/integration_test_migration/pubspec.yaml b/examples/integration_test_migration/pubspec.yaml index 32fb191f20..32934b7053 100644 --- a/examples/integration_test_migration/pubspec.yaml +++ b/examples/integration_test_migration/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/internationalization/add_language/lib/nn_intl.dart b/examples/internationalization/add_language/lib/nn_intl.dart index b77b77281c..3537c8d84a 100644 --- a/examples/internationalization/add_language/lib/nn_intl.dart +++ b/examples/internationalization/add_language/lib/nn_intl.dart @@ -798,4 +798,10 @@ class NnMaterialLocalizations extends GlobalMaterialLocalizations { @override String get shareButtonLabel => 'Share...'; + + @override + String get clearButtonTooltip => 'Clear text'; + + @override + String get selectedDateLabel => 'Selected'; } diff --git a/examples/internationalization/add_language/pubspec.yaml b/examples/internationalization/add_language/pubspec.yaml index af58da25cf..3a9f28c7c9 100644 --- a/examples/internationalization/add_language/pubspec.yaml +++ b/examples/internationalization/add_language/pubspec.yaml @@ -2,7 +2,7 @@ name: add_language description: An i18n app example that adds a supported language environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/internationalization/gen_l10n_example/pubspec.yaml b/examples/internationalization/gen_l10n_example/pubspec.yaml index 6ef3c7a75c..6053ac8e35 100644 --- a/examples/internationalization/gen_l10n_example/pubspec.yaml +++ b/examples/internationalization/gen_l10n_example/pubspec.yaml @@ -4,7 +4,7 @@ description: >- Example of an internationalized Flutter app that uses `flutter gen-l10n`. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 # #docregion flutter-localizations dependencies: diff --git a/examples/internationalization/intl_example/pubspec.yaml b/examples/internationalization/intl_example/pubspec.yaml index 84b4691a36..529192ceda 100644 --- a/examples/internationalization/intl_example/pubspec.yaml +++ b/examples/internationalization/intl_example/pubspec.yaml @@ -2,7 +2,7 @@ name: intl_example description: Example of a Flutter app using the intl library services. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: @@ -18,5 +18,9 @@ dev_dependencies: sdk: flutter intl_translation: ^0.19.0 +# TODO(parlough): Remove this override once intl_translation 0.20 is published. +dependency_overrides: + intl: 0.19.0 + flutter: uses-material-design: true diff --git a/examples/internationalization/minimal/pubspec.yaml b/examples/internationalization/minimal/pubspec.yaml index 56c1f45af9..927765c8fa 100644 --- a/examples/internationalization/minimal/pubspec.yaml +++ b/examples/internationalization/minimal/pubspec.yaml @@ -2,7 +2,7 @@ name: l10n_example description: A minimal example of a localized Flutter app environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/base/pubspec.yaml b/examples/layout/base/pubspec.yaml index b4d746ba56..e6ce15115b 100644 --- a/examples/layout/base/pubspec.yaml +++ b/examples/layout/base/pubspec.yaml @@ -4,7 +4,7 @@ description: > version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/card_and_stack/pubspec.yaml b/examples/layout/card_and_stack/pubspec.yaml index 45c835aef1..56e0eec9e7 100644 --- a/examples/layout/card_and_stack/pubspec.yaml +++ b/examples/layout/card_and_stack/pubspec.yaml @@ -4,7 +4,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/constraints/pubspec.yaml b/examples/layout/constraints/pubspec.yaml index 8a677de37d..38b0ece6a6 100644 --- a/examples/layout/constraints/pubspec.yaml +++ b/examples/layout/constraints/pubspec.yaml @@ -3,7 +3,7 @@ description: example for ui/layout/constraints version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/container/pubspec.yaml b/examples/layout/container/pubspec.yaml index 25259f34d8..7f9e837093 100644 --- a/examples/layout/container/pubspec.yaml +++ b/examples/layout/container/pubspec.yaml @@ -4,7 +4,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/grid_and_list/pubspec.yaml b/examples/layout/grid_and_list/pubspec.yaml index 45c835aef1..56e0eec9e7 100644 --- a/examples/layout/grid_and_list/pubspec.yaml +++ b/examples/layout/grid_and_list/pubspec.yaml @@ -4,7 +4,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/lakes/interactive/pubspec.yaml b/examples/layout/lakes/interactive/pubspec.yaml index a23bb5d70a..aa8a3a7d69 100644 --- a/examples/layout/lakes/interactive/pubspec.yaml +++ b/examples/layout/lakes/interactive/pubspec.yaml @@ -5,7 +5,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/lakes/step2/pubspec.yaml b/examples/layout/lakes/step2/pubspec.yaml index ce97e8e069..a60375d735 100644 --- a/examples/layout/lakes/step2/pubspec.yaml +++ b/examples/layout/lakes/step2/pubspec.yaml @@ -4,7 +4,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/lakes/step3/pubspec.yaml b/examples/layout/lakes/step3/pubspec.yaml index ce97e8e069..a60375d735 100644 --- a/examples/layout/lakes/step3/pubspec.yaml +++ b/examples/layout/lakes/step3/pubspec.yaml @@ -4,7 +4,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/lakes/step4/pubspec.yaml b/examples/layout/lakes/step4/pubspec.yaml index ce97e8e069..a60375d735 100644 --- a/examples/layout/lakes/step4/pubspec.yaml +++ b/examples/layout/lakes/step4/pubspec.yaml @@ -4,7 +4,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/lakes/step5/pubspec.yaml b/examples/layout/lakes/step5/pubspec.yaml index b8dc2a3987..73bd054ace 100644 --- a/examples/layout/lakes/step5/pubspec.yaml +++ b/examples/layout/lakes/step5/pubspec.yaml @@ -4,7 +4,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/lakes/step6/pubspec.yaml b/examples/layout/lakes/step6/pubspec.yaml index b8dc2a3987..73bd054ace 100644 --- a/examples/layout/lakes/step6/pubspec.yaml +++ b/examples/layout/lakes/step6/pubspec.yaml @@ -4,7 +4,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/non_material/pubspec.yaml b/examples/layout/non_material/pubspec.yaml index 0e2a397f66..b640dbffa8 100644 --- a/examples/layout/non_material/pubspec.yaml +++ b/examples/layout/non_material/pubspec.yaml @@ -4,7 +4,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/pavlova/pubspec.yaml b/examples/layout/pavlova/pubspec.yaml index 1e3b632cdd..e59c9cd895 100644 --- a/examples/layout/pavlova/pubspec.yaml +++ b/examples/layout/pavlova/pubspec.yaml @@ -4,7 +4,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/row_column/pubspec.yaml b/examples/layout/row_column/pubspec.yaml index 3ebda4c96d..dc7694bdd3 100644 --- a/examples/layout/row_column/pubspec.yaml +++ b/examples/layout/row_column/pubspec.yaml @@ -4,7 +4,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/layout/sizing/pubspec.yaml b/examples/layout/sizing/pubspec.yaml index 3ebda4c96d..dc7694bdd3 100644 --- a/examples/layout/sizing/pubspec.yaml +++ b/examples/layout/sizing/pubspec.yaml @@ -4,7 +4,7 @@ description: >- version: 1.0.0 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/perf/concurrency/isolates/pubspec.yaml b/examples/perf/concurrency/isolates/pubspec.yaml index 35b16c073c..baa57f1ce2 100644 --- a/examples/perf/concurrency/isolates/pubspec.yaml +++ b/examples/perf/concurrency/isolates/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/perf/deferred_components/pubspec.yaml b/examples/perf/deferred_components/pubspec.yaml index 0927ab1d12..56c9f4c6a9 100644 --- a/examples/perf/deferred_components/pubspec.yaml +++ b/examples/perf/deferred_components/pubspec.yaml @@ -3,7 +3,7 @@ description: Samples to showcase deferred component imports/loading. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/platform_integration/ffi/pubspec.yaml b/examples/platform_integration/ffi/pubspec.yaml index a6428af62a..07c39d9cf7 100644 --- a/examples/platform_integration/ffi/pubspec.yaml +++ b/examples/platform_integration/ffi/pubspec.yaml @@ -7,7 +7,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/platform_integration/pigeon/pubspec.yaml b/examples/platform_integration/pigeon/pubspec.yaml index 20e2655037..c6e5543810 100644 --- a/examples/platform_integration/pigeon/pubspec.yaml +++ b/examples/platform_integration/pigeon/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/platform_integration/platform_channels/pubspec.yaml b/examples/platform_integration/platform_channels/pubspec.yaml index 2b9fe5cae5..fd6306fd60 100644 --- a/examples/platform_integration/platform_channels/pubspec.yaml +++ b/examples/platform_integration/platform_channels/pubspec.yaml @@ -8,7 +8,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/platform_integration/platform_views/pubspec.yaml b/examples/platform_integration/platform_views/pubspec.yaml index c3d5a6348d..8079a1bcd9 100644 --- a/examples/platform_integration/platform_views/pubspec.yaml +++ b/examples/platform_integration/platform_views/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/platform_integration/plugin_api_migration/pubspec.yaml b/examples/platform_integration/plugin_api_migration/pubspec.yaml index 63cf79926d..4554a2af29 100644 --- a/examples/platform_integration/plugin_api_migration/pubspec.yaml +++ b/examples/platform_integration/plugin_api_migration/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/resources/architectural_overview/pubspec.yaml b/examples/resources/architectural_overview/pubspec.yaml index 09e5141ee2..bc00b72422 100644 --- a/examples/resources/architectural_overview/pubspec.yaml +++ b/examples/resources/architectural_overview/pubspec.yaml @@ -3,7 +3,7 @@ description: Samples for the Flutter architectural overview. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/resources/dart_swift_concurrency/pubspec.yaml b/examples/resources/dart_swift_concurrency/pubspec.yaml index 45959f9033..3f656c5f9d 100644 --- a/examples/resources/dart_swift_concurrency/pubspec.yaml +++ b/examples/resources/dart_swift_concurrency/pubspec.yaml @@ -3,7 +3,7 @@ description: Examples for the Flutter concurrency for Swift developers article. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/state_mgmt/simple/pubspec.yaml b/examples/state_mgmt/simple/pubspec.yaml index f9f4661cbc..6680998433 100644 --- a/examples/state_mgmt/simple/pubspec.yaml +++ b/examples/state_mgmt/simple/pubspec.yaml @@ -3,7 +3,7 @@ description: Sample state management code. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/testing/code_debugging/pubspec.yaml b/examples/testing/code_debugging/pubspec.yaml index fa3b70ced2..5f65c2ec1a 100644 --- a/examples/testing/code_debugging/pubspec.yaml +++ b/examples/testing/code_debugging/pubspec.yaml @@ -3,7 +3,7 @@ description: Examples to illustrate debugging your Flutter code. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/testing/common_errors/pubspec.yaml b/examples/testing/common_errors/pubspec.yaml index 8c9f50c314..47fe2330bc 100644 --- a/examples/testing/common_errors/pubspec.yaml +++ b/examples/testing/common_errors/pubspec.yaml @@ -3,7 +3,7 @@ description: Excerpts for common Flutter errors. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/testing/errors/pubspec.yaml b/examples/testing/errors/pubspec.yaml index 5f6d517ca4..278f4d866c 100644 --- a/examples/testing/errors/pubspec.yaml +++ b/examples/testing/errors/pubspec.yaml @@ -3,7 +3,7 @@ description: An error handling example. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/testing/integration_tests/how_to/pubspec.yaml b/examples/testing/integration_tests/how_to/pubspec.yaml index 794a1bd164..c7f3afb537 100644 --- a/examples/testing/integration_tests/how_to/pubspec.yaml +++ b/examples/testing/integration_tests/how_to/pubspec.yaml @@ -3,7 +3,7 @@ description: An example of setting up an integration test. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/testing/native_debugging/pubspec.yaml b/examples/testing/native_debugging/pubspec.yaml index 1540260f21..afdce7682e 100644 --- a/examples/testing/native_debugging/pubspec.yaml +++ b/examples/testing/native_debugging/pubspec.yaml @@ -1,11 +1,11 @@ name: native_debugging description: Demonstration of native code debugging -sdk: ^3.3.0 +sdk: ^3.4.0 version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/tools/pubspec.yaml b/examples/tools/pubspec.yaml index 9e71c01e6f..290e0b7004 100644 --- a/examples/tools/pubspec.yaml +++ b/examples/tools/pubspec.yaml @@ -6,7 +6,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/ui/adaptive_app_demos/lib/widgets/buttons.dart b/examples/ui/adaptive_app_demos/lib/widgets/buttons.dart index 3989108035..623c6c5cec 100644 --- a/examples/ui/adaptive_app_demos/lib/widgets/buttons.dart +++ b/examples/ui/adaptive_app_demos/lib/widgets/buttons.dart @@ -16,8 +16,8 @@ class StyledTextButton extends StatelessWidget { Widget build(BuildContext context) { return TextButton( style: ButtonStyle( - padding: MaterialStateProperty.all(const EdgeInsets.all(Insets.small)), - textStyle: MaterialStateProperty.all(TextStyles.buttonText2), + padding: WidgetStateProperty.all(const EdgeInsets.all(Insets.small)), + textStyle: WidgetStateProperty.all(TextStyles.buttonText2), ), onPressed: onPressed, child: child, diff --git a/examples/ui/adaptive_app_demos/pubspec.yaml b/examples/ui/adaptive_app_demos/pubspec.yaml index 4e1edd61ff..aac75666f4 100644 --- a/examples/ui/adaptive_app_demos/pubspec.yaml +++ b/examples/ui/adaptive_app_demos/pubspec.yaml @@ -3,7 +3,7 @@ description: Demo code for adaptive app development techniques. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/ui/advanced/actions_and_shortcuts/pubspec.yaml b/examples/ui/advanced/actions_and_shortcuts/pubspec.yaml index 5793257bd6..adb646a8c2 100644 --- a/examples/ui/advanced/actions_and_shortcuts/pubspec.yaml +++ b/examples/ui/advanced/actions_and_shortcuts/pubspec.yaml @@ -3,7 +3,7 @@ description: Sample actions and shortcuts code. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/ui/advanced/focus/pubspec.yaml b/examples/ui/advanced/focus/pubspec.yaml index c0d6910ac6..2c0db24188 100644 --- a/examples/ui/advanced/focus/pubspec.yaml +++ b/examples/ui/advanced/focus/pubspec.yaml @@ -3,7 +3,7 @@ description: Sample focus system code. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/ui/assets_and_images/pubspec.yaml b/examples/ui/assets_and_images/pubspec.yaml index b3ecf297b7..603ae9399f 100644 --- a/examples/ui/assets_and_images/pubspec.yaml +++ b/examples/ui/assets_and_images/pubspec.yaml @@ -3,7 +3,7 @@ description: An example project showing how to declare and load assets. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/ui/interactive/pubspec.yaml b/examples/ui/interactive/pubspec.yaml index a3f1002a9b..49758070b9 100644 --- a/examples/ui/interactive/pubspec.yaml +++ b/examples/ui/interactive/pubspec.yaml @@ -2,7 +2,7 @@ name: interactive description: Sample code for interactive.md environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/ui/widgets_intro/pubspec.yaml b/examples/ui/widgets_intro/pubspec.yaml index b054f03fd5..3a0312c994 100644 --- a/examples/ui/widgets_intro/pubspec.yaml +++ b/examples/ui/widgets_intro/pubspec.yaml @@ -3,7 +3,7 @@ description: Sample state management code. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/examples/visual_debugging/pubspec.yaml b/examples/visual_debugging/pubspec.yaml index 30d3d83fc9..3982e4f25e 100644 --- a/examples/visual_debugging/pubspec.yaml +++ b/examples/visual_debugging/pubspec.yaml @@ -3,7 +3,7 @@ publish_to: none description: Examples of visual debugging. environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: flutter: diff --git a/pubspec.yaml b/pubspec.yaml index 4ada0901cf..a21c969feb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,10 +2,10 @@ name: docs_flutter_dev publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dev_dependencies: - build_runner: ^2.4.8 + build_runner: ^2.4.9 code_excerpt_updater: path: site-shared/packages/code_excerpt_updater code_excerpter: diff --git a/src/_data/site.yml b/src/_data/site.yml index e75a2d691c..639fb4f09b 100644 --- a/src/_data/site.yml +++ b/src/_data/site.yml @@ -94,7 +94,7 @@ targetmin: ## Software current versions appnow: - flutter: '3.19.6' + flutter: '3.22.0' vscode: '1.89' android_studio: '2023.3' android_sdk: '34.0.5' diff --git a/src/content/cookbook/effects/nested-nav.md b/src/content/cookbook/effects/nested-nav.md index bd71edae11..e2b7291a1f 100644 --- a/src/content/cookbook/effects/nested-nav.md +++ b/src/content/cookbook/effects/nested-nav.md @@ -613,7 +613,7 @@ class SelectDevicePage extends StatelessWidget { height: 54, child: ElevatedButton( style: ButtonStyle( - backgroundColor: MaterialStateColor.resolveWith((states) { + backgroundColor: WidgetStateColor.resolveWith((states) { return const Color(0xFF222222); }), ), @@ -729,14 +729,14 @@ class FinishedPage extends StatelessWidget { const SizedBox(height: 32), ElevatedButton( style: ButtonStyle( - padding: MaterialStateProperty.resolveWith((states) { + padding: WidgetStateProperty.resolveWith((states) { return const EdgeInsets.symmetric( horizontal: 24, vertical: 12); }), - backgroundColor: MaterialStateColor.resolveWith((states) { + backgroundColor: WidgetStateColor.resolveWith((states) { return const Color(0xFF222222); }), - shape: MaterialStateProperty.resolveWith((states) { + shape: WidgetStateProperty.resolveWith((states) { return const StadiumBorder(); }), ), diff --git a/src/content/get-started/codelab-web.md b/src/content/get-started/codelab-web.md index dc546ea7b2..aec2585f49 100644 --- a/src/content/get-started/codelab-web.md +++ b/src/content/get-started/codelab-web.md @@ -211,13 +211,13 @@ class _SignUpFormState extends State { ), TextButton( style: ButtonStyle( - foregroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + foregroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.white; }), - backgroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + backgroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.blue; }), @@ -507,13 +507,13 @@ screen only when the form is completely filled in: ```dart TextButton( style: ButtonStyle( - foregroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + foregroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.white; }), - backgroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + backgroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.blue; }), @@ -1000,13 +1000,13 @@ class _SignUpFormState extends State { ), TextButton( style: ButtonStyle( - foregroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + foregroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.white; }), - backgroundColor: MaterialStateProperty.resolveWith((states) { - return states.contains(MaterialState.disabled) + backgroundColor: WidgetStateProperty.resolveWith((states) { + return states.contains(WidgetState.disabled) ? null : Colors.blue; }), diff --git a/src/content/release/release-notes/index.md b/src/content/release/release-notes/index.md index 9e414f1262..b7b790fcc2 100644 --- a/src/content/release/release-notes/index.md +++ b/src/content/release/release-notes/index.md @@ -12,7 +12,7 @@ For information about bug-fix releases, check out [Hotfixes to the Stable Channel][] on the Flutter wiki. ::: -* 3.22.0 _(Tentative)_ +* 3.22.0 {% comment %} * [3.22.0 announcement][] {% endcomment -%} diff --git a/src/content/tools/pubspec.md b/src/content/tools/pubspec.md index 354e52d7cc..a708a1faba 100644 --- a/src/content/tools/pubspec.md +++ b/src/content/tools/pubspec.md @@ -64,7 +64,7 @@ publish_to: none version: 1.0.0+1 environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: [!flutter:!] # Required for every Flutter project diff --git a/tool/flutter_site/pubspec.yaml b/tool/flutter_site/pubspec.yaml index 72bcb2ab91..dea3479eb4 100644 --- a/tool/flutter_site/pubspec.yaml +++ b/tool/flutter_site/pubspec.yaml @@ -3,7 +3,7 @@ description: Dart-based tools for building docs.flutter.dev. publish_to: none environment: - sdk: ^3.3.0 + sdk: ^3.4.0 dependencies: args: ^2.4.2 From d822d0a1460ba84c599eca49af09ffee93da7772 Mon Sep 17 00:00:00 2001 From: John Ryan Date: Mon, 13 May 2024 21:45:06 -0700 Subject: [PATCH 084/109] Update "Delete data on the internet" to handle empty maps (#10585) Fix "Delete data on the internet" cookbook sample. The Album.fromJson method doesn't handle an empty map, which is returned from the jsonplaceholder API when the DELETE method is called. Fixes #10577 --------- Co-authored-by: Parker Lougheed --- .../networking/delete_data/lib/main.dart | 12 +++++++----- src/content/cookbook/networking/delete-data.md | 16 +++++++++------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/examples/cookbook/networking/delete_data/lib/main.dart b/examples/cookbook/networking/delete_data/lib/main.dart index 938acd3fa5..59fd9799d8 100644 --- a/examples/cookbook/networking/delete_data/lib/main.dart +++ b/examples/cookbook/networking/delete_data/lib/main.dart @@ -31,11 +31,11 @@ Future deleteAlbum(String id) async { if (response.statusCode == 200) { // If the server did return a 200 OK response, - // then parse the JSON. After deleting, + // then return an empty Album. After deleting, // you'll get an empty JSON `{}` response. // Don't return `null`, otherwise `snapshot.hasData` // will always return false on `FutureBuilder`. - return Album.fromJson(jsonDecode(response.body) as Map); + return Album.empty(); } else { // If the server did not return a "200 OK response", // then throw an exception. @@ -45,10 +45,12 @@ Future deleteAlbum(String id) async { // #enddocregion deleteAlbum class Album { - final int id; - final String title; + int? id; + String? title; + + Album({this.id, this.title}); - const Album({required this.id, required this.title}); + Album.empty(); factory Album.fromJson(Map json) { return switch (json) { diff --git a/src/content/cookbook/networking/delete-data.md b/src/content/cookbook/networking/delete-data.md index 49cd409314..ebd93c8a44 100644 --- a/src/content/cookbook/networking/delete-data.md +++ b/src/content/cookbook/networking/delete-data.md @@ -112,11 +112,11 @@ Future deleteAlbum(String id) async { if (response.statusCode == 200) { // If the server did return a 200 OK response, - // then parse the JSON. After deleting, + // then return an empty Album. After deleting, // you'll get an empty JSON `{}` response. // Don't return `null`, otherwise `snapshot.hasData` // will always return false on `FutureBuilder`. - return Album.fromJson(jsonDecode(response.body) as Map); + return Album.empty(); } else { // If the server did not return a "200 OK response", // then throw an exception. @@ -169,11 +169,11 @@ Future deleteAlbum(String id) async { if (response.statusCode == 200) { // If the server did return a 200 OK response, - // then parse the JSON. After deleting, + // then return an empty Album. After deleting, // you'll get an empty JSON `{}` response. // Don't return `null`, otherwise `snapshot.hasData` // will always return false on `FutureBuilder`. - return Album.fromJson(jsonDecode(response.body) as Map); + return Album.empty(); } else { // If the server did not return a "200 OK response", // then throw an exception. @@ -182,10 +182,12 @@ Future deleteAlbum(String id) async { } class Album { - final int id; - final String title; + int? id; + String? title; + + Album({this.id, this.title}); - const Album({required this.id, required this.title}); + Album.empty(); factory Album.fromJson(Map json) { return switch (json) { From 5497da72961149939c4f131ec17bd59ec779adf6 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Mon, 13 May 2024 22:35:39 -0700 Subject: [PATCH 085/109] Adding a capabilities and policies page (#10582) As it says cc @reidbaker --------- Co-authored-by: Marya <111139605+MaryaBelanger@users.noreply.github.com> Co-authored-by: Parker Lougheed Co-authored-by: Reid Baker --- src/_data/sidenav.yml | 2 + .../ui/adaptive-responsive/capabilities.md | 194 ++++++++++++++++++ src/content/ui/adaptive-responsive/index.md | 2 + 3 files changed, 198 insertions(+) create mode 100644 src/content/ui/adaptive-responsive/capabilities.md diff --git a/src/_data/sidenav.yml b/src/_data/sidenav.yml index 7189437961..f1846078d0 100644 --- a/src/_data/sidenav.yml +++ b/src/_data/sidenav.yml @@ -194,6 +194,8 @@ permalink: /ui/adaptive-responsive/large-screens - title: User input & accessibility permalink: /ui/adaptive-responsive/input + - title: Capabilities & policies + permalink: /ui/adaptive-responsive/capabilities - title: Best practices permalink: /ui/adaptive-responsive/best-practices - title: Additional resources diff --git a/src/content/ui/adaptive-responsive/capabilities.md b/src/content/ui/adaptive-responsive/capabilities.md new file mode 100644 index 0000000000..01f09fbe18 --- /dev/null +++ b/src/content/ui/adaptive-responsive/capabilities.md @@ -0,0 +1,194 @@ +--- +title: Capabilities & policies +description: >- + Learn how to adapt your app to the + capabilities and policies required + by the platform, app store, your company, + and so on. +--- + +Most real-world apps have the need to adapt to the +capabilities and policies of different devices and platforms. +This page contains advice for how to +handle these scenarios in your code. + +## Design to the strengths of each device type + +Consider the unique strengths and weaknesses of different devices. +Beyond their screen size and inputs, such as touch, mouse, keyboard, +what other unique capabilities can you leverage? +Flutter enables your code to _run_ on different devices, +but strong design is more than just running code. +Think about what each platform does best and +see if there are unique capabilities to leverage. + +For example: Apple's App Store and Google's Play Store +have different rules that apps need to abide by. +Different host operating systems have differing +capabilities across time as well as each other. + +Another example is leveraging the web's extremely +low barrier for sharing. If you're deploying a web app, +decide what deep links to support, +and design the navigation routes with those in mind. + +Flutter's recommended pattern for handling different +behavior based on these unique capabilities is to create +a set of `Capability` and `Policy` classes for your app. + +### Capabilities + +A _capability_ defines what the code or device _can_ do. +Examples of capabilities include: + +* The existence of an API +* OS-enforced restrictions +* Physical hardware requirements (like a camera) + +### Policies + +A _policy_ defines what the code _should_ do. + +Examples of policies include: + +* App store guidelines +* Design preferences +* Assets or copy that refers to the host device +* Features enabled on the server side + +### How to structure policy code + +The simplest mechanical way is `Platform.isAndroid`, +`Platform.isIOS`, and `kIsWeb`. These APIs mechanically +let you know where the code is running but have some +problems as the app expands where it can run, and +as host platforms add functionality. + +The following guidelines explain best practices +when developing the capabilities and policies for your app: + +**Avoid using `Platform.isAndoid` and similar functions +to make layout decisions or assumptions about what a device can do.** + +Instead, describe what you want to branch on in a method. + +Example: Your app has a link to buy something in a +website, but you don't want to show that link on iOS +devices for policy reasons. + +```dart +bool shouldAllowPurchaseClick() { + // Banned by Apple App Store guidelines. + return !Platform.isIOS; +} + +... +TextSpan( + text: 'Buy in browser', + style: new TextStyle(color: Colors.blue), + recognizer: shouldAllowPurchaseClick ? TapGestureRecognizer() + ..onTap = () { launch('') : null; + } : null, +``` + +What did you get by adding an additional layer of indirection? +The code makes it more clear why the branched path exists. +This method can exist directly in the class but it's likely +that other parts of the code might need this same check. +If so, put the code in a class. + +```dart title="policy.dart" + +class Policy { + + bool shouldAllowPurchaseClick() { + // Banned by Apple App Store guidelines. + return !Platform.isIOS; + } +} +``` + +With this code in a class, any widget test can mock +`Policy().shouldAllowPurchaseClick` and verify the behavior +independently of where the device runs. +It also means that later, if you decide that +buying on the web isn't the right flow for +Android users, you can change the implementation +and the tests for clickable text won't need to change. + +## Capabilities + +Sometimes you want your code to do something but the +API doesn't exist, or maybe you depend on a plugin feature +that isn't yet implemented on all of the platforms you support. +This is a limitation of what the device _can_ do. + +Those situations are similar to the policy decisions +described above, but these are referred to as _capabilities_. +Why separate policy classes from capabilities +when the structure of the classes is similar? +The Flutter team has found with productionized apps that making +a logical distinction between what apps _can_ do and +what they _should_ do helps larger products respond to +changes in what platforms can do or require +in addition to your own preferences after +the initial code is written. + +For example, consider the case where one platform adds +a new permission that requires users to interact with +a system dialog before your code calls a sensitive API. +Your team does the work for platform 1 and creates a +capability named `requirePermissionDialogFlow`. +Then, if and when platform 2 adds a similar requirement +but only for new API versions, +then the implementation of `requirePermissionDialogFlow` +can now check the API level and return true for platform 2. +You've leveraged the work you already did. + +## Policies + +We encourage starting with a `Policy` class initially +even if it seems like you won't make many policy based decisions. +As the complexity of the class grows or the number of inputs expands, +you might decide to break up the policy class by feature +or some other criteria. + +For policy implementation, you can use compile time, +run time, or Remote Procedure Call (RPC) backed implementations. + +Compile-time policy checks are good for platforms +where the preference is unlikely to change and where +accidentally changing the value might have large consequences. +For example, if a platform requires that you not +link to the Play store, or requires that you use +a specific payment provider given the content of your app. + +Runtime checks can be good for determining if there +is a touch screen the user can use. Android has a feature +you can check and your web implementation could +check for max touch points. + +RPC-backed policy changes are good for incremental +feature rollout or for decisions that might change later. + +## Summary + +Use a `Capability` class to define what the code *can* do. +You might check against the existence of an API, +OS-enforced restrictions, +and physical hardware requirements (like a camera). +A capability usually involves compile or runtime checks. + +Use a `Policy` class (or classes depending on complexity) +to define what the code _should_ do to comply with +App store guidelines, design preferences, +and assets or copy that need to refer to the host device. +Policies can be a mix of compile, runtime, or RPC checks. + +Test the branching code by mocking capabilities and +policies so the widget tests don't need to change +when capabilities or policies change. + +Name the methods in your capabilities and policies classes +based on what they are trying to branch, rather than on device type. + diff --git a/src/content/ui/adaptive-responsive/index.md b/src/content/ui/adaptive-responsive/index.md index c9dbd32603..9795524180 100644 --- a/src/content/ui/adaptive-responsive/index.md +++ b/src/content/ui/adaptive-responsive/index.md @@ -54,11 +54,13 @@ responsive design: * [SafeArea & MediaQuery][] * [Large screens & foldables][] * [User input & accessibility][] +* [Capabilities & policies][] * [Best practices for adaptive apps][] * [Additional resources][] [Additional resources]: /ui/adaptive-responsive/more-info [Best practices for adaptive apps]: /ui/adaptive-responsive/best-practices +[Capabilities & policies]: /ui/adaptive-responsive/capabilities [General approach]: /ui/adaptive-responsive/general [Large screens & foldables]: /ui/adaptive-responsive/large-screens [SafeArea & MediaQuery]: /ui/adaptive-responsive/safearea-mediaquery From 1a7311da80ff3a80a09b62ee56e447f00ebf0c9b Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Mon, 13 May 2024 22:44:53 -0700 Subject: [PATCH 086/109] Update the status of Impeller on Android as of 3.22. (#10583) Co-authored-by: Parker Lougheed Co-authored-by: Shams Zakhour (ignore Sfshaza) <44418985+sfshaza2@users.noreply.github.com> --- src/content/perf/impeller.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/content/perf/impeller.md b/src/content/perf/impeller.md index a0860790b4..36056d37fa 100644 --- a/src/content/perf/impeller.md +++ b/src/content/perf/impeller.md @@ -80,6 +80,8 @@ include a small reproducible test case. As of the 3.19 release, you can try out Impeller for macOS behind a flag. +In a future release, the ability to opt-out of +using Impeller will be removed. To enable Impeller on macOS when debugging, pass `--enable-impeller` to the `flutter run` command. @@ -99,9 +101,12 @@ add the following tags under the top-level ### Android -Impeller is available behind a flag on Android -devices that support Vulkan, allowing you to -try out the feature before it reaches stable. +As of the 3.22 release, Impeller on Android with Vulkan +is a release candidate. On devices that don't support Vulkan, +Impeller will fallback to the the legacy OpenGL renderer. No +action on your part is necessary for this fallback behavior. +Consider trying Impeller on Android before it becomes the default +on stable, you can explicitly opt into it. :::secondary Does your device support Vulkan? You can determine whether your Android device From ae27bea8bebdec2825698dca5da49d0c0ef6235b Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Mon, 13 May 2024 23:01:29 -0700 Subject: [PATCH 087/109] Update supported platforms for 3.22 (#10500) --- src/_data/platforms.yml | 12 ++++++------ src/_data/site.yml | 6 +++--- .../docs/install/deprecated/android-setup.md | 2 +- src/content/add-to-app/android/project-setup.md | 2 +- src/content/deployment/android.md | 1 - src/content/deployment/macos.md | 3 ++- src/content/platform-integration/macos/building.md | 2 +- src/content/reference/supported-platforms.md | 2 -- src/content/resources/faq.md | 6 +++--- 9 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/_data/platforms.yml b/src/_data/platforms.yml index 19611a0a65..437ce1ddb9 100644 --- a/src/_data/platforms.yml +++ b/src/_data/platforms.yml @@ -11,13 +11,13 @@ - platform: 'macOS' chipsets: 'x64, Arm64' supported: '13' - besteffort: '10.14 to 12, 14' + besteffort: '10.14 to 12, 14' unsupported: '10.13 and earlier' - platform: 'Windows' chipsets: 'x64, Arm64' supported: '10' - besteffort: '7, 8, 11' - unsupported: 'Vista and earlier' + besteffort: '11' + unsupported: '8 and earlier' - platform: 'Debian (Linux)' chipsets: 'x64, Arm64' supported: '11, 12' @@ -25,9 +25,9 @@ unsupported: '8 and earlier' - platform: 'Ubuntu (Linux)' chipsets: 'x64, Arm64' - supported: '20.04 LTS' - besteffort: '22.04 to 23.10' - unsupported: '22.04 and earlier normal' + supported: '20.04 LTS, 22.04 LTS' + besteffort: '24.04 LTS' + unsupported: '23.04 and earlier non-LTS' - platform: 'Chrome (Web)' chipsets: 'N/A' supported: '[Latest 2](https://chromereleases.googleblog.com/search/label/Stable%20updates)' diff --git a/src/_data/site.yml b/src/_data/site.yml index 639fb4f09b..276121aff7 100644 --- a/src/_data/site.yml +++ b/src/_data/site.yml @@ -83,11 +83,11 @@ devmin: debian: 11 ubuntu: '20.04 LTS' targetmin: - windows: 'Microsoft Windows 7' - macos: '10.14 (Ventura)' + windows: 'Microsoft Windows 10' + macos: '10.14 (Mojave)' linux: debian: 10 - ubuntu: '18.04 LTS' + ubuntu: '20.04 LTS' ios: 12 android: 'Android API level 21' diff --git a/src/_includes/docs/install/deprecated/android-setup.md b/src/_includes/docs/install/deprecated/android-setup.md index 5341ea0b75..b79501abfe 100644 --- a/src/_includes/docs/install/deprecated/android-setup.md +++ b/src/_includes/docs/install/deprecated/android-setup.md @@ -65,7 +65,7 @@ follow these steps: 1. Choose a device definition and select **Next**. 1. Select one or more system images for the Android versions you want to emulate, and select **Next**. - An _x86_ or _x86\_64_ image is recommended. + An _x86\_64_ image is recommended. 1. Under Emulated Performance, select **Hardware - GLES 2.0** to enable [hardware acceleration]({{site.android-dev}}/studio/run/emulator-acceleration). diff --git a/src/content/add-to-app/android/project-setup.md b/src/content/add-to-app/android/project-setup.md index 976b85183f..88db562f9a 100644 --- a/src/content/add-to-app/android/project-setup.md +++ b/src/content/add-to-app/android/project-setup.md @@ -34,7 +34,7 @@ android { } ``` -The Flutter engine has an `x86` and `x86_64` version. +The Flutter engine also has an `x86_64` version. When using an emulator in debug Just-In-Time (JIT) mode, the Flutter module still runs correctly. ::: diff --git a/src/content/deployment/android.md b/src/content/deployment/android.md index bc0a900693..3746deaa9f 100644 --- a/src/content/deployment/android.md +++ b/src/content/deployment/android.md @@ -516,7 +516,6 @@ as described in [build an APK](#build-an-apk) using the When building your application in release mode, Flutter apps can be compiled for [armeabi-v7a][] (ARM 32-bit), [arm64-v8a][] (ARM 64-bit), and [x86-64][] (x86 64-bit). -Flutter supports building for x86 Android through ARM emulation. ### How do I sign the app bundle created by `flutter build appbundle`? diff --git a/src/content/deployment/macos.md b/src/content/deployment/macos.md index 5ba98ac1b2..9a5bf70c11 100644 --- a/src/content/deployment/macos.md +++ b/src/content/deployment/macos.md @@ -94,7 +94,8 @@ In the **Identity** section: In the **Deployment info** section: `Deployment Target` -: The minimum macOS version that your app supports. Flutter supports macOS 10.14 and later. +: The minimum macOS version that your app supports. + Flutter supports deploying apps to macOS {{site.targetmin.macos}} and later. In the **Signing & Capabilities** section: diff --git a/src/content/platform-integration/macos/building.md b/src/content/platform-integration/macos/building.md index 6311f4f561..cf16db40ec 100644 --- a/src/content/platform-integration/macos/building.md +++ b/src/content/platform-integration/macos/building.md @@ -153,7 +153,7 @@ on the Apple Developer site. If you choose to distribute your application outside of the App Store, you need to notarize your application -for compatibility with macOS 10.15+. +for compatibility with macOS. This requires enabling the Hardened Runtime option. Once you have enabled it, you need a valid signing certificate in order to build. diff --git a/src/content/reference/supported-platforms.md b/src/content/reference/supported-platforms.md index 0d8e7651e4..19bc3a57bc 100644 --- a/src/content/reference/supported-platforms.md +++ b/src/content/reference/supported-platforms.md @@ -31,5 +31,3 @@ Based on these tiers, Flutter supports deploying to the following platforms. {:.table .table-striped} - -Android supports IA32 (x86) in software emulation only. diff --git a/src/content/resources/faq.md b/src/content/resources/faq.md index c6aaf85aa9..ce58689f0b 100644 --- a/src/content/resources/faq.md +++ b/src/content/resources/faq.md @@ -254,7 +254,7 @@ of Flutter, read the [architectural overview][]. The engine's C and C++ code are compiled with Android's NDK. The Dart code (both the SDK's and yours) -are ahead-of-time (AOT) compiled into native, ARM, and x86 +are ahead-of-time (AOT) compiled into native, ARM, and x86-64 libraries. Those libraries are included in a "runner" Android project, and the whole thing is built into an `.apk`. When launched, the app loads the Flutter library. @@ -549,10 +549,10 @@ You can compile and deploy your Flutter app to iOS, Android, the list of [supported platforms][]. * Flutter supports building ahead-of-time (AOT) compiled libraries - for `x86_64`, `armeabi-v7a`, and `arm64-v8a`. + for `x86-64`, `armeabi-v7a`, and `arm64-v8a`. * Apps built for ARMv7 or ARM64 run fine (using ARM emulation) - on many x86 Android devices. + on many x86-64 Android devices. * We support developing Flutter apps on a range of platforms. See the system requirements listed under each From 050a844cdafbaf2aaa528237db6ee57a3fe2b291 Mon Sep 17 00:00:00 2001 From: Kalyn <65800415+kalyncoose@users.noreply.github.com> Date: Tue, 14 May 2024 01:11:09 -0600 Subject: [PATCH 088/109] Docs: Replace measure image with branch image (#10588) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ The [General approach](https://docs.flutter.dev/ui/adaptive-responsive/general) article under Adaptive and Responsive design displays the wrong image under Step 3, which is a duplicate from Step 2. This PR only changes the markdown in Step 3 to point to the correct existing image. _Issues fixed by this PR (if any):_ n/a ## 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. --- src/content/ui/adaptive-responsive/general.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/ui/adaptive-responsive/general.md b/src/content/ui/adaptive-responsive/general.md index ea82a1e2ef..2225129c91 100644 --- a/src/content/ui/adaptive-responsive/general.md +++ b/src/content/ui/adaptive-responsive/general.md @@ -140,7 +140,7 @@ In this scenario, use `LayoutBuilder`. ## Step 3: Branch -![Step 3: Branch the code based on the desired UI](/assets/images/docs/ui/adaptive-responsive/measure.png) +![Step 3: Branch the code based on the desired UI](/assets/images/docs/ui/adaptive-responsive/branch.png) At this point, you must decide what sizing breakpoints to use when choosing what version of the UI to display. From 43e6e537b8ae85681dbacf4e1e685fe16733c80d Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Tue, 14 May 2024 08:49:46 -0700 Subject: [PATCH 089/109] Add new games-related codelabs and docs (#10589) --------- Co-authored-by: Parker Lougheed --- src/content/resources/games-toolkit.md | 96 +++++++++++++++++++++----- 1 file changed, 78 insertions(+), 18 deletions(-) diff --git a/src/content/resources/games-toolkit.md b/src/content/resources/games-toolkit.md index eaa27b77c9..4bc80d51ce 100644 --- a/src/content/resources/games-toolkit.md +++ b/src/content/resources/games-toolkit.md @@ -1,11 +1,16 @@ --- title: Casual Games Toolkit -description: Free & open source multiplatform 2D game development in Flutter +description: >- + Learn about free & open source multiplatform 2D game development in Flutter. --- The Flutter Casual Games Toolkit pulls together new and existing resources so you can accelerate development of games on mobile platforms. +:::recommend +Check out the latest [game updates and resources for Flutter 3.22](#updates)! +::: + This page outlines where you can find these available resources. ## Why Flutter for games? @@ -117,24 +122,31 @@ Are you ready? To get started: have a Discord account). 1. Review the codelabs and cookbook recipes. - * Build a [multiplayer game][multiplayer-recipe] with Cloud Firestore. - * Make your games more engaging + * {{recipe-icon}} Build a [multiplayer game][multiplayer-recipe] with Cloud Firestore. + * {{codelab}} Build a [word puzzle][] with Flutter.—**NEW** + * {{codelab}} Build a [2D physics game][] with Flutter and Flame.—**NEW** + * {{codelab}} [Add sound and music][] to your Flutter game with SoLoud.—**NEW** + * {{recipe-icon}}Make your games more engaging with [leaderboards and achievements][leaderboard-recipe]. - * Monetize your games with [in-game ads][ads-recipe] - and [in-app purchases][iap-recipe]. - * Add user authentication flow to your game via - [Firebase Authentication][firebase-auth]. + * Monetize your games with {{recipe-icon}}[in-game ads][ads-recipe] + and {{codelab}} [in-app purchases][iap-recipe]. + * Add user authentication flow to your game with + {{recipe-icon}} [Firebase Authentication][firebase-auth]. * Collect analytics about crashes and errors inside your game - with [Firebase Crashlytics][firebase-crashlytics]. + with {{recipe-icon}} [Firebase Crashlytics][firebase-crashlytics]. 1. Set up accounts on AdMob, Firebase, and Cloud, as needed. 1. Write your game! 1. Deploy to both the Google Play and Apple stores. +[Add sound and music]: {{site.codelabs}}/codelabs/flutter-codelab-soloud +[2D physics game]: {{site.codelabs}}/codelabs/flutter-flame-forge2d +[word puzzle]: {{site.codelabs}}/codelabs/flutter-word-puzzle + ## Example games -For Google I/O 2022, both the Flutter team and Very Good Ventures created new -games. +For Google I/O 2022, both the Flutter team +and Very Good Ventures created new games. * VGV created the [I/O Pinball game][pinball-game] using the Flame engine. To learn about this game, @@ -146,12 +158,6 @@ games. check out [How It's Made: I/O FLIP adds a twist to a classic card game with generative AI][flip-blog] on the Google Developers blog and [play the game][flip-game] in your browser. -{% comment %} -Some examples of successful mobile videogames -built with Flutter and Flame include -[Tomb Toad][] and [Air Hockey][]. -{% endcomment %} - ## Other resources Once you feel ready to go beyond these games templates, @@ -207,7 +213,9 @@ investigate other resources that our community recommended. Audio -{{pkg-icon}} [audioplayers][] +{{pkg-icon}} [audioplayers][]
    +{{pkg-icon}} [flutter_soloud][]—**NEW**
    +{{codelab}} [Add sound and music to your Flutter game with SoLoud][]—**NEW** @@ -345,7 +353,8 @@ investigate other resources that our community recommended. User Experience -{{codelab}} [Build next generation UIs in Flutter][] +{{codelab}} [Build next generation UIs in Flutter][]
    +{{doc-icon}} [Best practices for optimizing Flutter web loading speed][]—**NEW** @@ -411,3 +420,54 @@ investigate other resources that our community recommended. [view the open source code repo]: {{site.github}}/flutter/super_dash [web]: https://superdash.flutter.dev/ [Tiled]: https://www.mapeditor.org/ +[flutter_soloud]: {{site.pub-pkg}}/flutter_soloud +[SoLoud codelab]: {{site.codelabs}}/codelabs/flutter-codelab-soloud + +## Games Toolkit updates for Flutter 3.22 {:#updates} + +The following codelabs and guides were added for +the Flutter 3.22 release: + +**Low-latency, high-performance sound** +: In collaboration with the Flutter community ([@Marco Bavagnoli][]), + we've enabled the SoLoud audio engine. + This free and portable engine delivers the low-latency and + high-performance sound that's essential for many games. + To help you get started, check out the new codelab, + [Add sound and music to your Flutter game with SoLoud][], + dedicated to adding sound and music to your game. + +**Word puzzle games** +: Check out the new codelab, + [Build a word puzzle with Flutter][], + focused on building word puzzle games. + This genre is perfect for exploring Flutter's UI capabilities, + and this codelab dives into using Flutter's background processing + to effortlessly generate expansive crossword-style grids of + interlocking words without compromising the user experience. + +**Forge 2D physics engine** +: The new Forge2D codelab, + [Build a 2D physics game with Flutter and Flame][], + guides you through crafting game mechanics in a + Flutter and Flame game using a 2D physics simulation + along the lines of Box2D, called [Forge2D][]. + +**Optimize loading speed for Flutter web-based games** +: In the fast-paced world of web-based gaming, + a slow loading game is a major deterrent. + Players expect instant gratification and will + quickly abandon a game that doesn't load promptly. + Hence, we've published a guide, + [Best practices for optimizing Flutter web loading speed][], + authored by [Cheng Lin][], + to help you optimize your Flutter web-based games + and apps for lightning-fast loading speeds. + +[@Marco Bavagnoli]: {{site.github}}/alnitak +[Add sound and music to your Flutter game with SoLoud]: {{site.codelabs}}/codelabs/flutter-codelab-soloud +[Best practices for optimizing Flutter web loading speed]: {{site.flutter-medium}}/best-practices-for-optimizing-flutter-web-loading-speed-7cc0df14ce5c +[Build a word puzzle with Flutter]: {{site.codelabs}}/codelabs/flutter-word-puzzle +[Build a 2D physics game with Flutter and Flame]: {{site.codelabs}}/codelabs/flutter-flame-forge2d +[Cheng Lin]: {{site.medium}}/@mhclin113_26002 +[Forge2D]: {{site.pub-pkgs}}/forge2d From 50103e0c511fb0e039bcc58509350d5b782952a8 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Tue, 14 May 2024 09:01:31 -0700 Subject: [PATCH 090/109] Update the banner for I/O 2024 livestream (#10590) --------- Co-authored-by: Parker Lougheed --- src/_includes/banner.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_includes/banner.html b/src/_includes/banner.html index ab679b4310..e0101b44d8 100644 --- a/src/_includes/banner.html +++ b/src/_includes/banner.html @@ -3,6 +3,6 @@ {% endcomment -%}
    From e8a783ca26061f8d9d98a1e917910475ccd63de5 Mon Sep 17 00:00:00 2001 From: Michael Thomsen Date: Tue, 14 May 2024 19:24:13 +0200 Subject: [PATCH 091/109] Link to Wonderous from Wasm page (#10592) --- src/content/platform-integration/web/wasm.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/platform-integration/web/wasm.md b/src/content/platform-integration/web/wasm.md index 993317abee..5658b0227c 100644 --- a/src/content/platform-integration/web/wasm.md +++ b/src/content/platform-integration/web/wasm.md @@ -46,7 +46,7 @@ but currently doesn't work due to a [known limitation](#known-limitations). ## Try it out To try a pre-built Flutter web app using Wasm, check out the -[Material 3 WasmGC preview demo](https://flutterweb-wasm.web.app/). +[Wonderous demo app](https://wonderous.app/web/). To experiment with Wasm in your own apps, use the following steps. From 84f2457d1ca641a2bc7012cb243767750ab67498 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Tue, 14 May 2024 11:33:02 -0700 Subject: [PATCH 092/109] Update 3.22 breaking changes (#10591) --- .../breaking-changes/3-19-deprecations.md | 2 +- .../android-surface-plugins.md | 2 +- .../flutter-memory-allocations.md | 2 +- src/content/release/breaking-changes/index.md | 29 ++++++++++--------- .../breaking-changes/material-state.md | 2 +- .../navigator-and-page-api.md | 2 +- .../new-color-scheme-roles.md | 2 +- .../release/breaking-changes/notifications.md | 2 +- .../breaking-changes/pageview-controller.md | 2 +- .../breaking-changes/popscope-with-result.md | 2 +- .../primary-scroll-controller-desktop.md | 2 +- .../breaking-changes/trackpad-gestures.md | 2 +- 12 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/content/release/breaking-changes/3-19-deprecations.md b/src/content/release/breaking-changes/3-19-deprecations.md index 7f4d05f1eb..857c347bcd 100644 --- a/src/content/release/breaking-changes/3-19-deprecations.md +++ b/src/content/release/breaking-changes/3-19-deprecations.md @@ -736,4 +736,4 @@ be announced again when the time comes. ## Timeline -In stable release: TBD +In stable release: 3.22.0 diff --git a/src/content/release/breaking-changes/android-surface-plugins.md b/src/content/release/breaking-changes/android-surface-plugins.md index 81dad1a42a..960f3dd0e2 100644 --- a/src/content/release/breaking-changes/android-surface-plugins.md +++ b/src/content/release/breaking-changes/android-surface-plugins.md @@ -61,7 +61,7 @@ This feature landed in the _previous_ version of the SDK but was non-functional; plugins that migrate to this API should set `3.22` as a minimum version constraint. ::: -In stable release: TBD +In stable release: 3.22.0 ## References diff --git a/src/content/release/breaking-changes/flutter-memory-allocations.md b/src/content/release/breaking-changes/flutter-memory-allocations.md index e62cca08c7..2258f28012 100644 --- a/src/content/release/breaking-changes/flutter-memory-allocations.md +++ b/src/content/release/breaking-changes/flutter-memory-allocations.md @@ -40,7 +40,7 @@ if (kFlutterMemoryAllocationsEnabled) { ## Timeline Landed in version: 3.19.0-2.0.pre
    -Landed in stable: Not yet +Landed in stable: 3.22.0 ## References diff --git a/src/content/release/breaking-changes/index.md b/src/content/release/breaking-changes/index.md index c8f5a4ddea..3f54381f5f 100644 --- a/src/content/release/breaking-changes/index.md +++ b/src/content/release/breaking-changes/index.md @@ -31,35 +31,38 @@ release, and listed in alphabetical order: [`dart fix`]: /tools/flutter-fix [test registry]: {{site.github}}/flutter/tests - - ### Not yet released to stable * [Navigator's page APIs breaking change][] * [Generic types in `PopScope`][] -* [Rename `MaterialState` to `WidgetState`][] -* [Introduce new `ColorScheme` roles][] * [Stop generating `AssetManifest.json`][] -* [Rename `MemoryAllocations` to `FlutterMemoryAllocations`][] * [Deprecate `TextField.canRequestFocus`][] -* [Nullable `PageView.controller`][] * [Deprecate `ButtonBar` in favor of `OverflowBar`][] -* [Deprecated API removed after v3.19][] -* [Dropping support for Android KitKat][] -* [New APIs for Android plugins that render to a `Surface`][] [Navigator's page APIs breaking change]: /release/breaking-changes/navigator-and-page-api [Generic types in `PopScope`]: /release/breaking-changes/popscope-with-result -[Rename `MaterialState` to `WidgetState`]: /release/breaking-changes/material-state -[Introduce new `ColorScheme` roles]: /release/breaking-changes/new-color-scheme-roles [Stop generating `AssetManifest.json`]: /release/breaking-changes/asset-manifest-dot-json -[Rename `MemoryAllocations` to `FlutterMemoryAllocations`]: /release/breaking-changes/flutter-memory-allocations [Deprecate `TextField.canRequestFocus`]: /release/breaking-changes/can-request-focus -[Nullable `PageView.controller`]: /release/breaking-changes/pageview-controller [Deprecate `ButtonBar` in favor of `OverflowBar`]: /release/breaking-changes/deprecate-buttonbar + + +### Released in Flutter 3.22 + +* [Deprecated API removed after v3.19][] +* [Rename `MaterialState` to `WidgetState`][] +* [Introduce new `ColorScheme` roles][] +* [Dropping support for Android KitKat][] +* [New APIs for Android plugins that render to a `Surface`][] +* [Nullable `PageView.controller`][] +* [Rename `MemoryAllocations` to `FlutterMemoryAllocations`][] + [Deprecated API removed after v3.19]: /release/breaking-changes/3-19-deprecations +[Rename `MaterialState` to `WidgetState`]: /release/breaking-changes/material-state +[Introduce new `ColorScheme` roles]: /release/breaking-changes/new-color-scheme-roles [Dropping support for Android KitKat]: /release/breaking-changes/android-kitkat-deprecation [New APIs for Android plugins that render to a `Surface`]: /release/breaking-changes/android-surface-plugins +[Nullable `PageView.controller`]: /release/breaking-changes/pageview-controller +[Rename `MemoryAllocations` to `FlutterMemoryAllocations`]: /release/breaking-changes/flutter-memory-allocations ### Released in Flutter 3.19 diff --git a/src/content/release/breaking-changes/material-state.md b/src/content/release/breaking-changes/material-state.md index d19393a07d..c5b8b9c950 100644 --- a/src/content/release/breaking-changes/material-state.md +++ b/src/content/release/breaking-changes/material-state.md @@ -99,7 +99,7 @@ BorderSide side = WidgetStateBorderSide.resolveWith((Set states) { ## Timeline Landed in version: 3.21.0-11.0.pre
    -In stable release: Not yet +In stable release: 3.22.0 ## References diff --git a/src/content/release/breaking-changes/navigator-and-page-api.md b/src/content/release/breaking-changes/navigator-and-page-api.md index 3dd0fc1476..1e0d981dda 100644 --- a/src/content/release/breaking-changes/navigator-and-page-api.md +++ b/src/content/release/breaking-changes/navigator-and-page-api.md @@ -86,7 +86,7 @@ void main() { ## Timeline -Landed in version: TBD +Landed in version: TBD
    In stable release: TBD ## References diff --git a/src/content/release/breaking-changes/new-color-scheme-roles.md b/src/content/release/breaking-changes/new-color-scheme-roles.md index af19ddd8c5..80d470f983 100644 --- a/src/content/release/breaking-changes/new-color-scheme-roles.md +++ b/src/content/release/breaking-changes/new-color-scheme-roles.md @@ -138,7 +138,7 @@ Color myColor3 = Theme.of(context).colorScheme.surfaceContainerHighest; ## Timeline Landed in version: 3.21.0-4.0.pre
    -In stable release: Not yet +In stable release: 3.22.0 ## References diff --git a/src/content/release/breaking-changes/notifications.md b/src/content/release/breaking-changes/notifications.md index c31ab006c6..2fe6ec8013 100644 --- a/src/content/release/breaking-changes/notifications.md +++ b/src/content/release/breaking-changes/notifications.md @@ -98,7 +98,7 @@ new default behavior of `Notification.dispatch`. ## Timeline -Landed in version: 2.12.0-4.1 +Landed in version: 2.12.0-4.1
    In stable release: 3.0.0 ## References diff --git a/src/content/release/breaking-changes/pageview-controller.md b/src/content/release/breaking-changes/pageview-controller.md index 6c71f14e56..ad8d0f4a1a 100644 --- a/src/content/release/breaking-changes/pageview-controller.md +++ b/src/content/release/breaking-changes/pageview-controller.md @@ -27,7 +27,7 @@ pageView.controller!.page ## Timeline Landed in version: 3.19.0-12.0.pre
    -In stable release: Not yet +In stable release: 3.22.0 ## References diff --git a/src/content/release/breaking-changes/popscope-with-result.md b/src/content/release/breaking-changes/popscope-with-result.md index 2abd0f27c3..ece42f9f3d 100644 --- a/src/content/release/breaking-changes/popscope-with-result.md +++ b/src/content/release/breaking-changes/popscope-with-result.md @@ -113,7 +113,7 @@ different types, you can use `PopScope` to catch all possible types. ## Timeline -Landed in version: 3.22.0-12.0.pre-56 +Landed in version: 3.22.0-12.0.pre-56
    In stable release: TBD ## References diff --git a/src/content/release/breaking-changes/primary-scroll-controller-desktop.md b/src/content/release/breaking-changes/primary-scroll-controller-desktop.md index 01a37b3b82..e41ea3dfde 100644 --- a/src/content/release/breaking-changes/primary-scroll-controller-desktop.md +++ b/src/content/release/breaking-changes/primary-scroll-controller-desktop.md @@ -176,7 +176,7 @@ Scaffold( ## Timeline -Landed in version: 3.3.0-0.0.pre +Landed in version: 3.3.0-0.0.pre
    In stable release: 3.3 ## References diff --git a/src/content/release/breaking-changes/trackpad-gestures.md b/src/content/release/breaking-changes/trackpad-gestures.md index 142d041a90..2da7033452 100644 --- a/src/content/release/breaking-changes/trackpad-gestures.md +++ b/src/content/release/breaking-changes/trackpad-gestures.md @@ -545,7 +545,7 @@ class Foo extends StatefulWidget { ## Timeline -Landed in version: 3.3.0-0.0.pre +Landed in version: 3.3.0-0.0.pre
    In stable release: 3.3.0 ## References From 288f1c3941325da6681a562e541b1fed0a7395ba Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Tue, 14 May 2024 13:14:01 -0700 Subject: [PATCH 093/109] [wasm] clarify that JS is still complied, even with the --wasm flag (#10593) Co-authored-by: Parker Lougheed --- src/content/platform-integration/web/wasm.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/content/platform-integration/web/wasm.md b/src/content/platform-integration/web/wasm.md index 5658b0227c..d1ecf64c4a 100644 --- a/src/content/platform-integration/web/wasm.md +++ b/src/content/platform-integration/web/wasm.md @@ -93,7 +93,14 @@ flutter build web --wasm ``` The command produces output into the `build/web` directory relative to the -package root. +package root, just like `flutter build web`. + +:::note +Even with the `--wasm` flag, `flutter build web` will still compile the +application to JavaScript. If WasmGC support is not detected at runtime, +the JavaScript output is used so the application will continue to work across +browsers. +::: ### Serve the output with an HTTP server From 2cc8004a7d2b30d6d7413c1a23d70e428f42b1c3 Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Tue, 14 May 2024 15:47:47 -0700 Subject: [PATCH 094/109] Add the new 3.22 codelabs (#10595) As it says --- src/content/codelabs/index.md | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/content/codelabs/index.md b/src/content/codelabs/index.md index b8f6e9a13a..c91dcc2300 100644 --- a/src/content/codelabs/index.md +++ b/src/content/codelabs/index.md @@ -124,7 +124,7 @@ like layout and animations: evokes those science fiction movies and TV shows we all love watching when we aren't coding. -[Building next generation UIs in Flutter]: {{site.codelabs}}/codelabs/flutter-next-gen-uis#0 +[Building next generation UIs in Flutter]: {{site.codelabs}}/codelabs/flutter-next-gen-uis [Adaptive Apps in Flutter]: {{site.codelabs}}/codelabs/flutter-adaptive-app [animations]: {{site.pub}}/packages/animations [Building Beautiful Transitions with Material Motion for Flutter]: {{site.codelabs}}/codelabs/material-motion-flutter @@ -211,6 +211,12 @@ Learn how to use Flutter with other technologies. ### Flutter and other technologies +* [Add sound and music to your Flutter game with SoLoud][]—**NEW**
    + The [SoLoud][] package, a free and portable engine, + delivers the low-latency and high-performance sound that's + essential for many games. + In this codelab, learn how to add SoLoud to your game. + * [Adding Google Maps to a Flutter app][]
    Display a Google map in an app, retrieve data from a web service, and display the data as markers on the map. @@ -219,6 +225,16 @@ Learn how to use Flutter with other technologies. With the WebView Flutter plugin you can add a WebView widget to your Android or iOS Flutter app. +* [Build a 2D physics game with Flutter and Flame][]—**NEW**
    + This codelab guides you through crafting game mechanics in a + Flutter and Flame game using a 2D physics simulation along + the lines of Box2D, called [Forge2D][]. + +* [Build a word puzzle with Flutter][]—**NEW**
    + This codelab focuses on building word puzzle games, + and dives into using Flutter's background processing + to generate expansive crossword-style grids of interlocking words. + * [Build voice bots for mobile with Dialogflow and Flutter][] (workshop)
    An instructor-led version of the Dialogflow and Flutter codelab (listed below). @@ -247,13 +263,18 @@ Learn how to use Flutter with other technologies. PaLM API gives you access to Google's state-of-the-art large language models. +[Add sound and music to your Flutter game with SoLoud]: {{site.codelabs}}/codelabs/flutter-codelab-soloud [Adding Google Maps to a Flutter app]: {{site.codelabs}}/codelabs/google-maps-in-flutter [Adding WebView to your Flutter app]: {{site.codelabs}}/codelabs/flutter-webview +[Build a 2D physics game with Flutter and Flame]: {{site.codelabs}}/codelabs/flutter-flame-forge2d +[Build a word puzzle with Flutter]: {{site.codelabs}}/codelabs/flutter-word-puzzle [Build voice bots for Android with Dialogflow and Flutter]: {{site.codelabs}}/codelabs/dialogflow-flutter [Build voice bots for mobile with Dialogflow and Flutter]: {{site.yt.watch}}?v=O7JfSF3CJ84 +[Create haikus about Google products with the PaLM API and Flutter]: {{site.codelabs}}/haiku-generator +[Forge2D]: {{site.pub-pkg}}/forge2d [Introduction to Flame with Flutter]: {{site.codelabs}}/codelabs/flutter-flame-brick-breaker +[SoLoud]: {{site.pub-pkg}}/flutter_soloud [Using FFI in a Flutter plugin]: {{site.codelabs}}/codelabs/flutter-ffigen -[Create haikus about Google products with the PaLM API and Flutter]: {{site.codelabs}}/haiku-generator ## Testing @@ -264,7 +285,7 @@ Learn how to test your Flutter application. Unit test the provider package. Write widget tests for two of the widgets. Use Flutter Driver to create an integration test. -[How to test a Flutter app]: {{site.codelabs}}/codelabs/flutter-app-testing/#0 +[How to test a Flutter app]: {{site.codelabs}}/codelabs/flutter-app-testing/ ## Writing platform-specific code @@ -289,7 +310,7 @@ like iOS, Android, desktop, or the web. create and use plugins to interact with native APIs and desktop applications, and use code generation to build type-safe client libraries for GitHub's APIs. -* [Adding a Home Screen widget to your Flutter app][home-screen]
    **NEW** +* [Adding a Home Screen widget to your Flutter app][home-screen]
    Learn how to add a Home Screen widget to your Flutter app on iOS. This applies to your home screen, lock screen, or the today view. From c6c013f56015ee3588e94df1ae5f42bd806110bf Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Tue, 14 May 2024 17:13:25 -0700 Subject: [PATCH 095/109] Updating the what's new page (#10594) As it says --------- Co-authored-by: Parker Lougheed Co-authored-by: John Ryan Co-authored-by: Marya <111139605+MaryaBelanger@users.noreply.github.com> Co-authored-by: Reid Baker Co-authored-by: Chinmay Garde Co-authored-by: Kalyn <65800415+kalyncoose@users.noreply.github.com> Co-authored-by: Michael Thomsen Co-authored-by: Kevin Moore --- src/content/release/whats-new.md | 75 ++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/content/release/whats-new.md b/src/content/release/whats-new.md index 17872a7438..d9ac647066 100644 --- a/src/content/release/whats-new.md +++ b/src/content/release/whats-new.md @@ -23,6 +23,81 @@ and review the [Dart changelog][]. [Dart Announce]: {{site.groups}}/a/dartlang.org/g/announce [Dart changelog]: {{site.github}}/dart-lang/sdk/blob/main/CHANGELOG.md +## 14 May 2024: Google I/O 3.22 release + +Flutter 3.22 is live! For more information, +check out the [Flutter 3.22 umbrella blog post][3.22-umbrella] +and the [Flutter 3.22 technical blog post][3.22-tech]. + +You might also check out the [Dart 3.4 release][] blog post. +In particular, Dart now provides a "baked in" language macro, +`JsonCodable`, for serializing and deserializing JSON data. +A future (and unspecified) Dart release will allow +you to create your own macros. +To learn more, check out [dart.dev/go/macros][]. + +[3.22-tech]: {{site.flutter-medium}}/whats-new-in-flutter-3-19-58b1aae242d2 +[3.22-umbrella]: {{site.flutter-medium}}/starting-2024-strong-with-flutter-and-dart-cae9845264fe +[Dart 3.4 release]: {{site.medium}}/dartlang/new-in-dart-3-3-extension-types-javascript-interop-and-more-325bf2bf6c13 +[dart.dev/go/macros]: http://dart.dev/go/macros + +**Docs updated or added since the 3.19 release** + +* A new 7-page section on [Adaptive and Responsive design][]. + (This replaces our previous, somewhat scattered, + documentation on this subject.) +* For new-ish Flutter developer who has worked through + the first Flutter codelab, we've added some "what's next" + advice on how to move beyond that initial step. + Check out the docs for the + [First week experience of Flutter][], also called **FWE**. +* Our [Flutter install][] docs have been revamped. +* We have three new codelabs and a new guide for the Games Toolkit. + To see the list of additions, + check out the updated [Casual Games Toolkit][] page. +* A new section, [Conditionally bundling assets based on flavor][], + in the Flavors page. +* Flutter support for Web Assembly (Wasm) has now reached stable. + To learn more, check out the updated + [Support for WebAssembly (Wasm)][] page. +* DevTools has a new screen for evaluating deep links on Android. + To learn more, check out the new page, [Validate deep links][]. +* We have a new page that describes web bootstrapping for + Flutter SDK release 3.22 and later. + Check out [Flutter web app initialization][]. +* You can now provide code to transform your assets + into another format at runtime. To learn more, + check out [Transforming assets at build time][]. + +**Website infrastructure** + +* If you contribute to the website, you might have noticed + some recent changes. Namely, the website infrastructure + has been updated and the new workflow is simpler. + For more details, check out the [website README][]. +* You might also have noticed that the **App solutions** + submenu in the sidenav now has an **AI** section, + and an enhanced **Monetization** section, + to name some of the changes. + +[Adaptive and Responsive design]: /ui/adaptive-responsive +[Casual Games Toolkit]: /resources/games-toolkit +[Conditionally bundling assets based on flavor]: /deployment/flavors#conditionally-bundling-assets-based-on-flavor +[First week experience of Flutter]: /get-started/fwe +[Flutter install]: /get-started/install +[Flutter web app initialization]: /platform-integration/web/bootstrapping +[website README]: {{site.github}}/flutter/website/?tab=readme-ov-file#flutter-documentation-website +[Support for WebAssembly (Wasm)]: /platform-integration/web/wasm +[Transforming assets at build time]: /ui/assets/asset-transformation +[Validate deep links]: /tools/devtools/deep-links + +**Articles** + +The following articles were published on the [Flutter Medium][] +publication since Flutter 3.19: + +[Flutter Medium]: {{site.flutter-medium}} + ## 15 February 2024: Valentine's-Day-adjacent 3.19 release Flutter 3.19 is live! For more information, From df9f16a091b4681a9cba255909d5736bebb3cb1c Mon Sep 17 00:00:00 2001 From: Khanh Nguyen Date: Tue, 14 May 2024 20:41:48 -0700 Subject: [PATCH 096/109] forge2d workshop short link (#10597) Creating a new short link for Brett's forge2d workshop --- firebase.json | 1 + 1 file changed, 1 insertion(+) diff --git a/firebase.json b/firebase.json index a9ec061982..d87b59f415 100644 --- a/firebase.json +++ b/firebase.json @@ -389,6 +389,7 @@ { "source": "/go/flutter-tool-extension-api", "destination": "https://docs.google.com/document/d/12iXm23TP6e6qS1Ntx-i-azcBWByiUl_kWjRxRC2YTz8/edit?usp=sharing&resourcekey=0-pVl2giJzGAHqOYEaZagVow", "type": 301 }, { "source": "/go/flutter-web-scenelets", "destination": "https://docs.google.com/document/d/1GUAx3aqdtEoaBMTNpsS1-i59QZlwTi6vUCASbaanPCo", "type": 301 }, { "source": "/go/focus-management", "destination": "https://docs.google.com/document/d/1-NS3NJFd2j9kzKj5GOPoWq-G0B6jrpiCL892EX5Nxgk/edit", "type": 301 }, + { "source": "/go/forge2d-workshop", "destination": "https://codelabs.developers.google.com/codelabs/flutter-flame-forge2d#0", "type": 301 }, { "source": "/go/form-field-autovalidation", "destination": "https://docs.google.com/document/d/16HAURcOtYAoHntDOEtdGy9KkKSItulG9Ldyjzdaosqo/edit", "type": 301 }, { "source": "/go/fragment-program-support", "destination": "https://docs.google.com/document/d/1R0qx3znTe_wcKZoeWwkMlgxs1MtrdiPJ_1xiuExZuH0/edit", "type": 301 }, { "source": "/go/games-revenue", "destination": "https://services.google.com/fh/files/blogs/gaming_ux_and_revenue_optimizations.pdf", "type": 301 }, From 461ecc27c44b30aa5718f5f7ee3ee1b504c5f237 Mon Sep 17 00:00:00 2001 From: Junpei Sato Date: Wed, 15 May 2024 15:28:39 +0900 Subject: [PATCH 097/109] Update 3-19-deprecations.md - Fix typos (#10596) Fix typos on KeepAliveHandle section. ---- Co-authored-by: Parker Lougheed --- src/content/release/breaking-changes/3-19-deprecations.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/release/breaking-changes/3-19-deprecations.md b/src/content/release/breaking-changes/3-19-deprecations.md index 857c347bcd..d91dff9c7a 100644 --- a/src/content/release/breaking-changes/3-19-deprecations.md +++ b/src/content/release/breaking-changes/3-19-deprecations.md @@ -459,7 +459,7 @@ method executes the same functionality as `release` did now. Code before migration: ```dart -KeepAliveHandle handle = KeepAliveHAndle(); +KeepAliveHandle handle = KeepAliveHandle(); handle.release(); handle.dispose(); ``` @@ -467,7 +467,7 @@ handle.dispose(); Code after migration: ```dart -KeepAliveHandle handle = KeepAliveHAndle(); +KeepAliveHandle handle = KeepAliveHandle(); handle.dispose(); ``` From 25db06cac1dd7d37c20f8df1c96a7af492947255 Mon Sep 17 00:00:00 2001 From: Percival <450961837@qq.com> Date: Wed, 15 May 2024 14:53:12 +0800 Subject: [PATCH 098/109] Fix incorrect link to Dart 3.4 blog post (#10601) --- src/content/release/whats-new.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/release/whats-new.md b/src/content/release/whats-new.md index d9ac647066..5eb595df7c 100644 --- a/src/content/release/whats-new.md +++ b/src/content/release/whats-new.md @@ -38,7 +38,7 @@ To learn more, check out [dart.dev/go/macros][]. [3.22-tech]: {{site.flutter-medium}}/whats-new-in-flutter-3-19-58b1aae242d2 [3.22-umbrella]: {{site.flutter-medium}}/starting-2024-strong-with-flutter-and-dart-cae9845264fe -[Dart 3.4 release]: {{site.medium}}/dartlang/new-in-dart-3-3-extension-types-javascript-interop-and-more-325bf2bf6c13 +[Dart 3.4 release]: {{site.medium}}/dartlang/dart-3-4-bd8d23b4462a [dart.dev/go/macros]: http://dart.dev/go/macros **Docs updated or added since the 3.19 release** From afe2b9fcbbb6ec613877427406f8a17743f509a3 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Wed, 15 May 2024 01:05:25 -0700 Subject: [PATCH 099/109] Uncomment link to 3.22 announcement blog post (#10599) --- src/content/release/release-notes/index.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/content/release/release-notes/index.md b/src/content/release/release-notes/index.md index b7b790fcc2..7f3a44d249 100644 --- a/src/content/release/release-notes/index.md +++ b/src/content/release/release-notes/index.md @@ -13,9 +13,7 @@ For information about bug-fix releases, check out ::: * 3.22.0 - {% comment %} * [3.22.0 announcement][] - {% endcomment -%} * [3.22.0 release notes & change log][] * [3.22.0 breaking changes & migrations][] * 3.19.0 From c3c8f1e61dae3ca5c8e3b4e27c3a0efbddb29251 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Wed, 15 May 2024 01:06:01 -0700 Subject: [PATCH 100/109] Remove intl_translation workaround (#10603) --- examples/internationalization/intl_example/pubspec.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/examples/internationalization/intl_example/pubspec.yaml b/examples/internationalization/intl_example/pubspec.yaml index 529192ceda..691c349d70 100644 --- a/examples/internationalization/intl_example/pubspec.yaml +++ b/examples/internationalization/intl_example/pubspec.yaml @@ -16,11 +16,7 @@ dev_dependencies: path: ../../example_utils flutter_test: sdk: flutter - intl_translation: ^0.19.0 - -# TODO(parlough): Remove this override once intl_translation 0.20 is published. -dependency_overrides: - intl: 0.19.0 + intl_translation: ^0.20.0 flutter: uses-material-design: true From dd8d5c049be78ba5229304d679651e3cff698373 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 May 2024 19:56:16 +1000 Subject: [PATCH 101/109] Bump github/codeql-action from 3.25.4 to 3.25.5 (#10606) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.4 to 3.25.5.
    Changelog

    Sourced from github/codeql-action's changelog.

    CodeQL Action Changelog

    See the releases page for the relevant changes to the CodeQL CLI and language packs.

    Note that the only difference between v2 and v3 of the CodeQL Action is the node version they support, with v3 running on node 20 while we continue to release v2 to support running on node 16. For example 3.22.11 was the first v3 release and is functionally identical to 2.22.11. This approach ensures an easy way to track exactly which features are included in different versions, indicated by the minor and patch version numbers.

    [UNRELEASED]

    No user facing changes.

    3.25.5 - 13 May 2024

    • Add a compatibility matrix of supported CodeQL Action, CodeQL CLI, and GitHub Enterprise Server versions to the https://github.com/github/codeql-action/blob/main/README.md. #2273
    • Avoid printing out a warning for a missing on.push trigger when the CodeQL Action is triggered via a workflow_call event. #2274
    • The tools: latest input to the init Action has been renamed to tools: linked. This option specifies that the Action should use the tools shipped at the same time as the Action. The old name will continue to work for backwards compatibility, but we recommend that new workflows use the new name. #2281

    3.25.4 - 08 May 2024

    • Update default CodeQL bundle version to 2.17.2. #2270

    3.25.3 - 25 Apr 2024

    • Update default CodeQL bundle version to 2.17.1. #2247
    • Workflows running on macos-latest using CodeQL CLI versions before v2.15.1 will need to either upgrade their CLI version to v2.15.1 or newer, or change the platform to an Intel MacOS runner, such as macos-12. ARM machines with SIP disabled, including the newest macos-latest image, are unsupported for CLI versions before 2.15.1. #2261

    3.25.2 - 22 Apr 2024

    No user facing changes.

    3.25.1 - 17 Apr 2024

    • We are rolling out a feature in April/May 2024 that improves the reliability and performance of analyzing code when analyzing a compiled language with the autobuild build mode. #2235
    • Fix a bug where the init Action would fail if --overwrite was specified in CODEQL_ACTION_EXTRA_OPTIONS. #2245

    3.25.0 - 15 Apr 2024

    • The deprecated feature for extracting dependencies for a Python analysis has been removed. #2224

      As a result, the following inputs and environment variables are now ignored:

      • The setup-python-dependencies input to the init Action
      • The CODEQL_ACTION_DISABLE_PYTHON_DEPENDENCY_INSTALLATION environment variable

      We recommend removing any references to these from your workflows. For more information, see the release notes for CodeQL Action v3.23.0 and v2.23.0.

    • Automatically overwrite an existing database if found on the filesystem. #2229

    • Bump the minimum CodeQL bundle version to 2.12.6. #2232

    • A more relevant log message and a diagnostic are now emitted when the file program is not installed on a Linux runner, but is required for Go tracing to succeed. #2234

    3.24.10 - 05 Apr 2024

    ... (truncated)

    Commits
    • b7cec75 Merge pull request #2287 from github/update-v3.25.5-4a5197247
    • 6778fe4 Update changelog for v3.25.5
    • 4a51972 Merge pull request #2280 from github/henrymercer/on-demand-ffs
    • a8c32fd Merge pull request #2283 from github/henrymercer/disable-fail-fast
    • f73b0b7 Disable fail fast for non-generated workflows
    • c59e052 Disable fail fast in generated workflows
    • 33e416c Comment that legacyApi is false by default
    • 67f8a36 Merge branch 'main' into henrymercer/on-demand-ffs
    • 4995c49 Merge pull request #2282 from github/henrymercer/no-build-mode-tracing-improv...
    • def4d2c Merge pull request #2273 from github/aeisenberg/specify-versions
    • Additional commits viewable in compare view

    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.25.4&new-version=3.25.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/codeql-analysis.yml | 6 +++--- .github/workflows/scorecards-analysis.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 7fb91fca3b..49faff6c01 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -33,7 +33,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 + uses: github/codeql-action/init@b7cec7526559c32f1616476ff32d17ba4c59b2d6 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -44,7 +44,7 @@ jobs: # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild - uses: github/codeql-action/autobuild@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 + uses: github/codeql-action/autobuild@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -58,4 +58,4 @@ jobs: # make release - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 + uses: github/codeql-action/analyze@b7cec7526559c32f1616476ff32d17ba4c59b2d6 diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index fa7e3252ab..f0a680b846 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -50,6 +50,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@ccf74c947955fd1cf117aef6a0e4e66191ef6f61 + uses: github/codeql-action/upload-sarif@b7cec7526559c32f1616476ff32d17ba4c59b2d6 with: sarif_file: results.sarif From 4cfa7fc84459b9e7fc1392dfb74e0a9299e4bceb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 May 2024 08:49:14 -0700 Subject: [PATCH 102/109] Bump examples/codelabs from `155bcda` to `851b1da` (#10604) --- examples/codelabs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/codelabs b/examples/codelabs index 155bcda24c..851b1da255 160000 --- a/examples/codelabs +++ b/examples/codelabs @@ -1 +1 @@ -Subproject commit 155bcda24cb0c6c9e37340bca780feb503890bbb +Subproject commit 851b1da255d0a86388330af459ac16d2757e0197 From de42588358e54e7320868a94ba3e4650e1ac219c Mon Sep 17 00:00:00 2001 From: Kevin Moore Date: Wed, 15 May 2024 08:56:02 -0700 Subject: [PATCH 103/109] bootstrapping: this is stable! (#10608) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ _Issues fixed by this PR (if any):_ ## 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. --- src/content/platform-integration/web/bootstrapping.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/content/platform-integration/web/bootstrapping.md b/src/content/platform-integration/web/bootstrapping.md index 8d1b8e94a4..ad729462b3 100644 --- a/src/content/platform-integration/web/bootstrapping.md +++ b/src/content/platform-integration/web/bootstrapping.md @@ -4,13 +4,11 @@ description: Customize how Flutter apps are initialized on the web --- :::note -This page describes APIs that are available in the [`beta`][] and [`main`][] -channels in Flutter 3.22 or later. For app initialization in Flutter 3.21 or +This page describes APIs that are available in Flutter 3.22 or later. +For app initialization in Flutter 3.21 or earlier, see the [Customizing web App Initialization][] page. ::: -[`beta`]: {{site.github}}/flutter/flutter/wiki/flutter-build-release-channels#beta -[`main`]: {{site.github}}/flutter/flutter/wiki/flutter-build-release-channels#master-aka-main [Customizing web App Initialization]: /platform-integration/web/initialization This page details the initialization process for Flutter web apps, and how this From 250b378c87df83ee55c5ad75b9aa3a6bc33f5d2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 May 2024 09:27:11 -0700 Subject: [PATCH 104/109] Bump site-shared from `e466136` to `777996f` (#10605) Bumps [site-shared](https://github.com/dart-lang/site-shared) from `e466136` to `777996f`.
    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) ---
    Dependabot commands and options
    You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- site-shared | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site-shared b/site-shared index e466136cd7..777996f8f9 160000 --- a/site-shared +++ b/site-shared @@ -1 +1 @@ -Subproject commit e466136cd77d715352a7f86a7abf563a1cfce735 +Subproject commit 777996f8f9ee179f666c59318d62e09c21251122 From a1e2f1927c15fbae6591bdda7c56a73a503d06bf Mon Sep 17 00:00:00 2001 From: "Shams Zakhour (ignore Sfshaza)" <44418985+sfshaza2@users.noreply.github.com> Date: Wed, 15 May 2024 09:40:16 -0700 Subject: [PATCH 105/109] Updating the banner (#10609) For 3.22. As it says. --------- Co-authored-by: Parker Lougheed --- src/_includes/banner.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/_includes/banner.html b/src/_includes/banner.html index e0101b44d8..d451a2a143 100644 --- a/src/_includes/banner.html +++ b/src/_includes/banner.html @@ -2,7 +2,8 @@ For headings use h3 elements. {% endcomment -%} From e6d5888c327c1ce4e2fec39e67f831a1382d002d Mon Sep 17 00:00:00 2001 From: iugo Date: Thu, 16 May 2024 12:45:36 +0800 Subject: [PATCH 106/109] Fix: flutter v3.22 tech blog link (#10611) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ _Issues fixed by this PR (if any):_ ## 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. --- src/content/release/whats-new.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/release/whats-new.md b/src/content/release/whats-new.md index 5eb595df7c..af4b061a78 100644 --- a/src/content/release/whats-new.md +++ b/src/content/release/whats-new.md @@ -36,7 +36,7 @@ A future (and unspecified) Dart release will allow you to create your own macros. To learn more, check out [dart.dev/go/macros][]. -[3.22-tech]: {{site.flutter-medium}}/whats-new-in-flutter-3-19-58b1aae242d2 +[3.22-tech]: {{site.flutter-medium}}/whats-new-in-flutter-3-22-fbde6c164fe3 [3.22-umbrella]: {{site.flutter-medium}}/starting-2024-strong-with-flutter-and-dart-cae9845264fe [Dart 3.4 release]: {{site.medium}}/dartlang/dart-3-4-bd8d23b4462a [dart.dev/go/macros]: http://dart.dev/go/macros From 582c0057599ac6b529b379fce6fba96a58b660a6 Mon Sep 17 00:00:00 2001 From: Matan Lurey Date: Wed, 15 May 2024 22:26:28 -0700 Subject: [PATCH 107/109] Add `/go/use-dart-style-in-flutter-engine` design doc redirect (#10612) --- firebase.json | 1 + 1 file changed, 1 insertion(+) diff --git a/firebase.json b/firebase.json index d87b59f415..cdb516c671 100644 --- a/firebase.json +++ b/firebase.json @@ -605,6 +605,7 @@ { "source": "/go/update-psc", "destination": "https://docs.google.com/document/d/12OQx7h8UQzzAi0Kxh-saDC2dg7h2fghCCzwJ0ysPmZE/edit?usp=sharing&resourcekey=0-ATO-1Er3HO2HITm59I0IdA", "type": 301 }, { "source": "/go/update-scrollbars", "destination": "https://docs.google.com/document/d/1mRlc-sRyadE6301aZsD1LJkPG2B9K97Bg_GDHvFhMQI/edit?usp=sharing&resourcekey=0-v4Gk8H280RaPo5qClmDqpA", "type": 301 }, { "source": "/go/update-text-theme-api", "destination": "https://docs.google.com/document/d/1B1s4mm6OYM7mKQ3vZfSTI2HR_KljB78gN6oBHg_zYUs/edit", "type": 301 }, + { "source": "/go/use-dart-style-in-flutter-engine", "destination": "https://docs.google.com/document/d/1E2ZLNasExXMpSYcxWrd5qSp24WmhIPiFq9FjBC5GoVY?resourcekey=0-bmXuMwfoCn8a9QdQiMd3hA", "type": 301 }, { "source": "/go/variable-refresh-rate", "destination": "https://docs.google.com/document/d/1O-ot6MydAl5pAr_XGnpR-Qq5A5CPDF6edaPu8xQtgCQ/edit?usp=sharing&resourcekey=0-LlXeGtGRC67XL4NrGoc91A", "type": 301 }, { "source": "/go/vector-graphics", "destination": "https://docs.google.com/document/d/1YWffrlc6ZqRwfIiR1qwp1AOkS9JyA_lEURI8p5PsZlg/edit", "type": 301 }, { "source": "/go/verbatim-logical-keys-for-non-latin-layout", "destination": "https://docs.google.com/document/d/1ZNgNxito-NVUS1JKlcjdzHUcKyyiupy8Za-jb131dD4/edit?usp=sharing&resourcekey=0-eeEZ5X0jAzuqSTdmPWlv0w", "type": 301 }, From c8f1d26754a766e89d3fdc2df2a4c13c52322d97 Mon Sep 17 00:00:00 2001 From: Hicro <75737377+HicaroD@users.noreply.github.com> Date: Thu, 16 May 2024 16:07:08 -0300 Subject: [PATCH 108/109] fix: adding proper command for extracting archives (#10610) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _Description of what this PR is changing or adding, and why:_ Some commands for extracting files were wrong in the documentation. So I fixed these commands for Linux and macOS. For some weird reason, some flags, such as `-C` from `tar` command, were not showing, so I used multilines as a sorta of hack in order to make these flags appear, so I hope it is not a problem. Also I removed the word `zip` from the description because the downloaded artifact may not be a zip file, therefore it could cause a slight confusion to the user, in my opinion. _Issues fixed by this PR (if any):_ #10607 ## 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: Anthony Sansone --- src/_includes/docs/install/flutter/download.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/_includes/docs/install/flutter/download.md b/src/_includes/docs/install/flutter/download.md index 910044b2c5..8c0abdbc3f 100644 --- a/src/_includes/docs/install/flutter/download.md +++ b/src/_includes/docs/install/flutter/download.md @@ -30,19 +30,21 @@ {% assign prompt='$' %} {% assign dirdl='~/Downloads/' %} {% capture uz -%} - {{prompt}} {{unzip}} {{dirdl}}flutter_sdk_v1.0.0.zip -d {{path}} + {{prompt}} {{unzip}} {{dirdl}}flutter_sdk_v1.0.0.zip \ + -d {{path}} {%- endcapture %} {% else -%} {% assign diroptions='`/usr/bin/`' %} {% assign dirinstall='`/usr/bin/`' %} - {% assign unzip='unzip' %} + {% assign unzip='tar' %} {% assign path='/usr/bin/' %} {% assign flutter-path='/usr/bin/flutter' %} {% assign terminal='a shell' %} {% assign prompt='$' %} {% assign dirdl='~/Downloads/' %} {% capture uz -%} - {{prompt}} {{dirdl}}flutter_sdk_v1.0.0.zip {{path}} + {{prompt}} {{unzip}} -xf {{dirdl}}flutter_sdk_v1.0.0.zip \ + -C {{path}} {%- endcapture %} {% endcase -%} @@ -84,7 +86,7 @@ then extract the SDK. {% render docs/install/admonitions/install-paths.md %} {% endif %} -1. Extract the zip file into the directory you want to store the Flutter SDK. +1. Extract the file into the directory you want to store the Flutter SDK. ```console {{uz}} From 348fe057f5aea377128b55f0d82e2c09c307281b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Sharma?= <737941+loic-sharma@users.noreply.github.com> Date: Thu, 16 May 2024 23:47:53 -0700 Subject: [PATCH 109/109] Update long lists cookbook (#10616) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updates the long list cookbook to add `ListView.extentItemBuilder`, which was added recently for lists with extends of different sizes: https://github.com/flutter/flutter/pull/131393 ## 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. --- src/content/cookbook/lists/long-lists.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/content/cookbook/lists/long-lists.md b/src/content/cookbook/lists/long-lists.md index 8bea6430ea..5561352692 100644 --- a/src/content/cookbook/lists/long-lists.md +++ b/src/content/cookbook/lists/long-lists.md @@ -100,11 +100,17 @@ class MyApp extends StatelessWidget { ## Children's extent -To specify each item's extent, you can use either `itemExtent` or `prototypeItem`. +To specify each item's extent, you can use either [`prototypeItem`][], [`itemExtent`][], +or [`itemExtentBuilder`][]. + Specifying either is more efficient than letting the children determine their own extent because the scrolling machinery can make use of the foreknowledge of the children's extent to save work, for example when the scroll position changes drastically. +Use [`prototypeItem`][] or [`itemExtent`][] if your list has items of fixed size. + +Use [`itemExtentBuilder`][] if your list has items of different sizes. + @@ -112,3 +118,6 @@ extent to save work, for example when the scroll position changes drastically. [`List.generate`]: {{site.api}}/flutter/dart-core/List/List.generate.html [`ListView`]: {{site.api}}/flutter/widgets/ListView-class.html [`ListView.builder`]: {{site.api}}/flutter/widgets/ListView/ListView.builder.html +[`prototypeItem`]: {{site.api}}/flutter/widgets/ListView/prototypeItem.html +[`itemExtent`]: {{site.api}}/flutter/widgets/ListView/itemExtent.html +[`itemExtentBuilder`]: {{site.api}}/flutter/widgets/ListView/itemExtentBuilder.html