diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index f0e27e7c66..db5ee76604 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,5 +1,8 @@ -**IMPORTANT:** Due to work on the docs.flutter.dev infrastructure, this repo is **not accepting pull requests**. +_Description of what this PR is changing or adding, and why:_ -Instead of creating a PR, please file an issue (https://github.com/flutter/website/issues/new/choose) about the needed change. +_Issues fixed by this PR (if any):_ -We expect to start accepting PRs again the week of August 31. \ No newline at end of file +## 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. diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index cd5032b3d3..1873c29eb7 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@2ca79b6fa8d3ec278944088b4aa5f46912db5d63 + uses: github/codeql-action/init@c7f292ea4f542c473194b33813ccd4c207a6c725 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@2ca79b6fa8d3ec278944088b4aa5f46912db5d63 + uses: github/codeql-action/autobuild@c7f292ea4f542c473194b33813ccd4c207a6c725 # ℹ️ 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@2ca79b6fa8d3ec278944088b4aa5f46912db5d63 + uses: github/codeql-action/analyze@c7f292ea4f542c473194b33813ccd4c207a6c725 diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml index 33c5c010de..39ed614d85 100644 --- a/.github/workflows/scorecards-analysis.yml +++ b/.github/workflows/scorecards-analysis.yml @@ -49,6 +49,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2ca79b6fa8d3ec278944088b4aa5f46912db5d63 + uses: github/codeql-action/upload-sarif@c7f292ea4f542c473194b33813ccd4c207a6c725 with: sarif_file: results.sarif diff --git a/examples/cookbook/effects/staggered_menu_animation/lib/main.dart b/examples/cookbook/effects/staggered_menu_animation/lib/main.dart index 968c69d6f2..59240055cf 100644 --- a/examples/cookbook/effects/staggered_menu_animation/lib/main.dart +++ b/examples/cookbook/effects/staggered_menu_animation/lib/main.dart @@ -294,7 +294,7 @@ class _MenuState extends State with SingleTickerProviderStateMixin { child: ElevatedButton( style: ElevatedButton.styleFrom( shape: const StadiumBorder(), - primary: Colors.blue, + backgroundColor: Colors.blue, padding: const EdgeInsets.symmetric(horizontal: 48, vertical: 14), ), onPressed: () {}, diff --git a/examples/cookbook/effects/staggered_menu_animation/lib/step1.dart b/examples/cookbook/effects/staggered_menu_animation/lib/step1.dart index 16a5d9af5a..875c2d6469 100644 --- a/examples/cookbook/effects/staggered_menu_animation/lib/step1.dart +++ b/examples/cookbook/effects/staggered_menu_animation/lib/step1.dart @@ -76,7 +76,7 @@ class _MenuState extends State { child: ElevatedButton( style: ElevatedButton.styleFrom( shape: const StadiumBorder(), - primary: Colors.blue, + backgroundColor: Colors.blue, padding: const EdgeInsets.symmetric(horizontal: 48, vertical: 14), ), onPressed: () {}, diff --git a/examples/cookbook/effects/staggered_menu_animation/lib/step4.dart b/examples/cookbook/effects/staggered_menu_animation/lib/step4.dart index 472013be6c..7d7a32251d 100644 --- a/examples/cookbook/effects/staggered_menu_animation/lib/step4.dart +++ b/examples/cookbook/effects/staggered_menu_animation/lib/step4.dart @@ -147,7 +147,7 @@ class _MenuState extends State with SingleTickerProviderStateMixin { child: ElevatedButton( style: ElevatedButton.styleFrom( shape: const StadiumBorder(), - primary: Colors.blue, + backgroundColor: Colors.blue, padding: const EdgeInsets.symmetric(horizontal: 48, vertical: 14), ), onPressed: () {}, diff --git a/examples/development/platform_integration/pubspec.yaml b/examples/development/platform_integration/pubspec.yaml index 002e36b1f6..4b0f7394cb 100644 --- a/examples/development/platform_integration/pubspec.yaml +++ b/examples/development/platform_integration/pubspec.yaml @@ -29,7 +29,7 @@ environment: dependencies: flutter: sdk: flutter - pigeon: ^3.2.3 + pigeon: ^4.0.0 # The following adds the Cupertino Icons font to your application. diff --git a/examples/internationalization/add_language/lib/nn_intl.dart b/examples/internationalization/add_language/lib/nn_intl.dart index 9736003bf9..d31939c529 100644 --- a/examples/internationalization/add_language/lib/nn_intl.dart +++ b/examples/internationalization/add_language/lib/nn_intl.dart @@ -420,6 +420,9 @@ class NnMaterialLocalizations extends GlobalMaterialLocalizations { @override String get popupMenuLabel => r'Popup menu'; + @override + String get menuBarMenuLabel => r'Menu Bar Label'; + @override String get postMeridiemAbbreviation => r'PM'; @@ -612,234 +615,142 @@ class NnMaterialLocalizations extends GlobalMaterialLocalizations { String get unspecifiedDateRange => 'Date Range'; @override - // TODO: implement keyboardKeyAlt String get keyboardKeyAlt => throw UnimplementedError(); @override - // TODO: implement keyboardKeyAltGraph String get keyboardKeyAltGraph => throw UnimplementedError(); @override - // TODO: implement keyboardKeyBackspace String get keyboardKeyBackspace => throw UnimplementedError(); @override - // TODO: implement keyboardKeyCapsLock String get keyboardKeyCapsLock => throw UnimplementedError(); @override - // TODO: implement keyboardKeyChannelDown String get keyboardKeyChannelDown => throw UnimplementedError(); @override - // TODO: implement keyboardKeyChannelUp String get keyboardKeyChannelUp => throw UnimplementedError(); @override - // TODO: implement keyboardKeyControl String get keyboardKeyControl => throw UnimplementedError(); @override - // TODO: implement keyboardKeyDelete String get keyboardKeyDelete => throw UnimplementedError(); - @override - // TODO: implement keyboardKeyEisu String get keyboardKeyEisu => throw UnimplementedError(); @override - // TODO: implement keyboardKeyEject String get keyboardKeyEject => throw UnimplementedError(); @override - // TODO: implement keyboardKeyEnd String get keyboardKeyEnd => throw UnimplementedError(); @override - // TODO: implement keyboardKeyEscape String get keyboardKeyEscape => throw UnimplementedError(); @override - // TODO: implement keyboardKeyFn String get keyboardKeyFn => throw UnimplementedError(); @override - // TODO: implement keyboardKeyHangulMode - String get keyboardKeyHangulMode => throw UnimplementedError(); - - @override - // TODO: implement keyboardKeyHanjaMode - String get keyboardKeyHanjaMode => throw UnimplementedError(); - - @override - // TODO: implement keyboardKeyHankaku - String get keyboardKeyHankaku => throw UnimplementedError(); - - @override - // TODO: implement keyboardKeyHiragana - String get keyboardKeyHiragana => throw UnimplementedError(); - - @override - // TODO: implement keyboardKeyHiraganaKatakana - String get keyboardKeyHiraganaKatakana => throw UnimplementedError(); - - @override - // TODO: implement keyboardKeyHome String get keyboardKeyHome => throw UnimplementedError(); @override - // TODO: implement keyboardKeyInsert String get keyboardKeyInsert => throw UnimplementedError(); @override - // TODO: implement keyboardKeyKanaMode - String get keyboardKeyKanaMode => throw UnimplementedError(); - - @override - // TODO: implement keyboardKeyKanjiMode - String get keyboardKeyKanjiMode => throw UnimplementedError(); - - @override - // TODO: implement keyboardKeyKatakana - String get keyboardKeyKatakana => throw UnimplementedError(); - - @override - // TODO: implement keyboardKeyMeta String get keyboardKeyMeta => throw UnimplementedError(); @override - // TODO: implement keyboardKeyMetaMacOs String get keyboardKeyMetaMacOs => throw UnimplementedError(); @override - // TODO: implement keyboardKeyMetaWindows String get keyboardKeyMetaWindows => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumLock String get keyboardKeyNumLock => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpad0 String get keyboardKeyNumpad0 => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpad1 String get keyboardKeyNumpad1 => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpad2 String get keyboardKeyNumpad2 => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpad3 String get keyboardKeyNumpad3 => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpad4 String get keyboardKeyNumpad4 => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpad5 String get keyboardKeyNumpad5 => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpad6 String get keyboardKeyNumpad6 => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpad7 String get keyboardKeyNumpad7 => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpad8 String get keyboardKeyNumpad8 => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpad9 String get keyboardKeyNumpad9 => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpadAdd String get keyboardKeyNumpadAdd => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpadComma String get keyboardKeyNumpadComma => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpadDecimal String get keyboardKeyNumpadDecimal => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpadDivide String get keyboardKeyNumpadDivide => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpadEnter String get keyboardKeyNumpadEnter => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpadEqual String get keyboardKeyNumpadEqual => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpadMultiply String get keyboardKeyNumpadMultiply => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpadParenLeft String get keyboardKeyNumpadParenLeft => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpadParenRight String get keyboardKeyNumpadParenRight => throw UnimplementedError(); @override - // TODO: implement keyboardKeyNumpadSubtract String get keyboardKeyNumpadSubtract => throw UnimplementedError(); @override - // TODO: implement keyboardKeyPageDown String get keyboardKeyPageDown => throw UnimplementedError(); @override - // TODO: implement keyboardKeyPageUp String get keyboardKeyPageUp => throw UnimplementedError(); @override - // TODO: implement keyboardKeyPower String get keyboardKeyPower => throw UnimplementedError(); @override - // TODO: implement keyboardKeyPowerOff String get keyboardKeyPowerOff => throw UnimplementedError(); @override - // TODO: implement keyboardKeyPrintScreen String get keyboardKeyPrintScreen => throw UnimplementedError(); @override - // TODO: implement keyboardKeyRomaji - String get keyboardKeyRomaji => throw UnimplementedError(); - - @override - // TODO: implement keyboardKeyScrollLock String get keyboardKeyScrollLock => throw UnimplementedError(); @override - // TODO: implement keyboardKeySelect String get keyboardKeySelect => throw UnimplementedError(); @override - // TODO: implement keyboardKeySpace String get keyboardKeySpace => throw UnimplementedError(); - - @override - // TODO: implement keyboardKeyZenkaku - String get keyboardKeyZenkaku => throw UnimplementedError(); - - @override - // TODO: implement keyboardKeyZenkakuHankaku - String get keyboardKeyZenkakuHankaku => throw UnimplementedError(); } diff --git a/examples/layout/constraints/lib/main.dart b/examples/layout/constraints/lib/main.dart index 93c5205209..a066e4acd9 100644 --- a/examples/layout/constraints/lib/main.dart +++ b/examples/layout/constraints/lib/main.dart @@ -213,7 +213,7 @@ class Button extends StatelessWidget { Widget build(BuildContext context) { return TextButton( style: TextButton.styleFrom( - primary: Colors.white, + foregroundColor: Colors.white, backgroundColor: isSelected ? Colors.grey : Colors.grey[800], ), child: Text(exampleNumber.toString()), diff --git a/examples/testing/errors/lib/backend.dart b/examples/testing/errors/lib/backend.dart index abeefb0653..0e2e22eaa2 100644 --- a/examples/testing/errors/lib/backend.dart +++ b/examples/testing/errors/lib/backend.dart @@ -1,5 +1,3 @@ class MyBackend { - void sendError(Object error, StackTrace stack) { - // Send the error - } + void sendError(Object error, StackTrace stack) {} } diff --git a/examples/testing/errors/lib/excerpts.dart b/examples/testing/errors/lib/excerpts.dart index 54e57807cd..3221a683d0 100644 --- a/examples/testing/errors/lib/excerpts.dart +++ b/examples/testing/errors/lib/excerpts.dart @@ -2,19 +2,19 @@ import './backend.dart'; -import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; // #docregion CatchError -import 'dart:async'; +import 'package:flutter/material.dart'; +import 'dart:ui'; void main() { MyBackend myBackend = MyBackend(); - runZonedGuarded(() { - runApp(const MyApp()); - }, (error, stack) { + PlatformDispatcher.instance.onError = (error, stack) { myBackend.sendError(error, stack); - }); + return true; + }; + runApp(const MyApp()); } // #enddocregion CatchError diff --git a/examples/testing/errors/lib/main.dart b/examples/testing/errors/lib/main.dart index 20c8964733..28e1a4dc32 100644 --- a/examples/testing/errors/lib/main.dart +++ b/examples/testing/errors/lib/main.dart @@ -2,24 +2,20 @@ import './error_handler.dart'; // #docregion Main -import 'dart:async'; -import 'dart:io'; import 'package:flutter/material.dart'; +import 'dart:ui'; -void main() { - runZonedGuarded(() async { - WidgetsFlutterBinding.ensureInitialized(); - await myErrorsHandler.initialize(); - FlutterError.onError = (details) { - FlutterError.presentError(details); - myErrorsHandler.onErrorDetails(details); - exit(1); - }; - runApp(const MyApp()); - }, (error, stack) { +Future main() async { + await myErrorsHandler.initialize(); + FlutterError.onError = (details) { + FlutterError.presentError(details); + myErrorsHandler.onErrorDetails(details); + }; + PlatformDispatcher.instance.onError = (error, stack) { myErrorsHandler.onError(error, stack); - exit(1); - }); + return true; + }; + runApp(const MyApp()); } class MyApp extends StatelessWidget { @@ -40,4 +36,4 @@ class MyApp extends StatelessWidget { ); } } -// #enddocregion Main \ No newline at end of file +// #enddocregion Main diff --git a/examples/ui/advanced/actions_and_shortcuts/lib/copyable_text.dart b/examples/ui/advanced/actions_and_shortcuts/lib/copyable_text.dart index 613d7292ba..fa07432d62 100644 --- a/examples/ui/advanced/actions_and_shortcuts/lib/copyable_text.dart +++ b/examples/ui/advanced/actions_and_shortcuts/lib/copyable_text.dart @@ -174,7 +174,6 @@ class MyApp extends StatelessWidget { primarySwatch: Colors.blue, ), home: Shortcuts( - manager: LoggingShortcutManager(), shortcuts: { LogicalKeySet(LogicalKeyboardKey.escape): const ClearIntent(), LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyC): diff --git a/package-lock.json b/package-lock.json index 593593ca4e..2d8c66a1b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "bootstrap-scss": "^4.6.2", "diff2html-cli": "^5.2.5", - "firebase-tools": "^v11.7.0", + "firebase-tools": "^v11.8.0", "font-awesome": "^4.7.0", "superstatic": "^8.0.0" } @@ -943,15 +943,16 @@ } }, "node_modules/firebase-tools": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-11.7.0.tgz", - "integrity": "sha512-im3oCXpxcUWqflVbBTi8bEtRHdpQqyuwsninGqvLCzY87wwkI6IR3pT4gv/xUAkA4xU4xmQQDnLlQ5XoxA4OlA==", + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-11.8.0.tgz", + "integrity": "sha512-xUKG2WygVfZbM/cRCzvmzRf5m05h3UBprZl4lMMNhVSY5Dw4o77nPTJqDAsB9N6bMvphixSN8q4mu0NhtJGx/Q==", "hasShrinkwrap": true, "dependencies": { "@google-cloud/pubsub": "^3.0.1", "abort-controller": "^3.0.0", "ajv": "^6.12.6", "archiver": "^5.0.0", + "async-lock": "1.3.2", "body-parser": "^1.19.0", "chokidar": "^3.0.2", "cjson": "^0.3.1", @@ -961,7 +962,7 @@ "configstore": "^5.0.1", "cors": "^2.8.5", "cross-env": "^5.1.3", - "cross-spawn": "^7.0.1", + "cross-spawn": "^7.0.3", "csv-parse": "^5.0.4", "exegesis": "^4.1.0", "exegesis-express": "^4.0.0", @@ -1855,6 +1856,11 @@ "lodash": "^4.17.14" } }, + "node_modules/firebase-tools/node_modules/async-lock": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.3.2.tgz", + "integrity": "sha512-phnXdS3RP7PPcmP6NWWzWMU0sLTeyvtZCxBPpZdkYE3seGLKSQZs9FrmVO/qwypq98FUtWWUEYxziLkdGk5nnA==" + }, "node_modules/firebase-tools/node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2781,9 +2787,9 @@ } }, "node_modules/firebase-tools/node_modules/cross-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", - "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -10722,14 +10728,15 @@ } }, "firebase-tools": { - "version": "11.7.0", - "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-11.7.0.tgz", - "integrity": "sha512-im3oCXpxcUWqflVbBTi8bEtRHdpQqyuwsninGqvLCzY87wwkI6IR3pT4gv/xUAkA4xU4xmQQDnLlQ5XoxA4OlA==", + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-11.8.0.tgz", + "integrity": "sha512-xUKG2WygVfZbM/cRCzvmzRf5m05h3UBprZl4lMMNhVSY5Dw4o77nPTJqDAsB9N6bMvphixSN8q4mu0NhtJGx/Q==", "requires": { "@google-cloud/pubsub": "^3.0.1", "abort-controller": "^3.0.0", "ajv": "^6.12.6", "archiver": "^5.0.0", + "async-lock": "1.3.2", "body-parser": "^1.19.0", "chokidar": "^3.0.2", "cjson": "^0.3.1", @@ -10739,7 +10746,7 @@ "configstore": "^5.0.1", "cors": "^2.8.5", "cross-env": "^5.1.3", - "cross-spawn": "^7.0.1", + "cross-spawn": "^7.0.3", "csv-parse": "^5.0.4", "exegesis": "^4.1.0", "exegesis-express": "^4.0.0", @@ -11456,6 +11463,11 @@ "lodash": "^4.17.14" } }, + "async-lock": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.3.2.tgz", + "integrity": "sha512-phnXdS3RP7PPcmP6NWWzWMU0sLTeyvtZCxBPpZdkYE3seGLKSQZs9FrmVO/qwypq98FUtWWUEYxziLkdGk5nnA==" + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -12153,9 +12165,9 @@ } }, "cross-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.2.tgz", - "integrity": "sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", diff --git a/package.json b/package.json index 0f34a3d5a5..2e1eec9c84 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,6 @@ "diff2html-cli": "^5.2.5", "font-awesome": "^4.7.0", "superstatic": "^8.0.0", - "firebase-tools": "^v11.7.0" + "firebase-tools": "^v11.8.0" } } diff --git a/src/_data/sidenav.yml b/src/_data/sidenav.yml index 8bb63e7eff..eefc62597c 100644 --- a/src/_data/sidenav.yml +++ b/src/_data/sidenav.yml @@ -206,6 +206,8 @@ children: - title: Building Windows apps permalink: /development/platform-integration/windows/building + - title: Version information migration + permalink: /development/platform-integration/windows/version-migration - title: Packages & plugins permalink: /development/packages-and-plugins children: diff --git a/src/_includes/banner.html b/src/_includes/banner.html index bfada164db..8634a6d53b 100644 --- a/src/_includes/banner.html +++ b/src/_includes/banner.html @@ -5,7 +5,7 @@ https://github.com/flutter/website/issues/3897 {% endcomment %} {% endif -%} diff --git a/src/_includes/footer.html b/src/_includes/footer.html index 4f4a76607b..6cf3e2713f 100644 --- a/src/_includes/footer.html +++ b/src/_includes/footer.html @@ -14,7 +14,6 @@
  • privacy
  • español
  • 社区中文资源
  • -
  • 한국어
  • We stand in solidarity with the Black community. Black Lives Matter.
  • diff --git a/src/cookbook/effects/staggered-menu-animation.md b/src/cookbook/effects/staggered-menu-animation.md index 94ff48c204..b517253232 100644 --- a/src/cookbook/effects/staggered-menu-animation.md +++ b/src/cookbook/effects/staggered-menu-animation.md @@ -115,7 +115,7 @@ class _MenuState extends State

    { child: ElevatedButton( style: ElevatedButton.styleFrom( shape: const StadiumBorder(), - primary: Colors.blue, + backgroundColor: Colors.blue, padding: const EdgeInsets.symmetric(horizontal: 48, vertical: 14), ), onPressed: () {}, @@ -355,7 +355,7 @@ Widget _buildGetStartedButton() { child: ElevatedButton( style: ElevatedButton.styleFrom( shape: const StadiumBorder(), - primary: Colors.blue, + backgroundColor: Colors.blue, padding: const EdgeInsets.symmetric(horizontal: 48, vertical: 14), ), onPressed: () {}, @@ -678,7 +678,7 @@ class _MenuState extends State with SingleTickerProviderStateMixin { child: ElevatedButton( style: ElevatedButton.styleFrom( shape: const StadiumBorder(), - primary: Colors.blue, + backgroundColor: Colors.blue, padding: const EdgeInsets.symmetric(horizontal: 48, vertical: 14), ), onPressed: () {}, diff --git a/src/cookbook/navigation/named-routes.md b/src/cookbook/navigation/named-routes.md index 8dd71f631e..ada5af89e3 100644 --- a/src/cookbook/navigation/named-routes.md +++ b/src/cookbook/navigation/named-routes.md @@ -14,6 +14,15 @@ js: +{{site.alert.note}} + Named routes are no longer recommended for most + applications. For more information, see + [Limitations][] in the [navigation overview][] page. +{{site.alert.note}} + +[Limitations]: {{site.url}}/development/ui/navigation#limitations +[navigation overview]: {{site.url}}/development/ui/navigation + In the [Navigate to a new screen and back][] recipe, you learned how to navigate to a new screen by creating a new route and pushing it to the [`Navigator`][]. diff --git a/src/cookbook/navigation/navigate-with-arguments.md b/src/cookbook/navigation/navigate-with-arguments.md index bff36cf3e2..afb9740bed 100644 --- a/src/cookbook/navigation/navigate-with-arguments.md +++ b/src/cookbook/navigation/navigate-with-arguments.md @@ -21,6 +21,15 @@ In some cases, you might also need to pass arguments to a named route. For example, you might wish to navigate to the `/user` route and pass information about the user to that route. +{{site.alert.note}} + Named routes are no longer recommended for most + applications. For more information, see + [Limitations][] in the [navigation overview][] page. +{{site.alert.note}} + +[Limitations]: {{site.url}}/development/ui/navigation#limitations +[navigation overview]: {{site.url}}/development/ui/navigation + You can accomplish this task using the `arguments` parameter of the [`Navigator.pushNamed()`][] method. Extract the arguments using the [`ModalRoute.of()`][] method or inside an [`onGenerateRoute()`][] diff --git a/src/deployment/ios.md b/src/deployment/ios.md index 67725953a9..872a009757 100644 --- a/src/deployment/ios.md +++ b/src/deployment/ios.md @@ -111,9 +111,9 @@ In the **Deployment** section of the **Build Settings** tab: `iOS Deployment Target` : The minimum iOS version that your app supports. - Flutter supports iOS 9.0 and later. If your app or plugins + Flutter supports iOS 11 and later. If your app or plugins include Objective-C or Swift code that makes use of APIs newer - than iOS 9, update this setting to the highest required version. + than iOS 11, update this setting to the highest required version. The **General** tab of your project settings should resemble the following: diff --git a/src/deployment/windows.md b/src/deployment/windows.md index 4ded4e7dbe..d2caf80bd4 100644 --- a/src/deployment/windows.md +++ b/src/deployment/windows.md @@ -110,15 +110,14 @@ and Partner Center accounts][azureadassociation]. ## Updating the app's version number -With Flutter Windows desktop, +For apps published to the Microsoft Store, the version number must be set during the -packaging process and can not be set using -the `pubspec.yaml` or command line arguments. +packaging process. The default version number of the app is `1.0.0.0`. {{site.alert.note}} - Applications are not allowed to have a + Microsoft Store apps are not allowed to have a Version with a revision number other than zero. Therefore, the last number of the version must remain zero for all releases. @@ -126,6 +125,37 @@ The default version number of the app is `1.0.0.0`. [versioning guidelines][windowspackageversioning]. {{site.alert.end}} +For apps not published to the Microsoft Store, you +can set the app's executable's file and product versions. +The executable's default file version is `1.0.0.1`, +and its default product version is `1.0.0+1`. To update these, +navigate to the `pubspec.yaml` file and update the +following line: + +```yaml +version: 1.0.0+1 +``` + +The build name is three numbers separated by dots, +followed by an optional build number that is separated +by a `+`. In the example above, the build name is `1.0.0` +and the build number is `1`. + +The build name becomes the first three numbers of the +file and product versions, while the build number becomes +the fourth number of the file and product versions. + +Both the build name and number can be overridden in +`flutter build windows` by specifying `--build-name` and +`--build-number`, respectively. + +{{site.alert.note}} + Flutter projects created before Flutter 3.3 + need to be updated to set the executable's version + information. For more information, + refer to the [version migration guide][]. +{{site.alert.end}} + ## Add app icons To update the icon of a Flutter Windows @@ -184,3 +214,4 @@ even if the certification passes. [visualstudiosubmission]: https://docs.microsoft.com/windows/msix/package/packaging-uwp-apps#automate-store-submissions [windowspackageversioning]: https://docs.microsoft.com/windows/uwp/publish/package-version-numbering [windowsappcertification]: https://docs.microsoft.com/windows/uwp/debug-test-perf/windows-app-certification-kit +[version migration guide]: {{site.url}}/development/platform-integration/windows/version-migration diff --git a/src/development/add-to-app/ios/add-flutter-screen.md b/src/development/add-to-app/ios/add-flutter-screen.md index 2a230d1000..85f8b5d4af 100644 --- a/src/development/add-to-app/ios/add-flutter-screen.md +++ b/src/development/add-to-app/ios/add-flutter-screen.md @@ -344,7 +344,7 @@ fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandl - (void)application:(UIApplication*)application performActionForShortcutItem:(UIApplicationShortcutItem*)shortcutItem - completionHandler:(void (^)(BOOL succeeded))completionHandler NS_AVAILABLE_IOS(9_0) { + completionHandler:(void (^)(BOOL succeeded))completionHandler { [_lifeCycleDelegate application:application performActionForShortcutItem:shortcutItem completionHandler:completionHandler]; diff --git a/src/development/add-to-app/ios/project-setup.md b/src/development/add-to-app/ios/project-setup.md index 481480a284..aef6986fa8 100644 --- a/src/development/add-to-app/ios/project-setup.md +++ b/src/development/add-to-app/ios/project-setup.md @@ -14,7 +14,7 @@ For examples, see the iOS directories in the [add_to_app code samples][]. Your development environment must meet the [macOS system requirements for Flutter][] with [Xcode installed][]. -Flutter supports iOS 9.0 and later. +Flutter supports iOS 11 and later. Additionally, you will need [CocoaPods][] version 1.10 or later. diff --git a/src/development/platform-integration/ios/ios-app-clip.md b/src/development/platform-integration/ios/ios-app-clip.md index 9e3d5e0d94..351feaec4e 100644 --- a/src/development/platform-integration/ios/ios-app-clip.md +++ b/src/development/platform-integration/ios/ios-app-clip.md @@ -347,8 +347,8 @@ target '' ``` At the top of the file, -also uncomment `platform :ios, '9.0'` and set the -version to the lowest of the 2 target's iOS +also uncomment `platform :ios, '11.0'` and set the +version to the lowest of the two target's iOS Deployment Target. For add-to-app, add to: diff --git a/src/development/platform-integration/windows/version-migration.md b/src/development/platform-integration/windows/version-migration.md new file mode 100644 index 0000000000..0b2e6ea130 --- /dev/null +++ b/src/development/platform-integration/windows/version-migration.md @@ -0,0 +1,34 @@ +--- +title: Migrate a Windows project to set version information +description: How to update a Windows project to set version information +--- + +Flutter 3.3 added support for setting the Windows app's version from +the `pubspec.yaml` file or through the `--build-name` and `--build-number` +build arguments. For more information, refer to the +[Build and release a Windows app][] documentation. + +Projects created before Flutter version 3.3 need to be migrated +to support versioning. + +## Migration steps + +Your project can be updated using these steps: + +1. Verify you are on Flutter version 3.3 or newer using `flutter --version` +2. If needed, use `flutter upgrade` to update to the latest version of the +Flutter SDK +3. Backup your project, possibly using git or some other version control system +4. Delete the `windows/runner/CMakeLists.txt` and `windows/runner/Runner.rc` +files +5. Run `flutter create --platforms=windows .` +6. Review the changes to your `windows/runner/CMakeLists.txt` and +`windows/runner/Runner.rc` files + +## Example + +Here's an example of migrating a project: [flutter/gallery#721][]. + +[Build and release a Windows app]: {{site.url}}/deployment/windows#updating-the-apps-version-number +[`flutter migrate` command]: https://flutter.dev/go/flutter-migrate +[flutter/gallery#721]: {{site.github}}/flutter/gallery/pull/721/files \ No newline at end of file diff --git a/src/development/tools/sdk/release-notes/index.md b/src/development/tools/sdk/release-notes/index.md index cc75ccf4e6..4eed0e8aca 100644 --- a/src/development/tools/sdk/release-notes/index.md +++ b/src/development/tools/sdk/release-notes/index.md @@ -12,6 +12,9 @@ releases to the stable channel. [Hotfixes to the Stable Channel][] on the Flutter wiki. {{site.alert.end}} +* 3.3.0 + * [3.3.0 announcement][] + * [3.3.0 release notes & change log][] * 3.0.0 * [3.0.0 announcement][] * [3.0.0 release notes & change log][] @@ -45,6 +48,8 @@ releases to the stable channel. * Earlier * [Archived release notes][] +[3.3.0 announcement]: {{site.flutter-medium}}/announcing-flutter-3-3-at-flutter-vikings-6f213e068793 +[3.3.0 release notes & change log]: {{site.url}}/development/tools/sdk/release-notes/release-notes-3.3.0 [3.0.0 announcement]: {{site.flutter-medium}}/whats-new-in-flutter-3-8c74a5bc32d0 [3.0.0 release notes & change log]: {{site.url}}/development/tools/sdk/release-notes/release-notes-3.0.0 [2.10.0 announcement]: {{site.flutter-medium}}/whats-new-in-flutter-2-10-5aafb0314b12 diff --git a/src/development/tools/sdk/release-notes/release-notes-3.3.0.md b/src/development/tools/sdk/release-notes/release-notes-3.3.0.md new file mode 100644 index 0000000000..5d61261f7e --- /dev/null +++ b/src/development/tools/sdk/release-notes/release-notes-3.3.0.md @@ -0,0 +1,659 @@ +--- +title: Flutter 3.3.0 release notes +short-title: 3.3.0 release notes +description: Release notes for Flutter 3.3.0. +--- +This page has release notes for 3.3.0. +For information about subsequent bug-fix releases, +see [Hotfixes to the Stable Channel][]. + +[Hotfixes to the Stable Channel]: {{site.github}}/flutter/flutter/wiki/Hotfixes-to-the-Stable-Channel + +## What's changed + +The following changes happened in this release: + +### Framework +* Improve A11Y tests for text contrast by @matasb-google in https://github.com/flutter/flutter/pull/100267 +* Fixes `FadeInImage` to follow gapless playback by @werainkhatri in https://github.com/flutter/flutter/pull/94601 +* Remove deprecated RaisedButton by @Piinks in https://github.com/flutter/flutter/pull/98547 +* Remove text selection ThemeData deprecations 3 by @Piinks in https://github.com/flutter/flutter/pull/100586 +* Configurable padding around FocusNodes in Scrollables by @ds84182 in https://github.com/flutter/flutter/pull/96815 +* Add missing `ListTile` tests, remove duplicate test and fix typos by @TahaTesser in https://github.com/flutter/flutter/pull/101141 +* Cleans up AutomaticKeepAlive by @chunhtai in https://github.com/flutter/flutter/pull/101376 +* Add onDismiss to AnimatedModalBarrier, update tests by @gspencergoog in https://github.com/flutter/flutter/pull/100162 +* Adjust some of the interface names to be consistent by @gspencergoog in https://github.com/flutter/flutter/pull/101378 +* Fix `DrawerHeader` decoration not inheriting `ColorScheme.primary` by @TahaTesser in https://github.com/flutter/flutter/pull/101280 +* Fix reverse cases for App Bar scrolled under behavior by @Piinks in https://github.com/flutter/flutter/pull/101460 +* Add `ListTile` debugFillProperties by @TahaTesser in https://github.com/flutter/flutter/pull/100765 +* Revert "Refactor `ToggleButtons` (remove `RawMaterialButton`)" by @Piinks in https://github.com/flutter/flutter/pull/101536 +* Don't build surface until the platform view has been created by @blasten in https://github.com/flutter/flutter/pull/101399 +* Re-enable Gold post-submit fail state by @Piinks in https://github.com/flutter/flutter/pull/101528 +* Ensure that the engine frame callbacks are installed if the first scheduled frame is a forced frame by @jason-simmons in https://github.com/flutter/flutter/pull/101544 +* Enable strict-casts (as replacement for implicit-casts) by @goderbauer in https://github.com/flutter/flutter/pull/101567 +* Update key examples to use `Focus` widgets instead of `RawKeyboardListener` by @gspencergoog in https://github.com/flutter/flutter/pull/101537 +* Enable unnecessary_import by @goderbauer in https://github.com/flutter/flutter/pull/101600 +* Correct word in AppBar's docs by @guillempuche in https://github.com/flutter/flutter/pull/100893 +* Remove deprecated Scaffold SnackBar API by @Piinks in https://github.com/flutter/flutter/pull/98549 +* Migrate common buttons to Material 3 by @darrenaustin in https://github.com/flutter/flutter/pull/100794 +* Allow ClipRRect.borderRadius to support BorderRadiusDirectional by @MrBirb in https://github.com/flutter/flutter/pull/101200 +* Add some debug properties to BackdropFilterLayer by @wangying3426 in https://github.com/flutter/flutter/pull/101101 +* Add debugging flags to enhance the timeline arguments for Build, Layout, and Paint by @kenzieschmoll in https://github.com/flutter/flutter/pull/101602 +* Remove deprecated FlatButton by @Piinks in https://github.com/flutter/flutter/pull/98545 +* Refactor chip class and move independent chips into separate classes by @TahaTesser in https://github.com/flutter/flutter/pull/101507 +* Update WidgetsBindingsObserver example by @danagbemava-nc in https://github.com/flutter/flutter/pull/101512 +* [framework] introduce repaint boundary in Opacity widgets by @jonahwilliams in https://github.com/flutter/flutter/pull/101601 +* `CupertinoContextMenu`/`ContextMenuAction`: Add clickable cursor for web by @TahaTesser in https://github.com/flutter/flutter/pull/99519 +* Fix test from opacity/repaint change by @jonahwilliams in https://github.com/flutter/flutter/pull/101774 +* Revert "Configurable padding around FocusNodes in Scrollables" by @Piinks in https://github.com/flutter/flutter/pull/101772 +* Add variable font axes to TextStyle by @jason-simmons in https://github.com/flutter/flutter/pull/100978 +* [framework] elide ImageFilter layers when animation is stopped by @jonahwilliams in https://github.com/flutter/flutter/pull/101731 +* removed obsolete timelineArgumentsIndicatingLandmarkEvent by @gaaclarke in https://github.com/flutter/flutter/pull/101382 +* [framework] use ImageFilter for zoom page transition by @jonahwilliams in https://github.com/flutter/flutter/pull/101786 +* Increased WriteBuffers starting capacity to 64 bytes. by @gaaclarke in https://github.com/flutter/flutter/pull/101790 +* Support trackpad gestures in framework by @moffatman in https://github.com/flutter/flutter/pull/89944 +* made ascii string encoding faster by @gaaclarke in https://github.com/flutter/flutter/pull/101777 +* Always finish the timeline event logged by Element.inflateWidget by @jason-simmons in https://github.com/flutter/flutter/pull/101794 +* Revert "[framework] use ImageFilter for zoom page transition" by @jonahwilliams in https://github.com/flutter/flutter/pull/101838 +* Add default selection style by @chunhtai in https://github.com/flutter/flutter/pull/100719 +* Removed extra the by @QuncCccccc in https://github.com/flutter/flutter/pull/101837 +* Revert changes to opacity/fade transition repaint boundary and secondary change by @jonahwilliams in https://github.com/flutter/flutter/pull/101844 +* Correct docs to refer to replacement render object by @Piinks in https://github.com/flutter/flutter/pull/101858 +* Prepare framework for `use_super_parameters` by @goderbauer in https://github.com/flutter/flutter/pull/100905 +* Test framework for executable files by @christopherfujino in https://github.com/flutter/flutter/pull/101853 +* Fix InkWell highlight and splash sometimes persists by @bleroux in https://github.com/flutter/flutter/pull/100880 +* Fix Backbutton is not displayed when there is a endDrawer by @chunhtai in https://github.com/flutter/flutter/pull/101869 +* Clipping if only one character text overflows by @xu-baolin in https://github.com/flutter/flutter/pull/99146 +* RawKeyboardMacos accepts a new field "specifiedLogicalKey" by @dkwingsmt in https://github.com/flutter/flutter/pull/100803 +* Revert "Add default selection style (#100719)" by @chunhtai in https://github.com/flutter/flutter/pull/101921 +* De-dupe docs by @Piinks in https://github.com/flutter/flutter/pull/101934 +* adds `isAttached` getter to DraggableScrollableController by @maheshmnj in https://github.com/flutter/flutter/pull/100269 +* Revert "Fix reverse cases for App Bar scrolled under behavior (#101460)" by @Piinks in https://github.com/flutter/flutter/pull/101929 +* Linux and Windows right clicking text behavior by @justinmc in https://github.com/flutter/flutter/pull/101588 +* Revert "Fix Backbutton is not displayed when there is a endDrawer (#1… by @chunhtai in https://github.com/flutter/flutter/pull/101998 +* Add alignment parameter for `persistentFooterButtons` by @TahaTesser in https://github.com/flutter/flutter/pull/101297 +* Register a service extension for `profileUserWidgetBuilds` by @kenzieschmoll in https://github.com/flutter/flutter/pull/101989 +* Reland "Add default selection style (#100719)" by @chunhtai in https://github.com/flutter/flutter/pull/101954 +* Refactor 'FakeSceneBuilder' to use 'NoSuchMethod Forwarding' by @ColdPaleLight in https://github.com/flutter/flutter/pull/101970 +* Newly constructed tweens should have same begin and end by @werainkhatri in https://github.com/flutter/flutter/pull/94363 +* Add Material 3 `Dialog` examples and update existing `Dialog` examples by @TahaTesser in https://github.com/flutter/flutter/pull/101508 +* Add Material 3 `NavigationRail` example and improve Material 2 example by @TahaTesser in https://github.com/flutter/flutter/pull/101345 +* Migrate `ListTile` TextTheme TextStyle references to Material 3 by @TahaTesser in https://github.com/flutter/flutter/pull/101900 +* Add Material 3 `FloatingActionButton` and `FloatingActionButton` variants examples by @TahaTesser in https://github.com/flutter/flutter/pull/101105 +* Add examples and troubleshooting comment for `ClipRRect` by @bleroux in https://github.com/flutter/flutter/pull/101907 +* Delay focus trap unfocus until post-frame by @gspencergoog in https://github.com/flutter/flutter/pull/101847 +* Revert "Clipping if only one character text overflows" by @justinmc in https://github.com/flutter/flutter/pull/102092 +* Prevent Mediaquery from losing navigationMode value when removePadding() is called by @egramond in https://github.com/flutter/flutter/pull/101938 +* Fix a `DataTable` crash and improve some docs by @xu-baolin in https://github.com/flutter/flutter/pull/100959 +* Removed required from deprecated API by @Piinks in https://github.com/flutter/flutter/pull/102107 +* Expose `ignoringPointer` property for `Draggable` and `LongPressDraggable` by @xu-baolin in https://github.com/flutter/flutter/pull/100475 +* Revert "Migrate `ListTile` TextTheme TextStyle references to Material 3" by @HansMuller in https://github.com/flutter/flutter/pull/102152 +* Add API sample code to AccessibilityGuideline by @chunhtai in https://github.com/flutter/flutter/pull/102161 +* Fix spacing issues in `typography.dart`, `navigation_bar.dart` and `modal_barrier.dart` by @TahaTesser in https://github.com/flutter/flutter/pull/102136 +* Increased StandardMethodCodec's WriteBuffer start capacity by @gaaclarke in https://github.com/flutter/flutter/pull/101860 +* The sample code used within the comments in textContaining is wrong by @TowaYamashita in https://github.com/flutter/flutter/pull/100860 +* Improve 'NestedScrollView and internal scrolling' test to account for all the inner children layers by @TahaTesser in https://github.com/flutter/flutter/pull/102309 +* Adds tooltip to semantics node by @chunhtai in https://github.com/flutter/flutter/pull/87684 +* Replace `ListTile` with `Chip` in the `debugCheckHasMaterial control test` by @TahaTesser in https://github.com/flutter/flutter/pull/102311 +* Fix the code point for CupertinoIcons.location by @jason-simmons in https://github.com/flutter/flutter/pull/101923 +* Fix jumping when doing long press for selecting text by @rgevrek in https://github.com/flutter/flutter/pull/102270 +* Add matcher to find at least a given number of widgets (#102081) by @DanielCardonaRojas in https://github.com/flutter/flutter/pull/102342 +* Assign debugCreator for more layers by @wangying3426 in https://github.com/flutter/flutter/pull/101899 +* Enable TestDefaultBinaryMessenger to intercept all platform channels. by @HelioStrike in https://github.com/flutter/flutter/pull/100049 +* Re-land reverse case for AppBar scrolled under by @Piinks in https://github.com/flutter/flutter/pull/102343 +* Made Directionality forego dependency tracking for better performance. by @gaaclarke in https://github.com/flutter/flutter/pull/102336 +* [framework] allow disabling image filter layer by @jonahwilliams in https://github.com/flutter/flutter/pull/102085 +* Fix a `Slider` widget accessibility bug by @xu-baolin in https://github.com/flutter/flutter/pull/102129 +* Fix DraggableScrollableController.animateTo leaks Ticker by @bleroux in https://github.com/flutter/flutter/pull/102504 +* Avoid scheduling a forced frame when there is no child to the renderView by @dnfield in https://github.com/flutter/flutter/pull/102556 +* [framework] allow other RenderObjects to behave like repaint boundaries by @jonahwilliams in https://github.com/flutter/flutter/pull/101952 +* Revert "Re-land reverse case for AppBar scrolled under" by @Piinks in https://github.com/flutter/flutter/pull/102580 +* [framework] Reland: use ImageFilter for zoom page transition by @jonahwilliams in https://github.com/flutter/flutter/pull/102552 +* Improve efficiency of copying the animation ObserverList in notifyListeners by @jason-simmons in https://github.com/flutter/flutter/pull/102536 +* Fix docs re: return value of Navigator's restorable methods by @goderbauer in https://github.com/flutter/flutter/pull/102595 +* [framework] remove usage and deprecate physical model layer by @jonahwilliams in https://github.com/flutter/flutter/pull/102274 +* Revert "[framework] Reland: use ImageFilter for zoom page transition " by @jonahwilliams in https://github.com/flutter/flutter/pull/102611 +* add missing trailing commas in list/set/map literals by @a14n in https://github.com/flutter/flutter/pull/102585 +* rename local functions with `_`s by @pq in https://github.com/flutter/flutter/pull/102615 +* Fixes documentation inconsistencies around 'material' and 'material design' by @guidezpl in https://github.com/flutter/flutter/pull/102632 +* [reland] Refactor ToggleButtons (remove RawMaterialButton) by @TahaTesser in https://github.com/flutter/flutter/pull/101760 +* Migrate AppBar to Material 3 by @darrenaustin in https://github.com/flutter/flutter/pull/101884 +* Fix AppBar scrolledUnder initial state - the third by @Piinks in https://github.com/flutter/flutter/pull/102582 +* [flutter_driver] rename local functions with `_`s by @pq in https://github.com/flutter/flutter/pull/102689 +* Fix `BottomNavigationBar` label style text colors by @TahaTesser in https://github.com/flutter/flutter/pull/102638 +* Revert "Fix `BottomNavigationBar` label style text colors" by @Piinks in https://github.com/flutter/flutter/pull/102756 +* `ReorderableListView`: fix broken dartpad example & update examples, add tests by @TahaTesser in https://github.com/flutter/flutter/pull/102723 +* Add padding for Navigation Bar to account for safe area by @QuncCccccc in https://github.com/flutter/flutter/pull/102419 +* Correct typos by @apeltop in https://github.com/flutter/flutter/pull/102487 +* Add RouteInformationParser.parseRouteInformationWithDependencies by @chunhtai in https://github.com/flutter/flutter/pull/102414 +* [web] allow small golden deltas in HTML renderer by @yjbanov in https://github.com/flutter/flutter/pull/102791 +* Improvements to SearchDelegate by @prateekmedia in https://github.com/flutter/flutter/pull/91982 +* `ToggleButtons`: Add interactive example by @TahaTesser in https://github.com/flutter/flutter/pull/100124 +* Add `surfaceTintColor` to `NavigationBar` by @TahaTesser in https://github.com/flutter/flutter/pull/102628 +* `Hero`: Add an example for `createRectTween` by @TahaTesser in https://github.com/flutter/flutter/pull/102650 +* Defer the OverlayEntry listenable disposal until its widget is unmounted by @LongCatIsLooong in https://github.com/flutter/flutter/pull/102794 +* Update FAB M3 token template class to new naming scheme and fix a typo in `card.dart` by @TahaTesser in https://github.com/flutter/flutter/pull/102654 +* delete fast reassemble code by @jonahwilliams in https://github.com/flutter/flutter/pull/102842 +* Revert "delete fast reassemble code" by @zanderso in https://github.com/flutter/flutter/pull/102856 +* Adds RouterConfig to simply API by @chunhtai in https://github.com/flutter/flutter/pull/102786 +* Add widget of the week videos by @tvolkert in https://github.com/flutter/flutter/pull/102862 +* Fix `CupertinoDatePicker` dark mode text color by @TahaTesser in https://github.com/flutter/flutter/pull/100312 +* Fix `CupertinoFormRow` dark mode text color by @TahaTesser in https://github.com/flutter/flutter/pull/100313 +* Fix `CupertinoPicker` dark mode text color by @TahaTesser in https://github.com/flutter/flutter/pull/100310 +* Fix position of CupertinoContextMenu within Transform.scale by @moffatman in https://github.com/flutter/flutter/pull/97896 +* Revert "Fix position of CupertinoContextMenu within Transform.scale" by @darrenaustin in https://github.com/flutter/flutter/pull/102938 +* Fix `CupertinoTimerPicker` dark mode text color by @TahaTesser in https://github.com/flutter/flutter/pull/100311 +* [devicelab, flutter_test, ...] rename local functions with `_`s by @pq in https://github.com/flutter/flutter/pull/102833 +* partial revert of repaint boundary change by @jonahwilliams in https://github.com/flutter/flutter/pull/102962 +* (Test-only) Add tests for new `ImageFilter.dilate`/`ImageFilter.erode` in flutter engine by @fzyzcjy in https://github.com/flutter/flutter/pull/101036 +* Reland "Fix position of CupertinoContextMenu within Transform.scale" by @moffatman in https://github.com/flutter/flutter/pull/102943 +* Add prominent link to Google Fonts from icons documentation by @guidezpl in https://github.com/flutter/flutter/pull/102808 +* Don't hardcode ink sparkle SPIR-V by @zanderso in https://github.com/flutter/flutter/pull/102674 +* Fix crash from alt-tab'ing just after startup by @jeremyschlatter in https://github.com/flutter/flutter/pull/102453 +* Revert "Fix crash from alt-tab'ing just after startup" by @darrenaustin in https://github.com/flutter/flutter/pull/103074 +* Fix `NavigationDestination` API doc by @guidezpl in https://github.com/flutter/flutter/pull/103031 +* Add assertion that snackbars have a place to go by @Piinks in https://github.com/flutter/flutter/pull/103006 +* `CupertinoSearchTextField`: Add interactive examples by @TahaTesser in https://github.com/flutter/flutter/pull/103042 +* `CupertinoFormRow`: Add an interactive example by @TahaTesser in https://github.com/flutter/flutter/pull/103041 +* `CupertinoActivityIndicator`: Add an interactive example by @TahaTesser in https://github.com/flutter/flutter/pull/103040 +* `CupertinoSwitch`: Add an interactive example by @TahaTesser in https://github.com/flutter/flutter/pull/103043 +* Cupertino examples improvements and clean up by @TahaTesser in https://github.com/flutter/flutter/pull/103044 +* Fix DraggableScrollableSheet leaks Ticker by @bleroux in https://github.com/flutter/flutter/pull/102916 +* Add missing HIG links to cupertino documentation by @guidezpl in https://github.com/flutter/flutter/pull/103110 +* rename local functions with `_`s by @pq in https://github.com/flutter/flutter/pull/102991 +* Revert "Add assertion that snackbars have a place to go" by @Piinks in https://github.com/flutter/flutter/pull/103138 +* Revert "Fix jumping when doing long press for selecting text" by @CaseyHillers in https://github.com/flutter/flutter/pull/103141 +* Remove unnecessary space in doc comment of `TextStyle` by @nilsreichardt in https://github.com/flutter/flutter/pull/103117 +* DefaultTextEditingShortcuts should use meta-based shortcut for iOS by @chunhtai in https://github.com/flutter/flutter/pull/103077 +* Fix Backbutton is not displayed when there is a endDrawer by @chunhtai in https://github.com/flutter/flutter/pull/102093 +* Reland "Fix crash from alt-tab'ing just after startup" by @dkwingsmt in https://github.com/flutter/flutter/pull/103093 +* Clear the baseline cache when RenderBox is laid out by @xu-baolin in https://github.com/flutter/flutter/pull/101493 +* Does not replace the root layer unnecessarily by @xu-baolin in https://github.com/flutter/flutter/pull/101748 +* [DropdownButton]: Fix `alignment` parameter doesn't work for `hint` when `isExpanded: true` by @TahaTesser in https://github.com/flutter/flutter/pull/102752 +* Add blank line after first sentence of doc comment for `fontFamily` by @nilsreichardt in https://github.com/flutter/flutter/pull/103119 +* Fix a [CupertinoDatePicker] semantics bug by @xu-baolin in https://github.com/flutter/flutter/pull/103123 +* Increase Tooltip font size on Desktop by @bleroux in https://github.com/flutter/flutter/pull/103189 +* remove unnecessary .toString() by @a14n in https://github.com/flutter/flutter/pull/103226 +* remove assert on markNeedsCompositingBitsUpdate by @jonahwilliams in https://github.com/flutter/flutter/pull/103227 +* Update Cupertino examples and add missing tests by @TahaTesser in https://github.com/flutter/flutter/pull/103128 +* Fix `DropdownButton` menu clip by @TahaTesser in https://github.com/flutter/flutter/pull/102970 +* Updating the Slider Widget to allow up and down arrow keys to navigate out of the slider when in directional NavigationMode. by @egramond in https://github.com/flutter/flutter/pull/103149 +* Fix empty Stack with infinite constraints throws by @bleroux in https://github.com/flutter/flutter/pull/102642 +* Added clipBehavior on TabBarView by @QuncCccccc in https://github.com/flutter/flutter/pull/103166 +* Fix a `_WrappedScrollBehavior.shouldNotify` bug by @xu-baolin in https://github.com/flutter/flutter/pull/103267 +* `CupertinoTabScaffold`/`CupertinoTabController`: Add interactive examples by @TahaTesser in https://github.com/flutter/flutter/pull/103196 +* Adds `menuBarMenuLabel`, and removes unneeded key localizations by @gspencergoog in https://github.com/flutter/flutter/pull/102100 +* Replace ListView with ListView.builder for LicensesPage by @Maistho in https://github.com/flutter/flutter/pull/102692 +* Expose controller for PaginatedDataTable by @amanv8060 in https://github.com/flutter/flutter/pull/100005 +* Fix Tooltip obscured by keyboard by @bleroux in https://github.com/flutter/flutter/pull/103339 +* Updated tokens to v0.98. by @darrenaustin in https://github.com/flutter/flutter/pull/103360 +* fix compile error in the example code by @ktakayama in https://github.com/flutter/flutter/pull/103261 +* [Reland] Assert there are Scaffolds to present to for snackbars and banners by @Piinks in https://github.com/flutter/flutter/pull/103426 +* Fix selection not deselected when TextField loses focus by @Renzo-Olivares in https://github.com/flutter/flutter/pull/103424 +* fix `SliverReorderableList` not work on Android platform bug by @xu-baolin in https://github.com/flutter/flutter/pull/103406 +* Fix ThemeData extension throws when the ThemeExtension not found by @SuperPenguin in https://github.com/flutter/flutter/pull/103343 +* Accessibility troubleshooting docs for TextField widgets by @LongCatIsLooong in https://github.com/flutter/flutter/pull/103521 +* [gen_keycode, RawKeyboard] Apply derived keyboard layout from Linux by @dkwingsmt in https://github.com/flutter/flutter/pull/102709 +* Avoid analyzing API example code twice, clean-up by @goderbauer in https://github.com/flutter/flutter/pull/103548 +* [framework] fix slider regression due to touch slop changes by @jonahwilliams in https://github.com/flutter/flutter/pull/103569 +* Refactor web text editing shortcuts by @chunhtai in https://github.com/flutter/flutter/pull/103377 +* Provide default method call handler for SystemChannels.textInput by @fbcouch in https://github.com/flutter/flutter/pull/101087 +* Add Tooltip textAlign property by @bleroux in https://github.com/flutter/flutter/pull/103475 +* docs: update Cubic constructor doc. by @daniloapr in https://github.com/flutter/flutter/pull/103555 +* Add blank line after first sentence of doc comment for `CheckedModeBanner` by @nilsreichardt in https://github.com/flutter/flutter/pull/103490 +* Fix avoid_redundant_argument_values analyzer warnings enabled in the latest Dart SDK by @jason-simmons in https://github.com/flutter/flutter/pull/103734 +* Make _RenderCustomClip respect clipBehavior by @dnfield in https://github.com/flutter/flutter/pull/103748 +* Implement paintsChild on RenderObjects that skip painting on their children by @dnfield in https://github.com/flutter/flutter/pull/103768 +* [web] do not swallow WebDriver errors by @yjbanov in https://github.com/flutter/flutter/pull/103754 +* add noSuchMethod to _MulticastCanvas to unblock smoke testing against forthcoming new getTransform/Clip methods by @flar in https://github.com/flutter/flutter/pull/103737 +* Add VoidCallbackAction and VoidCallbackIntent by @gspencergoog in https://github.com/flutter/flutter/pull/103518 +* Add a mechanism to observe layer tree composition. by @dnfield in https://github.com/flutter/flutter/pull/103378 +* More missing clipBehavior respects by @dnfield in https://github.com/flutter/flutter/pull/103931 +* Final chapter: migrate api doc samples to super-parameters by @goderbauer in https://github.com/flutter/flutter/pull/104007 +* Reorder Theme fields and arguments to be consistently alphabetical within sections. by @gspencergoog in https://github.com/flutter/flutter/pull/104011 +* Revert "Fix Backbutton is not displayed when there is a endDrawer" by @CaseyHillers in https://github.com/flutter/flutter/pull/104039 +* `AppBar`: Fix nested scroll view doesn't update `AppBar` elevation for Material 3 by @TahaTesser in https://github.com/flutter/flutter/pull/103899 +* switched to a double variant of clamp to avoid boxing by @gaaclarke in https://github.com/flutter/flutter/pull/103559 +* Some MacOS control key shortcuts by @justinmc in https://github.com/flutter/flutter/pull/103936 +* Fix documentation for filterQuality fields by @bleroux in https://github.com/flutter/flutter/pull/104056 +* Can't drag the cursor with the mouse by @justinmc in https://github.com/flutter/flutter/pull/103002 +* Fix right clicking a field to focus by @justinmc in https://github.com/flutter/flutter/pull/103228 +* Add Tooltip default vertical padding by @bleroux in https://github.com/flutter/flutter/pull/103395 +* Stop recommending "shrinkWrap" by @dnfield in https://github.com/flutter/flutter/pull/104008 +* [Scrollbar]Skip the ScrollPosition check if the bar was unmounted by @xu-baolin in https://github.com/flutter/flutter/pull/103948 +* Add Material 3 `AppBar` example by @TahaTesser in https://github.com/flutter/flutter/pull/102823 +* Add StrokeAlign to Border by @bernaferrari in https://github.com/flutter/flutter/pull/102112 +* Define `ColorSwatch.lerp()` function by @davidmigloz in https://github.com/flutter/flutter/pull/103701 +* Add const `MaterialStatePropertyAll` class. by @darrenaustin in https://github.com/flutter/flutter/pull/104127 +* Add ShortcutsRegistry by @gspencergoog in https://github.com/flutter/flutter/pull/103456 +* [framework] inline AbstractNode into RenderObject by @jonahwilliams in https://github.com/flutter/flutter/pull/103832 +* Revert "Fix `DropdownButton` menu clip" by @Piinks in https://github.com/flutter/flutter/pull/104203 +* Add ability for `ModalRoutes` to ignore pointers during transitions and do so on `Cupertino` routes by @willlockwood in https://github.com/flutter/flutter/pull/95757 +* [Mouse] Remove all pointers at the end of tests by @dkwingsmt in https://github.com/flutter/flutter/pull/102694 +* Desktop platforms should not collapse selection on copy by @Renzo-Olivares in https://github.com/flutter/flutter/pull/104209 +* `CupertinoColors`: Add diagrams by @TahaTesser in https://github.com/flutter/flutter/pull/103280 +* Add Tooltip onTriggered callback by @bleroux in https://github.com/flutter/flutter/pull/104237 +* Fix tooltips don't dismiss when using TooltipTriggerMode.tap by @bleroux in https://github.com/flutter/flutter/pull/103960 +* Revert "[framework] inline AbstractNode into RenderObject" by @CaseyHillers in https://github.com/flutter/flutter/pull/104257 +* Add support for Material 3 medium and large top app bars. by @darrenaustin in https://github.com/flutter/flutter/pull/103962 +* Do not assert callbacks contains key if disposed by @dnfield in https://github.com/flutter/flutter/pull/104292 +* Mention that `NavigationBar` is a new widget by @guidezpl in https://github.com/flutter/flutter/pull/104264 +* [Keyboard, Windows] Fix that IME events are still dispatched to FocusNode.onKey by @dkwingsmt in https://github.com/flutter/flutter/pull/104244 +* Sped up Element._sort by @gaaclarke in https://github.com/flutter/flutter/pull/104103 +* Started sharing SemanticsProperties between the Widget and the RenderObject by @gaaclarke in https://github.com/flutter/flutter/pull/104281 +* Add Focus support for iOS platform view by @hellohuanlin in https://github.com/flutter/flutter/pull/103019 +* Fix ColorScheme.copyWith for surfaceTint by @darrenaustin in https://github.com/flutter/flutter/pull/104435 +* Fix `BottomAppBar` dip without FAB by @TahaTesser in https://github.com/flutter/flutter/pull/104490 +* `RefreshIndicator`: Add `notificationPredicate` example by @TahaTesser in https://github.com/flutter/flutter/pull/103894 +* [flutter roll] Revert "Add ability for `ModalRoutes` to ignore pointers during trans… by @XilaiZhang in https://github.com/flutter/flutter/pull/104520 +* Remove `RenderObject.rotate` by @LongCatIsLooong in https://github.com/flutter/flutter/pull/103092 +* Reland "Fix Backbutton is not displayed when there is a endDrawer (#1… by @chunhtai in https://github.com/flutter/flutter/pull/104110 +* Supports global selection for all devices by @chunhtai in https://github.com/flutter/flutter/pull/95226 +* Add an example and update `GestureDetector` documentation by @bleroux in https://github.com/flutter/flutter/pull/102360 +* Fix an issue that clearing the image cache may cause resource leaks by @Yeatse in https://github.com/flutter/flutter/pull/104527 +* [framework] ensure ink sparkle is disposed by @jonahwilliams in https://github.com/flutter/flutter/pull/104569 +* `Switch`: Add an interactive example by @TahaTesser in https://github.com/flutter/flutter/pull/103045 +* Use `curly_braces_in_flow_control_structures` for `material` by @guidezpl in https://github.com/flutter/flutter/pull/104499 +* [reland] Migrate `ListTile` TextTheme TextStyle references to Material 3 by @TahaTesser in https://github.com/flutter/flutter/pull/102167 +* A bunch of cleanups and a missing `ShortcutRegistar` in `WidgetsApp` by @gspencergoog in https://github.com/flutter/flutter/pull/104560 +* Remove unused code from tests by @goderbauer in https://github.com/flutter/flutter/pull/104550 +* Removing Shorcuts.of and Shortctus.maybeOf by @gspencergoog in https://github.com/flutter/flutter/pull/104215 +* Cleanup random dead test code by @goderbauer in https://github.com/flutter/flutter/pull/104568 +* Use `curly_braces_in_flow_control_structures` for `foundation`, `gestures`, `painting`, `physics` by @guidezpl in https://github.com/flutter/flutter/pull/104610 +* Use `curly_braces_in_flow_control_structures` for `animations`, `cupertino` by @guidezpl in https://github.com/flutter/flutter/pull/104612 +* Use `curly_braces_in_flow_control_structures` for `rendering` by @guidezpl in https://github.com/flutter/flutter/pull/104611 +* Use `curly_braces_in_flow_control_structures` for `services`, `scheduler`, `semantics` by @guidezpl in https://github.com/flutter/flutter/pull/104616 +* Use `curly_braces_in_flow_control_structures` for non-`flutter` packages by @guidezpl in https://github.com/flutter/flutter/pull/104629 +* Dispose ValueNotifier instances in LicensePage state classes by @tgucio in https://github.com/flutter/flutter/pull/104589 +* [Slider]The initial value of discrete slider should respect the discrete values by @xu-baolin in https://github.com/flutter/flutter/pull/103966 +* Hide the text selection toolbar on mobile when orientation changes by @markusaksli-nc in https://github.com/flutter/flutter/pull/103512 +* Dispose ValueNotifier in EditableTextState by @tgucio in https://github.com/flutter/flutter/pull/104590 +* Dispose ValueNotifier instances in RenderEditable by @tgucio in https://github.com/flutter/flutter/pull/104591 +* Include forceElevated for scrolledUnder in new SliverAppBar variants by @Piinks in https://github.com/flutter/flutter/pull/104536 +* Improve PlatformMenu `MenuItem` documentation by @ueman in https://github.com/flutter/flutter/pull/104321 +* fix a _DraggableScrollableSheetScrollPosition update bug by @xu-baolin in https://github.com/flutter/flutter/pull/103328 +* PlatformMenuBar changes to bring it into line with upcoming MenuBar implementation by @gspencergoog in https://github.com/flutter/flutter/pull/104565 +* [Reland]: Fix `DropdownButton` menu clip by @TahaTesser in https://github.com/flutter/flutter/pull/104251 +* Added option for Platform Channel statistics and Timeline events by @gaaclarke in https://github.com/flutter/flutter/pull/104531 +* Update links to `material` library docs by @guidezpl in https://github.com/flutter/flutter/pull/104392 +* Use `curly_braces_in_flow_control_structures` for `widgets` by @guidezpl in https://github.com/flutter/flutter/pull/104609 +* Fix typo "technicallv" in `editable_text.dart` by @nilsreichardt in https://github.com/flutter/flutter/pull/104701 +* Add error message and documentation when a `SnackBar` is off screen by @bleroux in https://github.com/flutter/flutter/pull/102073 +* Quick grammar fix in the PipelineOwner docs by @justinmc in https://github.com/flutter/flutter/pull/104730 +* Remove extraneous InheritedWidget by @gspencergoog in https://github.com/flutter/flutter/pull/104676 +* SelectableRegion does not merge child semantics nodes by @chunhtai in https://github.com/flutter/flutter/pull/104659 +* Added MaterialStatesController, updated InkWell et al. by @HansMuller in https://github.com/flutter/flutter/pull/103167 +* Fixes a bug when dragging selection handle sends events in wrong coor… by @chunhtai in https://github.com/flutter/flutter/pull/104739 +* Right click on selection when unfocused should re-focus by @justinmc in https://github.com/flutter/flutter/pull/104666 +* Update `material_color_utilities` dependency to 0.1.5. by @darrenaustin in https://github.com/flutter/flutter/pull/104771 +* Revert "Add error message and documentation when a `SnackBar` is off screen" by @Piinks in https://github.com/flutter/flutter/pull/104843 +* use immutable buffer for loading asset images by @jonahwilliams in https://github.com/flutter/flutter/pull/103496 +* Hide `SelectableRegion` text selection toolbar when orientation changes by @markusaksli-nc in https://github.com/flutter/flutter/pull/104841 +* fix: assert does not match annotation by @justforlxz in https://github.com/flutter/flutter/pull/104606 +* MacOS transpose keyboard shortcut by @justinmc in https://github.com/flutter/flutter/pull/104457 +* Add troubleshooting doc for MediaQueryData.size by @bleroux in https://github.com/flutter/flutter/pull/104828 +* `InheritedModel`: Add a complete interactive example and update snippet for null safety by @TahaTesser in https://github.com/flutter/flutter/pull/104174 +* Improve `PlatformException#stacktrace` docs for Android by @ueman in https://github.com/flutter/flutter/pull/104331 +* Switch debugAssertNotDisposed to be a static by @gspencergoog in https://github.com/flutter/flutter/pull/104772 +* more const immutable classes by @a14n in https://github.com/flutter/flutter/pull/104988 +* Fix `showSearch` query text field doesn't show toolbar initially when field is empty. by @TahaTesser in https://github.com/flutter/flutter/pull/105023 +* Remove remaining uses of hashValues in the framework by @jason-simmons in https://github.com/flutter/flutter/pull/105046 +* Fix actions padding for M3 alert dialogs by @guidezpl in https://github.com/flutter/flutter/pull/105008 +* Add `actionsPadding` to dialog theme by @guidezpl in https://github.com/flutter/flutter/pull/105109 +* Revert "Added MaterialStatesController, updated InkWell et al." by @HansMuller in https://github.com/flutter/flutter/pull/105138 +* Turn on `curly_braces_in_flow_control_structures` for developer-facing code by @guidezpl in https://github.com/flutter/flutter/pull/105113 +* Hide text selection toolbar when dragging handles on mobile by @markusaksli-nc in https://github.com/flutter/flutter/pull/104274 +* Revert "Hide text selection toolbar when dragging handles on mobile" by @zanderso in https://github.com/flutter/flutter/pull/105247 +* Refactor `MaterialStateProperty` lerp functions by @TahaTesser in https://github.com/flutter/flutter/pull/104507 +* Merge dirty relayout boundaries after `RenderObject.invokeLayoutCallback` by @LongCatIsLooong in https://github.com/flutter/flutter/pull/105175 +* Update documentation for app bar theme properties by @zeshuaro in https://github.com/flutter/flutter/pull/102501 +* `CheckedPopupMenuItem`: Fix cursor bug and add cursor parameter by @TahaTesser in https://github.com/flutter/flutter/pull/103474 +* Revert "Add `actionsPadding` to dialog theme" by @guidezpl in https://github.com/flutter/flutter/pull/105293 +* fix: Removed helper method from Scaffold by @albertodev01 in https://github.com/flutter/flutter/pull/99714 +* [DataTable]: Add ability to only select row using checkbox by @TahaTesser in https://github.com/flutter/flutter/pull/105123 +* Revert "[DataTable]: Add ability to only select row using checkbox (#105123)" by @TahaTesser in https://github.com/flutter/flutter/pull/105311 +* Remove `RenderAligningShiftedBox.mixin` (no longer needed) by @TahaTesser in https://github.com/flutter/flutter/pull/105177 +* Sort diagnostics node dependencies so that order is stable by @kenzieschmoll in https://github.com/flutter/flutter/pull/105319 +* remove forced compositing from opacity by @jonahwilliams in https://github.com/flutter/flutter/pull/105334 +* Do not crash if the controller and TabBarView are updated at different phases (build and layout) of the same frame. by @xu-baolin in https://github.com/flutter/flutter/pull/104998 +* [Stepper] Add Alternative Label on horizontal-type Stepper by @KKimj in https://github.com/flutter/flutter/pull/91496 +* Remove `new` keyword in a few files by @nilsreichardt in https://github.com/flutter/flutter/pull/104438 +* [framework] respect debugDisableShadows in slider thumbs by @jonahwilliams in https://github.com/flutter/flutter/pull/105467 +* Revert "remove forced compositing from opacity" by @zanderso in https://github.com/flutter/flutter/pull/105489 +* Fix `ButtonStyleButton` `InkWell` shape by @TahaTesser in https://github.com/flutter/flutter/pull/100226 +* Text selection located wrong position when selecting multiple lines over max lines by @takassh in https://github.com/flutter/flutter/pull/102747 +* Fix drawers are draggable on desktop platforms by @TahaTesser in https://github.com/flutter/flutter/pull/100476 +* Migrate `IconButton` to Material 3 - Part 1 by @QuncCccccc in https://github.com/flutter/flutter/pull/105176 +* Improve the `SliverChildBuilderDelegate` docs for folk to troubleshoot. by @xu-baolin in https://github.com/flutter/flutter/pull/103183 +* fix a _ScaffoldLayout delegate update bug by @xu-baolin in https://github.com/flutter/flutter/pull/104954 +* Updated tokens to v0.99. by @darrenaustin in https://github.com/flutter/flutter/pull/105545 +* Improve `useMaterial3` documentation by @guidezpl in https://github.com/flutter/flutter/pull/104815 +* `CupertinoSlider`: Add clickable cursor for web by @TahaTesser in https://github.com/flutter/flutter/pull/99557 +* TimePicker : Ability to define dialOnly / inputOnly modes by @LempereurBenjamin in https://github.com/flutter/flutter/pull/104491 +* add some exports of public API in foundation/serialization.dart by @a14n in https://github.com/flutter/flutter/pull/104231 +* Fix PageView throws Null check error by @bleroux in https://github.com/flutter/flutter/pull/104405 +* Fix `SliverReorderableList` item dispose by @TahaTesser in https://github.com/flutter/flutter/pull/105097 +* Fix BoxShadow toString() by @bleroux in https://github.com/flutter/flutter/pull/105696 +* Export public API types from foundation/*.dart library. by @a14n in https://github.com/flutter/flutter/pull/105648 +* Updating PrimaryScrollController for Desktop by @Piinks in https://github.com/flutter/flutter/pull/102099 +* exports public API types from scheduler/*.dart by @a14n in https://github.com/flutter/flutter/pull/105737 +* Reland: Added MaterialStatesController, updated InkWell et al. #103167 by @HansMuller in https://github.com/flutter/flutter/pull/105656 +* Text handle drag swap on Apple platforms by @justinmc in https://github.com/flutter/flutter/pull/105069 +* Remove duplicated key in _IconButtonM3 by @cedvdb in https://github.com/flutter/flutter/pull/105577 +* Add enabled property to CheckboxlistTile by @maheshmnj in https://github.com/flutter/flutter/pull/102314 +* Fixed issue with Hero Animations and BoxScrollViews in Scaffolds by @youssef-attia in https://github.com/flutter/flutter/pull/105654 +* Added useMaterial3 parameters to the light, dark and fallback ThemeData constructors. by @darrenaustin in https://github.com/flutter/flutter/pull/105944 +* Reland "Add actionsPadding to Dialog theme" by @guidezpl in https://github.com/flutter/flutter/pull/105588 +* TextInput: Verify TextRange and make method call fail loudly by @dkwingsmt in https://github.com/flutter/flutter/pull/104711 +* Updated tokens to v0.101. by @darrenaustin in https://github.com/flutter/flutter/pull/105923 +* Allow DoNothingIntent and DoNothingAndStopPropagationIntent to be used in a const environment by @dkwingsmt in https://github.com/flutter/flutter/pull/105983 +* Make RenderSliverGrid more accurately report overflow by @dnfield in https://github.com/flutter/flutter/pull/104064 +* Fix confusing typo: extent vs. extend selection by @jpnurmi in https://github.com/flutter/flutter/pull/106002 +* fix a Scaffold extendBodyBehindAppBar update bug by @xu-baolin in https://github.com/flutter/flutter/pull/104958 +* TextFormField docs: added proper type with GlobalKey; replaced "we" by @EnduringBeta in https://github.com/flutter/flutter/pull/105605 +* [framework] fix RangeSlider regression due to touch slop changes by @xu-baolin in https://github.com/flutter/flutter/pull/106094 +* Revert "Make RenderSliverGrid more accurately report overflow" by @dnfield in https://github.com/flutter/flutter/pull/106123 +* Fix SliverPadding geometry by @Piinks in https://github.com/flutter/flutter/pull/106071 +* Ignore uses of soon-to-be deprecated `NullThrownError`. by @lrhn in https://github.com/flutter/flutter/pull/105693 +* Fix `StretchingOverscrollIndicator` clipping and add `clipBehavior` parameter by @TahaTesser in https://github.com/flutter/flutter/pull/105303 +* [gen_keycodes] Remove invalid Web code maps by @dkwingsmt in https://github.com/flutter/flutter/pull/106074 +* Ignore body_might_complete_normally_catch_error violations by @srawlins in https://github.com/flutter/flutter/pull/105795 +* Fix debugPaintSize throws 'Null Check error' by @bleroux in https://github.com/flutter/flutter/pull/106108 +* Revert "Fix `StretchingOverscrollIndicator` clipping and add `clipBehavior` parameter" by @Piinks in https://github.com/flutter/flutter/pull/106207 +* Export public API types from gestures/*.dart library by @a14n in https://github.com/flutter/flutter/pull/105864 +* feat: add icon to AlertDialog by @werainkhatri in https://github.com/flutter/flutter/pull/104920 +* [docs] fix typos in page_transitions_theme.dart and tooltip.dart by @albinpk in https://github.com/flutter/flutter/pull/106264 +* [framework] remove opacity layer at fully opaque by @jonahwilliams in https://github.com/flutter/flutter/pull/106351 +* [Keyboard, Web] Map from "Esc" to the Escape key by @dkwingsmt in https://github.com/flutter/flutter/pull/106133 +* Update parameters to the `styleFrom` button methods. by @darrenaustin in https://github.com/flutter/flutter/pull/105291 +* Fix TooltipState null check error by @bleroux in https://github.com/flutter/flutter/pull/106330 +* Chip theme cleanup by @darrenaustin in https://github.com/flutter/flutter/pull/106384 +* Expose smart punctuation options on CupertinoSearchTextField by @moffatman in https://github.com/flutter/flutter/pull/97980 +* Revert "fix a Scaffold extendBodyBehindAppBar update bug" by @xu-baolin in https://github.com/flutter/flutter/pull/106396 +* Disable cursor opacity animation on macOS, make iOS cursor animation discrete by @LongCatIsLooong in https://github.com/flutter/flutter/pull/104335 +* Add "excluding" optional parameter to TargetPlatformVariant to communicate cases where test should be ran everywhere but specific platforms by @antholeole in https://github.com/flutter/flutter/pull/106216 +* Mark use of deprecated type. by @lrhn in https://github.com/flutter/flutter/pull/106282 +* [platform_view]Send platform message when platform view is focused by @hellohuanlin in https://github.com/flutter/flutter/pull/105050 +* Add toggled semantics to `ToggleButtons` by @guidezpl in https://github.com/flutter/flutter/pull/106096 +* docs: Add more potential use case for Bottom Navigation Bar by @amanv8060 in https://github.com/flutter/flutter/pull/99644 +* Apply PrimaryScrollController updates to SingleChildScrollView by @Piinks in https://github.com/flutter/flutter/pull/106430 +* Fix typo in flutter_test binding.dart by @bryanoltman in https://github.com/flutter/flutter/pull/106505 +* Export public API types from foundation/scheduler/gestures/semantics by @a14n in https://github.com/flutter/flutter/pull/106409 +* Fix BidirectionalIterator deprecation warning and roll engine to a1dd50405992 by @bdero in https://github.com/flutter/flutter/pull/106595 +* Fix typo in compute documentation: "captures" -> "capture" by @hacker1024 in https://github.com/flutter/flutter/pull/106624 +* Export SpellOutStringAttribute and LocaleStringAttribute by @Hixie in https://github.com/flutter/flutter/pull/106682 +* Implement frameData for TestWindow by @dnfield in https://github.com/flutter/flutter/pull/105537 +* Make TextInputClient a mixin by @justinmc in https://github.com/flutter/flutter/pull/104291 +* Export public API types from services/*.dart library by @a14n in https://github.com/flutter/flutter/pull/106316 +* Consistently capitalize Endpoint (not EndPoint) by @justinmc in https://github.com/flutter/flutter/pull/106706 +* Revert "Disable cursor opacity animation on macOS, make iOS cursor animation discrete (#104335)" by @LongCatIsLooong in https://github.com/flutter/flutter/pull/106762 +* Export public API types from animation and physics libraries by @a14n in https://github.com/flutter/flutter/pull/106757 +* Add Scaffold drawers escape dismiss action. by @TahaTesser in https://github.com/flutter/flutter/pull/106186 +* Reland "Clipping if only one character text overflows" by @xu-baolin in https://github.com/flutter/flutter/pull/102130 +* Set selection on tap down for desktop platforms and tap up for mobile by @Renzo-Olivares in https://github.com/flutter/flutter/pull/105505 +* [gen_keycodes] Mark generated file names with infix `.g.` by @dkwingsmt in https://github.com/flutter/flutter/pull/106142 +* Reland "fix a Scaffold extendBodyBehindAppBar update bug" by @xu-baolin in https://github.com/flutter/flutter/pull/106534 +* Fix `DropdownButton` Inkwell border radius by @TahaTesser in https://github.com/flutter/flutter/pull/106657 +* [Reland]: Fix `StretchingOverscrollIndicator` clipping and add `clipBehavior` parameter by @TahaTesser in https://github.com/flutter/flutter/pull/106287 +* Documentation update to advertize timedDrag by @bleroux in https://github.com/flutter/flutter/pull/106489 +* Reland "fix a Scaffold.bottomSheet update bug" by @xu-baolin in https://github.com/flutter/flutter/pull/106775 +* Fix DraggableScrollableSheet crash when switching out scrollables by @Piinks in https://github.com/flutter/flutter/pull/105549 +* Improve SnackBar error message when shown during build by @bleroux in https://github.com/flutter/flutter/pull/106658 +* Fix scrollbar track offset by @Piinks in https://github.com/flutter/flutter/pull/106835 +* Animated fractionally sized box by @Hari-07 in https://github.com/flutter/flutter/pull/106795 +* [flutter roll] Revert "Reland "Clipping if only one character text overflows (#99146… by @XilaiZhang in https://github.com/flutter/flutter/pull/106964 +* Add error messages to `_debugCanPerformMutations` by @LongCatIsLooong in https://github.com/flutter/flutter/pull/105638 +* [framework] partial removal of forced compositing from opacity by @jonahwilliams in https://github.com/flutter/flutter/pull/106989 +* [g3 roll] revert #105537 Implement frameData for TestWindow by @XilaiZhang in https://github.com/flutter/flutter/pull/107168 +* Migrate `IconButton` to Material 3 - Part 2 by @QuncCccccc in https://github.com/flutter/flutter/pull/106437 +* `SelectableText.rich`: Fix `TextSpan.style` not merged into default text style by @TahaTesser in https://github.com/flutter/flutter/pull/101911 +* Migrate Chips to Material 3 by @darrenaustin in https://github.com/flutter/flutter/pull/107166 +* Add documentation references to BottomSheetThemeData by @bleroux in https://github.com/flutter/flutter/pull/107149 +* Fix typo in painting.TextStyle.merge docs by @Goddchen in https://github.com/flutter/flutter/pull/106511 +* Clarify that inputFormatters don't run on programmatical changes by @LongCatIsLooong in https://github.com/flutter/flutter/pull/106904 +* Fix disallowIndicator for RefreshIndicator by @Piinks in https://github.com/flutter/flutter/pull/106831 +* Fix RawScrollbar colors by @Piinks in https://github.com/flutter/flutter/pull/107177 +* Add `RelativeRect.fromDirectional` factory by @kseino in https://github.com/flutter/flutter/pull/107059 +* `ui.PointerSignalKind` forwards-compatibility by @moffatman in https://github.com/flutter/flutter/pull/106906 +* Improve pub root directory interface by @CoderDake in https://github.com/flutter/flutter/pull/106567 +* [framework] don't composite with a scale of 0.0 by @jonahwilliams in https://github.com/flutter/flutter/pull/106982 +* Fixed AnimatedSwitcher chain produced duplicates by @youssef-attia in https://github.com/flutter/flutter/pull/106962 +* Remove listeners from pending images when clearing cache by @dnfield in https://github.com/flutter/flutter/pull/107276 +* `InputDecorator`: Switch hint to Opacity instead of AnimatedOpacity by @markusaksli-nc in https://github.com/flutter/flutter/pull/107156 +* Fix `ListTile` theme shape in a drawer by @TahaTesser in https://github.com/flutter/flutter/pull/106343 +* Revert "Fixed AnimatedSwitcher chain produced duplicates" to investigate issue with g3 by @youssef-attia in https://github.com/flutter/flutter/pull/107318 +* Add new widget of the week videos by @guidezpl in https://github.com/flutter/flutter/pull/107301 +* Reland "Disable cursor opacity animation on macOS, make iOS cursor animation discrete (#104335)" by @LongCatIsLooong in https://github.com/flutter/flutter/pull/106893 +* Fix showDialog throws cryptic message when context is not active by @bleroux in https://github.com/flutter/flutter/pull/107323 +* Reland"Make RenderSliverGrid more accurately report overflow" by @dnfield in https://github.com/flutter/flutter/pull/107329 +* Refactor gen_defaults to support multiple generated code blocks in the same file independently. by @darrenaustin in https://github.com/flutter/flutter/pull/107278 +* Fix TabController throws build scheduled during frame error by @bleroux in https://github.com/flutter/flutter/pull/105442 +* Revert "`InputDecorator`: Switch hint to Opacity instead of AnimatedOpacity" by @CaseyHillers in https://github.com/flutter/flutter/pull/107406 +* [flutter_releases] Flutter beta 3.3.0-0.2.pre Framework Cherrypicks by @godofredoc in https://github.com/flutter/flutter/pull/108831 +* CP: Fix Android platform view creation flow by @stuartmorgan in https://github.com/flutter/flutter/pull/109544 +* fix flutter not finding custom device (#108884) by @zanderso in https://github.com/flutter/flutter/pull/109957 +### Tooling +* Run CADisableMinimumFrameDurationOnPhone migration on all example apps by @jmagman in https://github.com/flutter/flutter/pull/101314 +* Catch errors in ProxiedDevice to make sure we don't crash on errors. by @chingjun in https://github.com/flutter/flutter/pull/101332 +* Use single quotes for `dartSdkVersionBounds` by @creativecreatorormaybenot in https://github.com/flutter/flutter/pull/101270 +* Partial revert of super params in tools by @goderbauer in https://github.com/flutter/flutter/pull/101436 +* Add --use-application-binary to "flutter install" by @jmagman in https://github.com/flutter/flutter/pull/101324 +* [Cherrypick] Partial revert of super params in tools (#101436) by @CaseyHillers in https://github.com/flutter/flutter/pull/101451 +* Specify Kotlin version in modules and refactor by @blasten in https://github.com/flutter/flutter/pull/101315 +* Remove --enable-web and --enable-windows-desktop from tests by @jmagman in https://github.com/flutter/flutter/pull/101208 +* [flutter_tools] fix flutter create --offline by @Jasguerrero in https://github.com/flutter/flutter/pull/100941 +* Run update-packages by @annagrin in https://github.com/flutter/flutter/pull/101450 +* Test Flutter.xcframework directory ios-arm64_armv7 or ios-arm64 by @jmagman in https://github.com/flutter/flutter/pull/101592 +* Log XCResult before other build issues by @cyanglaz in https://github.com/flutter/flutter/pull/100787 +* [flutter_tools] Add --build-number and --build-name support to web and linux by @JankoLancer in https://github.com/flutter/flutter/pull/100377 +* Add more debugging info to android_plugin_example_app_build_test by @dcharkes in https://github.com/flutter/flutter/pull/101685 +* Create when offline style by @Jasguerrero in https://github.com/flutter/flutter/pull/101589 +* Pass multidex flag when using --machine mode by @DanTup in https://github.com/flutter/flutter/pull/101689 +* Unpause and remove breakpoints when detaching from Flutter process with DAP by @DanTup in https://github.com/flutter/flutter/pull/101695 +* Enable track widget creation when generating Generated.xcconfig by @Yeatse in https://github.com/flutter/flutter/pull/101123 +* [flutter_tools] add test for dart binary arch by @christopherfujino in https://github.com/flutter/flutter/pull/101604 +* [flutter.js] Wait for reg.update, then activate sw (if not active yet). by @ditman in https://github.com/flutter/flutter/pull/101464 +* Remove the run_loop.h and run_loop.cpp files from template_manifest.json by @linxuebin1990 in https://github.com/flutter/flutter/pull/100976 +* Add Gradle stacktrace and debug log level to verbose builds by @blasten in https://github.com/flutter/flutter/pull/101734 +* [flutter_tools] Dump backtrace on ios app startup timeout by @christopherfujino in https://github.com/flutter/flutter/pull/101610 +* Revert "[flutter_tools] Dump backtrace on ios app startup timeout" by @christopherfujino in https://github.com/flutter/flutter/pull/101761 +* [flutter_tools] Re-land Dump backtrace on ios app startup timeout by @christopherfujino in https://github.com/flutter/flutter/pull/101763 +* Disallow `flutter run`-ing on 32-bit development devices by @jmagman in https://github.com/flutter/flutter/pull/97339 +* Do not build for iOS armv7 by @jmagman in https://github.com/flutter/flutter/pull/97341 +* Add `flutter build ipa --no-codesign` flag by @jmagman in https://github.com/flutter/flutter/pull/101766 +* Use the maven-publish plugin to publish AAR files. by @AesSedai101 in https://github.com/flutter/flutter/pull/101276 +* Revert "Use the maven-publish plugin to publish AAR files." by @zanderso in https://github.com/flutter/flutter/pull/101827 +* [flutter_tools] shard out two integration tests we want to run on macOS arm64 by @christopherfujino in https://github.com/flutter/flutter/pull/101769 +* [web] remove timeout when waiting for browser to launch by @yjbanov in https://github.com/flutter/flutter/pull/101843 +* Default to the newer version path when checking Android Studio Java path by @chingjun in https://github.com/flutter/flutter/pull/101862 +* Migrate remaining files to super parameters by @goderbauer in https://github.com/flutter/flutter/pull/101919 +* Use super parameters in templates by @goderbauer in https://github.com/flutter/flutter/pull/101157 +* Add VMService command to get frame rasterization metrics by @iskakaushik in https://github.com/flutter/flutter/pull/100696 +* ignore `prefer_final_parameters` in `generated_plugin_registrant` template by @DetachHead in https://github.com/flutter/flutter/pull/101253 +* Detect ARM ffi CocoaPods bus error by @jmagman in https://github.com/flutter/flutter/pull/101796 +* [flutter_tools] Remove usage of globals.flutterGit from version by @RoyARG02 in https://github.com/flutter/flutter/pull/100744 +* Exclude armv7 from iOS add-to-app plugins by @jmagman in https://github.com/flutter/flutter/pull/101943 +* Provide a flag for controlling the dart2js optimization level when building for web targets by @jason-simmons in https://github.com/flutter/flutter/pull/101945 +* Remove trailing spaces in repo by @guidezpl in https://github.com/flutter/flutter/pull/101191 +* Set template and migrate apps to iOS 11 minimum by @jmagman in https://github.com/flutter/flutter/pull/101963 +* Hide default bundle id error when xcresult detects an error by @cyanglaz in https://github.com/flutter/flutter/pull/101993 +* [flutter_tools] explicitly enable macos-desktop in macos_content_validation_test.dart by @christopherfujino in https://github.com/flutter/flutter/pull/102009 +* Use the maven-publish plugin to publish AAR files. by @AesSedai101 in https://github.com/flutter/flutter/pull/101891 +* Handle CocoaPods ffi stderr by @jmagman in https://github.com/flutter/flutter/pull/102327 +* Enable jank metric collection in profile mode by @iskakaushik in https://github.com/flutter/flutter/pull/102334 +* Hide unresolved DartUri log messages by @elliette in https://github.com/flutter/flutter/pull/102338 +* [flutter_tools] Add test that "Unresolve URI" warnings from DWDS are filtered from logs by @christopherfujino in https://github.com/flutter/flutter/pull/102399 +* [gen_l10n] Throw a specified exception when the language code is invalid by @AlexV525 in https://github.com/flutter/flutter/pull/102431 +* Reduce Gradle log level in verbose output by @blasten in https://github.com/flutter/flutter/pull/102422 +* [flutter_tools] remove UWP tooling by @jonahwilliams in https://github.com/flutter/flutter/pull/102174 +* [flutter_tools] Add entries to HostArtifacts for impellerc, libtessellator by @zanderso in https://github.com/flutter/flutter/pull/102593 +* [flutter_tools] rename local functions with `_`s by @pq in https://github.com/flutter/flutter/pull/102688 +* fix `unnecessary_null_checks` by @pq in https://github.com/flutter/flutter/pull/102705 +* Update features.dart by @timsneath in https://github.com/flutter/flutter/pull/102766 +* [flutter_tool] New command project by @Jasguerrero in https://github.com/flutter/flutter/pull/102118 +* Embed Flutter and App frameworks for add-to-app on iOS by @jmagman in https://github.com/flutter/flutter/pull/102538 +* [flutter_tools] update feature defaults by @christopherfujino in https://github.com/flutter/flutter/pull/102937 +* Update ffi gem installation instructions by @jmagman in https://github.com/flutter/flutter/pull/103008 +* Remove unused flutterMacOSPodspec artifact by @jmagman in https://github.com/flutter/flutter/pull/103088 +* Add debug logging to deferred components test for deflaking by @GaryQian in https://github.com/flutter/flutter/pull/103161 +* Remove custom `unawaited`, prefer `dart:async` version by @jmagman in https://github.com/flutter/flutter/pull/103212 +* [flutter_tools] add --uninstall-first flag and pipe it through to ios-deploy by @christopherfujino in https://github.com/flutter/flutter/pull/102948 +* Use consistent date instead of DateTime.now() in evaluation tests to avoid flakes by @DanTup in https://github.com/flutter/flutter/pull/103269 +* [flutter_tools] stringArg refactor by @Jasguerrero in https://github.com/flutter/flutter/pull/103231 +* MigrateUtils and MigrateManifest classes by @GaryQian in https://github.com/flutter/flutter/pull/101937 +* [flutter_tools] boolArg refactor by @amanv8060 in https://github.com/flutter/flutter/pull/102088 +* [flutter_tools] pub roll by @christopherfujino in https://github.com/flutter/flutter/pull/103220 +* Provide flutter sdk kernel files to dwds launcher instead of dart ones by @annagrin in https://github.com/flutter/flutter/pull/103436 +* Add tests for migrate command methods by @GaryQian in https://github.com/flutter/flutter/pull/103466 +* tools web Make Plugin Registrant file ephemeral. by @ditman in https://github.com/flutter/flutter/pull/102185 +* [gen_l10n] Better blank lines in the header of generated files by @AlexV525 in https://github.com/flutter/flutter/pull/103414 +* [flutter_tools] migrate some integration tests to null safety by @jonahwilliams in https://github.com/flutter/flutter/pull/103560 +* Enforce minimum plugin version iOS 11 by @jmagman in https://github.com/flutter/flutter/pull/103545 +* [flutter_tools] remove assertion for deprecation .packages by @jonahwilliams in https://github.com/flutter/flutter/pull/103729 +* [flutter_tools] ensure linux doctor validator finishes when pkg-config is not installed by @christopherfujino in https://github.com/flutter/flutter/pull/103755 +* Fix deprecation doc comment by @cbracken in https://github.com/flutter/flutter/pull/103776 +* [tool] Fix BuildInfo.packagesPath doc comment by @cbracken in https://github.com/flutter/flutter/pull/103785 +* [flutter_tools] fix test asset loading by @jonahwilliams in https://github.com/flutter/flutter/pull/103667 +* [flutter_tools] fix missing cmake by @christopherfujino in https://github.com/flutter/flutter/pull/103761 +* Roll dependendencies by @cbracken in https://github.com/flutter/flutter/pull/103771 +* [macOS] Update template icons to Big Sur style by @cbracken in https://github.com/flutter/flutter/pull/103739 +* Up CocoaPods minumum to 1.10 by @jmagman in https://github.com/flutter/flutter/pull/103655 +* [tool] Consistent FakeProcessManager.run/runSync by @cbracken in https://github.com/flutter/flutter/pull/103947 +* Add ability for PrebuiltWindowsApp to accept a zip archive. by @chingjun in https://github.com/flutter/flutter/pull/103918 +* [flutter_tools] throw error when argResults is null by @amanv8060 in https://github.com/flutter/flutter/pull/103827 +* [flutter_tools] pass --enable-impeller to android by @jonahwilliams in https://github.com/flutter/flutter/pull/104014 +* [flutter_tools] fix RangeError in flutter channel command by @christopherfujino in https://github.com/flutter/flutter/pull/103766 +* [tool] Add tests for FakeProcess by @cbracken in https://github.com/flutter/flutter/pull/104013 +* Handle null values during yaml metadata parsing validation by @jmagman in https://github.com/flutter/flutter/pull/104022 +* [flutter_tools] pass --compact-async to frontend_server by @jonahwilliams in https://github.com/flutter/flutter/pull/104026 +* Remove extraneous org.jetbrains.kotlin:kotlin-stdlib-jdk7 gradle dep by @GaryQian in https://github.com/flutter/flutter/pull/104028 +* Use libraryFilters flag to speed up coverage collection by @liamappelbe in https://github.com/flutter/flutter/pull/104122 +* [flutter_tools] Upgrade only from flutter update-packages by @christopherfujino in https://github.com/flutter/flutter/pull/103924 +* Show custom error message when Kotlin or Gradle bump is required by @blasten in https://github.com/flutter/flutter/pull/102421 +* Pass --verbosity=error to the Dart front-end by @zanderso in https://github.com/flutter/flutter/pull/104020 +* Refactor vswhere.exe integration by @loic-sharma in https://github.com/flutter/flutter/pull/104133 +* fixes 103234 to enable debugging Flutter apps on VR headset by @csells in https://github.com/flutter/flutter/pull/104135 +* continue->next in Ruby script by @jmagman in https://github.com/flutter/flutter/pull/104296 +* [tool] Add tests for FakeProcessManager by @cbracken in https://github.com/flutter/flutter/pull/104456 +* Ignore replacement characters from vswhere.exe output by @loic-sharma in https://github.com/flutter/flutter/pull/104284 +* Fix existing DUPLICATE_IMPORT diagnostics. by @scheglov in https://github.com/flutter/flutter/pull/104533 +* [web] [fix] Cache resource data only if the fetching succeed by @dacianf in https://github.com/flutter/flutter/pull/103816 +* [flutter_tools] General info project validator by @Jasguerrero in https://github.com/flutter/flutter/pull/103653 +* Migrate some test files to null safety by @jmagman in https://github.com/flutter/flutter/pull/104469 +* Migrate create command to null safety by @jmagman in https://github.com/flutter/flutter/pull/104484 +* Create static plugin frameworks build ios-framework --static by @jmagman in https://github.com/flutter/flutter/pull/104576 +* Remove dead code in tools tests by @goderbauer in https://github.com/flutter/flutter/pull/104567 +* Fix issues running integration tests through DAP debug adapter by @DanTup in https://github.com/flutter/flutter/pull/104618 +* Add link to more detailed multidex information. by @GaryQian in https://github.com/flutter/flutter/pull/104558 +* Retry getting tabs in chrome launcher on ConnectionException by @annagrin in https://github.com/flutter/flutter/pull/104218 +* Update Windows manifest to declare Windows 11 by @timsneath in https://github.com/flutter/flutter/pull/104768 +* tool web Fix flutter.js in Safari 13 by @ditman in https://github.com/flutter/flutter/pull/104761 +* Fix plugin_ffi bindings regen command and bump ffigen by @dcharkes in https://github.com/flutter/flutter/pull/104844 +* Support string compileSdkVersion for preview android SDKs by @GaryQian in https://github.com/flutter/flutter/pull/104662 +* [tool] Migrate off deprecated coverage parameters by @cbracken in https://github.com/flutter/flutter/pull/104997 +* Retry builds when SSL exceptions are thrown by @blasten in https://github.com/flutter/flutter/pull/105078 +* [flutter_tools] flutter daemon handles a closed stdout IOSink by @christopherfujino in https://github.com/flutter/flutter/pull/105075 +* [flutter_tools] handle HandshakeException in httphostvalidator by @christopherfujino in https://github.com/flutter/flutter/pull/105076 +* Refactor BuildIOSFrameworkCommand with common darwin baseclass by @jmagman in https://github.com/flutter/flutter/pull/105194 +* flutter drive --enable-software-rendering --skia-deterministic-rendering by @jmagman in https://github.com/flutter/flutter/pull/105161 +* Remove `package:shelf` version pin by @elliette in https://github.com/flutter/flutter/pull/105261 +* Extra timing on hot reload by @jensjoha in https://github.com/flutter/flutter/pull/104242 +* Move corrupted zip to a separate handler and ask user by @blasten in https://github.com/flutter/flutter/pull/105054 +* Add flutter build macos-framework command by @jmagman in https://github.com/flutter/flutter/pull/105242 +* [flutter_tools] add needsFullRestart flag on hot runner by @Jasguerrero in https://github.com/flutter/flutter/pull/104562 +* [flutter_tools] re-use findProjectRoot on flutter command by @Jasguerrero in https://github.com/flutter/flutter/pull/104850 +* Migrate status by @GaryQian in https://github.com/flutter/flutter/pull/102785 +* Pass run and drive --trace-systrace for iOS by @jmagman in https://github.com/flutter/flutter/pull/105321 +* [flutter_tools] return terminal to echo and line mode before exiting resident_runner by @christopherfujino in https://github.com/flutter/flutter/pull/105283 +* Migrate abandon by @GaryQian in https://github.com/flutter/flutter/pull/102789 +* Migrate apply by @GaryQian in https://github.com/flutter/flutter/pull/102787 +* Stop using `FallThroughError`. by @lrhn in https://github.com/flutter/flutter/pull/105600 +* [flutter_tools] add shuffle to hermetic run_tests by @christopherfujino in https://github.com/flutter/flutter/pull/105462 +* Make flutter attach respect the `--dds-port` flag. by @chingjun in https://github.com/flutter/flutter/pull/105560 +* Enable skipped test for Dart URI logs from DWDS by @elliette in https://github.com/flutter/flutter/pull/105274 +* [flutter_tools] Remove redundant/unused code in version.dart by @RoyARG02 in https://github.com/flutter/flutter/pull/105111 +* [flutter_tools] Fix leaky test by @christopherfujino in https://github.com/flutter/flutter/pull/105927 +* Remove unneeded date comment in `gradle-wrapper.properties` by @asashour in https://github.com/flutter/flutter/pull/104061 +* [flutter_tool] partial null safety migration of tool source code by @jonahwilliams in https://github.com/flutter/flutter/pull/105798 +* [flutter_tools] print override storage warning to STDERR instead of STDOUT by @christopherfujino in https://github.com/flutter/flutter/pull/106068 +* Add more CMake unit tests by @loic-sharma in https://github.com/flutter/flutter/pull/106076 +* parse build version on xcodeproj by @Jasguerrero in https://github.com/flutter/flutter/pull/105908 +* [flutter_tools] update test/src to null safety by @jonahwilliams in https://github.com/flutter/flutter/pull/106064 +* [web] Fix JS crash when FF blocks service workers. by @ditman in https://github.com/flutter/flutter/pull/106072 +* [flutter_tools] temporary directory by @Jasguerrero in https://github.com/flutter/flutter/pull/105815 +* Update package:archive and pin test_api by @jonahwilliams in https://github.com/flutter/flutter/pull/106157 +* Add integration test for `flutter build windows` by @loic-sharma in https://github.com/flutter/flutter/pull/106053 +* Do not show diagnostic warning for disconnected iOS devices by @jmagman in https://github.com/flutter/flutter/pull/105971 +* migrate more unit tests to null safety by @jonahwilliams in https://github.com/flutter/flutter/pull/106153 +* [flutter_tools] Have FlutterValidator fail on non-ideal git config by @RoyARG02 in https://github.com/flutter/flutter/pull/103259 +* migrate web integration tests to null safety by @jonahwilliams in https://github.com/flutter/flutter/pull/106231 +* Pass app.started events to the DAP client + dart.debuggerUris for Profile mode by @DanTup in https://github.com/flutter/flutter/pull/106337 +* [flutter_tools] tool exit access denied during symlinking by @christopherfujino in https://github.com/flutter/flutter/pull/106213 +* feat(tools): Arbitrary browser flags (closes #65575) by @Gustl22 in https://github.com/flutter/flutter/pull/104935 +* [flutter_tools] migrate project-validate to analyze --suggestions by @Jasguerrero in https://github.com/flutter/flutter/pull/106149 +* [flutter_tools] tool exit from flutter create when provided just a drive letter by @christopherfujino in https://github.com/flutter/flutter/pull/106451 +* Fix .packages breakage and roll engine to 83b9a591a3d5 by @bdero in https://github.com/flutter/flutter/pull/106584 +* [Windows] Flow version information to the build output by @loic-sharma in https://github.com/flutter/flutter/pull/106145 +* Refactor daemon to check for project's supported platforms by @helin24 in https://github.com/flutter/flutter/pull/106704 +* Put shaders under a 'shaders' section in the manifest by @zanderso in https://github.com/flutter/flutter/pull/106752 +* plugin_ffi warn about lack of platform support by @dcharkes in https://github.com/flutter/flutter/pull/106813 +* [flutter_tool] Pass --input-type to impellerc by @zanderso in https://github.com/flutter/flutter/pull/106845 +* Ignore invalid description in vswhere.exe JSON output by @loic-sharma in https://github.com/flutter/flutter/pull/106836 +* tool web Create an early web plugin_registrant for dartpad. by @ditman in https://github.com/flutter/flutter/pull/106921 +* manual pub package roll; remove test_api pin, unblock bumping dwds by @christopherfujino in https://github.com/flutter/flutter/pull/106887 +* Ensure flutter run build is done in incremental mode. by @aam in https://github.com/flutter/flutter/pull/107184 +* Pass URI converter from context to DDS by @helin24 in https://github.com/flutter/flutter/pull/106840 +* [flutter_tools] catch StdinException while trying to re-set single char mode by @christopherfujino in https://github.com/flutter/flutter/pull/107256 +* [fuchsia] Change format of ffx call to debug spam. by @akbiggs in https://github.com/flutter/flutter/pull/105169 +* Remove superfluous periods from `pub --help` subcommand descriptions. by @bryanoltman in https://github.com/flutter/flutter/pull/106925 +* [flutter_releases] Fix null check errors in attach command (CP of #107864) by @christopherfujino in https://github.com/flutter/flutter/pull/108394 +* CP Catch more general XmlException #106365 by @christopherfujino in https://github.com/flutter/flutter/pull/108839 +* Remove deprecated Ruby File.exists? in helper script by @jmagman in https://github.com/flutter/flutter/pull/110045 +### MacOS +* macos support for image_list by @Abhishek01039 in https://github.com/flutter/flutter/pull/84899 +* [macOS] Adds macOS project files to layers example by @cbracken in https://github.com/flutter/flutter/pull/102539 + +## New Contributors +* @matasb-google made their first contribution in https://github.com/flutter/flutter/pull/100267 +* @guillempuche made their first contribution in https://github.com/flutter/flutter/pull/100893 +* @JankoLancer made their first contribution in https://github.com/flutter/flutter/pull/100377 +* @Yeatse made their first contribution in https://github.com/flutter/flutter/pull/101123 +* @maxzod made their first contribution in https://github.com/flutter/flutter/pull/93408 +* @AesSedai101 made their first contribution in https://github.com/flutter/flutter/pull/101276 +* @DetachHead made their first contribution in https://github.com/flutter/flutter/pull/101253 +* @egramond made their first contribution in https://github.com/flutter/flutter/pull/101938 +* @TowaYamashita made their first contribution in https://github.com/flutter/flutter/pull/100860 +* @drewroengoogle made their first contribution in https://github.com/flutter/flutter/pull/102259 +* @elliette made their first contribution in https://github.com/flutter/flutter/pull/102338 +* @rgevrek made their first contribution in https://github.com/flutter/flutter/pull/102270 +* @DanielCardonaRojas made their first contribution in https://github.com/flutter/flutter/pull/102342 +* @JsouLiang made their first contribution in https://github.com/flutter/flutter/pull/100761 +* @apeltop made their first contribution in https://github.com/flutter/flutter/pull/102487 +* @prateekmedia made their first contribution in https://github.com/flutter/flutter/pull/91982 +* @jeremyschlatter made their first contribution in https://github.com/flutter/flutter/pull/102453 +* @sealesj made their first contribution in https://github.com/flutter/flutter/pull/103134 +* @Maistho made their first contribution in https://github.com/flutter/flutter/pull/102692 +* @ktakayama made their first contribution in https://github.com/flutter/flutter/pull/103261 +* @SuperPenguin made their first contribution in https://github.com/flutter/flutter/pull/103343 +* @daniloapr made their first contribution in https://github.com/flutter/flutter/pull/103555 +* @davidmigloz made their first contribution in https://github.com/flutter/flutter/pull/103701 +* @csells made their first contribution in https://github.com/flutter/flutter/pull/104135 +* @dacianf made their first contribution in https://github.com/flutter/flutter/pull/103816 +* @ueman made their first contribution in https://github.com/flutter/flutter/pull/104321 +* @justforlxz made their first contribution in https://github.com/flutter/flutter/pull/104606 +* @cadenkriese made their first contribution in https://github.com/flutter/flutter/pull/105189 +* @zeshuaro made their first contribution in https://github.com/flutter/flutter/pull/102501 +* @KKimj made their first contribution in https://github.com/flutter/flutter/pull/91496 +* @takassh made their first contribution in https://github.com/flutter/flutter/pull/102747 +* @LempereurBenjamin made their first contribution in https://github.com/flutter/flutter/pull/104491 +* @cedvdb made their first contribution in https://github.com/flutter/flutter/pull/105577 +* @EnduringBeta made their first contribution in https://github.com/flutter/flutter/pull/105605 +* @albinpk made their first contribution in https://github.com/flutter/flutter/pull/106264 +* @CoderDake made their first contribution in https://github.com/flutter/flutter/pull/106197 +* @Gustl22 made their first contribution in https://github.com/flutter/flutter/pull/104935 +* @hacker1024 made their first contribution in https://github.com/flutter/flutter/pull/106624 +* @Goddchen made their first contribution in https://github.com/flutter/flutter/pull/106511 +* @kseino made their first contribution in https://github.com/flutter/flutter/pull/107059 +* @akbiggs made their first contribution in https://github.com/flutter/flutter/pull/105169 + +**Full Changelog**: https://github.com/flutter/flutter/compare/3.0.0...3.3.0-0.5.pre diff --git a/src/development/tools/sdk/release-notes/supported-platforms.md b/src/development/tools/sdk/release-notes/supported-platforms.md index c54cbaedef..9ca1702f2a 100644 --- a/src/development/tools/sdk/release-notes/supported-platforms.md +++ b/src/development/tools/sdk/release-notes/supported-platforms.md @@ -29,7 +29,7 @@ Flutter supports the following platforms as part of Google-tested and best-effor |Platform|Version |Channels | |--------|------------------------------|---------| |Android | API 16 (Android 4.1) & above | All | -|iOS | iOS 9 & above | All | +|iOS | iOS 11 & above | All | |Linux | Debian, 64-bit | All | |macOS | El Capitan (10.11) & above | All | |Web | Chrome 84 & above | All | @@ -71,19 +71,19 @@ and stable channels. |Platform|Version | |--------|--------------------| |Android |Android SDK 16–18 | -|iOS |iOS 9-13* | +|iOS |iOS 11-13 | |Linux |Debian 11 | |Linux |Debian 9 & below | |Linux |Ubuntu 20.04 | |Linux |Ubuntu 22.04 (Aspirational Google-tested platform) | -|macOS |El Capitan (10.11) - Big Sur (11) | +|macOS |El Capitan (10.11) - Big Sur (11)* | |Windows |Windows 11 (Aspirational Google-tested platform) | |Windows |Windows 8 | |Windows |Windows 7 | {:.table.table-striped} -\* Flutter 3.0 is the last stable release with iOS 9 and 10 best-effort support. +\* Flutter 3.3 is the last stable release with macOS 10.11 and 10.12 best-effort support. ### Unsupported platforms @@ -91,7 +91,7 @@ and stable channels. |Platform|Version | |--------|--------------------------------------------| |Android |Android SDK 15 & below | -|iOS |[iOS 8][] & below and [`arm7v` 32-bit iOS][]| +|iOS |[iOS 10 & below and `arm7v` 32-bit iOS][] | |Linux |Any 32-bit platform | |macOS |Yosemite (10.10) & below | |Windows |Windows Vista & below | @@ -99,5 +99,4 @@ and stable channels. {:.table.table-striped} -[iOS 8]: {{site.url}}/go/rfc-ios8-deprecation -[`arm7v` 32-bit iOS]: {{site.url}}/go/rfc-32-bit-ios-unsupported +[iOS 10 & below and `arm7v` 32-bit iOS]: {{site.url}}/go/rfc-32-bit-ios-unsupported diff --git a/src/development/ui/advanced/actions_and_shortcuts.md b/src/development/ui/advanced/actions_and_shortcuts.md index 4d0d2fd0ad..acd1e5bb66 100644 --- a/src/development/ui/advanced/actions_and_shortcuts.md +++ b/src/development/ui/advanced/actions_and_shortcuts.md @@ -604,7 +604,6 @@ class MyApp extends StatelessWidget { primarySwatch: Colors.blue, ), home: Shortcuts( - manager: LoggingShortcutManager(), shortcuts: { LogicalKeySet(LogicalKeyboardKey.escape): const ClearIntent(), LogicalKeySet(LogicalKeyboardKey.control, LogicalKeyboardKey.keyC): diff --git a/src/development/ui/layout/constraints.md b/src/development/ui/layout/constraints.md index ed237b5dce..7c493671d6 100644 --- a/src/development/ui/layout/constraints.md +++ b/src/development/ui/layout/constraints.md @@ -335,7 +335,7 @@ class Button extends StatelessWidget { Widget build(BuildContext context) { return TextButton( style: TextButton.styleFrom( - primary: Colors.white, + foregroundColor: Colors.white, backgroundColor: isSelected ? Colors.grey : Colors.grey[800], ), child: Text(exampleNumber.toString()), diff --git a/src/development/ui/navigation/deep-linking.md b/src/development/ui/navigation/deep-linking.md index 6848e18536..42a42f0264 100644 --- a/src/development/ui/navigation/deep-linking.md +++ b/src/development/ui/navigation/deep-linking.md @@ -3,16 +3,27 @@ title: Deep linking description: Navigate to routes when the app receives a new URL --- -Flutter supports deep linking on iOS, Android, and web browsers. Opening a URL displays that screen in your app. With the following -steps, you can launch and display routes by using named routes (either with the -[`routes`][routes] parameter or [`onGenerateRoute`][onGenerateRoute]), or by +Flutter supports deep linking on iOS, Android, and web browsers. +Opening a URL displays that screen in your app. With the following +steps, you can launch and display routes by using named routes +(either with the [`routes`][routes] parameter or +[`onGenerateRoute`][onGenerateRoute]), or by using the [`Router`][Router] widget. +{{site.alert.note}} + Named routes are no longer recommended for most + applications. For more information, see + [Limitations][] in the [navigation overview][] page. +{{site.alert.note}} + +[Limitations]: {{site.url}}/development/ui/navigation#limitations +[navigation overview]: {{site.url}}/development/ui/navigation + If you're running the app in a web browser, there's no additional setup required. Route paths are handled in the same way as an iOS or Android deep link. By default, web apps read the deep link path from the url fragment using -the pattern: `/#/path/to/app/screen`, but this can be changed by [configuring -the URL strategy] for your app. +the pattern: `/#/path/to/app/screen`, but this can be changed by +[configuring the URL strategy][] for your app. To follow along, clone the [Navigation and Routing][router-sample] in flutter/samples. @@ -37,6 +48,7 @@ inside the ` `tag with the `".MainActivity"` name: A full restart is required to apply these changes. ## Test on Android emulator + To test with an Android emulator, give the `adb` command an intent where the host name matches the name defined in `AndroidManifest.xml`: @@ -70,12 +82,14 @@ Add two new keys to `Info.plist` in the ios/Runner directory: ``` -The `CFBundleURLName` is a unique URL used to distinguish your app from others -that use the same scheme. The scheme (`customscheme://`) can also be unique. +The `CFBundleURLName` is a unique URL used to distinguish +your app from others that use the same scheme. +The scheme (`customscheme://`) can also be unique. A full restart is required to apply these changes. ## Test on iOS simulator + Use the `xcrun` command to test on the iOS Simulator: ``` @@ -84,11 +98,12 @@ xcrun simctl openurl booted customscheme://flutterbooksample.com/book/1 ## Migrating from plugin-based deep linking -If you have written a plugin to handle deep links, as described in ["Deep Links -and Flutter applications" on Medium][plugin-linking], it will continue to work -until you opt-in to this behavior by adding `FlutterDeepLinkingEnabled` to -`Info.plist` or `flutter_deeplinking_enabled` to `AndroidManifest.xml`, -respectively. +If you have written a plugin to handle deep links, as described in +["Deep Links and Flutter applications"][plugin-linking] +(an article on Medium), +it will continue to work until you opt-in to this behavior by adding +`FlutterDeepLinkingEnabled` to `Info.plist` or +`flutter_deeplinking_enabled` to `AndroidManifest.xml`, respectively. ## Behavior diff --git a/src/development/ui/navigation/index.md b/src/development/ui/navigation/index.md index f7d943da50..2492ca2e17 100644 --- a/src/development/ui/navigation/index.md +++ b/src/development/ui/navigation/index.md @@ -1,37 +1,180 @@ --- title: Navigation and routing -description: Articles and cookbook recipes that address screen navigation. +description: Overview of Flutter's navigation and routing features --- -Flutter has an imperative routing mechanism, the `Navigator` widget, -and a more idiomatic declarative routing mechanism (which is similar to -build methods as used with widgets), the `Router` widget. +Flutter provides a complete system for navigating between screens and handling +deep links. Small applications without complex deep linking can use +[`Navigator`][], while apps with specific deep linking and navigation +requirements should also use the [`Router`][] to correctly handle deep links on +Android and iOS, and to stay in sync with the address bar when the app is +running on the web. -The two systems can be used together (indeed, the declarative system -is built using the imperative system). +To configure your Android or iOS application to handle deep links, see +[Deep linking][]. -Typically, small applications are served well by just using the -`Navigator` API, via the `MaterialApp` constructor's -[`MaterialApp.routes`][] property. +## Using the Navigator -To learn about `Navigator` and its imperative API, see the -[Navigation recipes][] in the [Flutter cookbook][], and the -[`Navigator`][] API docs. +The `Navigator` widget displays screens as a stack using the correct transition +animations for the target platform. To navigate to a new screen, access the +`Navigator` through the route’s `BuildContext` and call imperative methods such +as `push()` `or pop()`: -More elaborate applications are usually better served by the `Router` -API, via the [`MaterialApp.router`] constructor. This requires some -more up-front work to describe how to parse deep links for your -application and how to map the application state to the set of active -pages, but is more expressive in the long run. +```dart +onPressed: () { + Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => const SongScreen(song: song), + ), + ); +}, +child: Text(song.name), +``` -To learn about `Router` and the declarative approach, see [Learning -Flutter’s new navigation and routing system][], and the [`Router`][] -API docs. -[Flutter cookbook]: {{site.url}}/cookbook -[Learning Flutter’s new navigation and routing system]: {{site.flutter-medium}}/learning-flutters-new-navigation-and-routing-system-7c9068155ade -[Navigation recipes]: {{site.url}}/cookbook/navigation +Because `Navigator` keeps a stack of `Route` objects (representing the history +stack), The `push()` method also takes a `Route` object. The `MaterialPageRoute` +object is a subclass of `Route` that specifies the transition animations for +Material Design. For more examples of how to use the `Navigator`, follow the +[navigation recipes][] from the Flutter Cookbook or visit the [Navigator API +documentation][`Navigator`]. + +## Using named routes + +{{site.alert.note}} + We don't recommend using named routes for most applications. + For more information, see the Limitations section below. +{{site.alert.end}} + +Applications with simple navigation and deep linking requirements can use the +`Navigator` for navigation and the [`MaterialApp.routes`][] parameter for deep +links: + +```dart +@override + Widget build(BuildContext context) { + return MaterialApp( + routes: { + '/': (context) => HomeScreen(), + '/details': (context) => DetailScreen(), + }, + ); +} +``` + +Routes specified here are called _named routes_. For a complete example, follow +the [Navigate with named routes][] recipe from the Flutter Cookbook. + + +### Limitations + +Although named routes can handle deep links, the behavior is always the same and +can't be customized. When a new deep link is received by the platform, Flutter +pushes a new `Route` onto the Navigator regardless where the user currently is. + +Flutter also doesn’t support the browser forward button for applications using +named routes. For these reasons, we don’t recommend using named routes in most +applications. + +## Using the Router + +Flutter applications with advanced navigation and routing requirements (such as +a web app that uses direct links to each screen, or an app with multiple +`Navigator` widgets) should use a routing package such as [go_router][] that can +parse the route path and configure the `Navigator` whenever the app receives a +new deep link. + +To use the Router, switch to the `router` constructor on `MaterialApp` or +`CupertinoApp` and provide it with a `Router` configuration. Routing packages, +such as [go_router][], typically provide a +configuration for you. For example: + +```dart +MaterialApp.router( + routerConfig: GoRouter( + // … + ) +); +``` + +Because packages like go_router are _declarative_, they will always display the +same screen(s) when a deep link is received. + + +{{site.alert.secondary}} + **Note for advanced developers**: If you prefer not to use a routing package + and would like full control over navigation and routing in your app, override + `RouteInformationParser` and a`RouterDelegate`. When the state in your app + changes, you can precisely control the stack of screens by providing a list of + `Page` objects using the `Navigator.pages` parameter. For more details, see the + `Router` API documentation. +{{site.alert.end}} + +## Using Router and Navigator together + +The `Router` and `Navigator` are designed to work together. You can navigate +using the `Router` API through a declarative routing package, such as +`go_router`, or by calling imperative methods such as `push()` and `pop()` on +the `Navigator`. + +When you navigate using the `Router` or a declarative routing package, each +route on the Navigator is _page-backed_, meaning it was created from a +[`Page`][] using the [`pages`][] +argument on the `Navigator` constructor. Conversely, any `Route` +created by calling `Navigator.push` or `showDialog` will add a _pageless_ +route to the Navigator. If you are using a routing package, Routes that are +_page-backed_ are always deep-linkable, whereas _pageless_ routes +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. + +{{site.alert.note}} + You can't prevent navigation from page-backed screens using `WillPopScope`. + Instead, you should consult your routing package's API documentation. +{{site.alert.end}} + +## Web support + +Apps using the `Router` class integrate with the browser History API to provide +a consistent experience when using the browser's back and forward buttons. +Whenever you navigate using the `Router`, a History API entry is added to the +browser's history stack. Pressing the **back** button uses _[reverse +chronological navigation][]_, meaning that the user is taken to the previously +visited location that was shown using the `Router`. This means that if the user +pops a page from the `Navigator` and then presses the browser **back** button +the previous page is pushed back onto the stack. + +## More information + +For more information on navigation and routing, check out the following +resources: + +* The Flutter cookbook includes multiple [navigation recipes][] that show how to + use the `Navigator`. +* The [`Navigator`][] and [`Router`][] API documentation contain details on how + to set up declarative navigation without a routing package. +* [Understanding navigation][], a page from the Material Design documentation, + outlines concepts for designing the navigation in your app, including + explanations for forward, upward, and chronological navigation. +* [Learning Flutter's new navigation and routing system][], an article on + Medium, describes how to use the `Router` widget directly, without + a routing package. +* The [Router design document][] contains the motivation and design of the + Router` API. + [`Navigator`]: {{site.api}}/flutter/widgets/Navigator-class.html [`Router`]: {{site.api}}/flutter/widgets/Router-class.html -[`MaterialApp.routes`]: {{site.api}}/flutter/material/MaterialApp/routes.html -[`MaterialApp.router`]: {{site.api}}/flutter/material/MaterialApp/MaterialApp.router.html +[Deep linking]: {{site.url}}/development/ui/navigation/deep-linking +[navigation recipes]: {{site.url}}/cookbook#navigation +[`MaterialApp.routes`]: {{site.url}}/flutter/material/MaterialApp/routes.html +[Navigate with named routes]: {{site.url}}/cookbook/navigation/named-routes +[go_router]: {{site.pub}}/packages/go_router +[`Page`]: {{site.api}}/flutter/widgets/Page-class.html +[`pages`]: {{site.api}}/flutter/widgets/Navigator/pages.html +[reverse chronological navigation]: https://material.io/design/navigation/understanding-navigation.html#reverse-navigation +[Understanding navigation]: https://material.io/design/navigation/understanding-navigation.html +[Learning Flutter's new navigation and routing system]: {{site.medium}}/flutter/learning-flutters-new-navigation-and-routing-system-7c9068155ade +[Router design document]: {{site.main-url}}/go/navigator-with-router \ No newline at end of file diff --git a/src/development/ui/navigation/url-strategies.md b/src/development/ui/navigation/url-strategies.md index b652e64975..8c35216022 100644 --- a/src/development/ui/navigation/url-strategies.md +++ b/src/development/ui/navigation/url-strategies.md @@ -17,91 +17,18 @@ For example, `flutterexample.dev/#/path/to/screen`. ## Configuring the URL strategy To configure Flutter to use the path instead, use the -[setUrlStrategy][] function provided by the [flutter_web_plugins][] library in -the SDK. +[usePathUrlStrategy][] function provided by the [flutter_web_plugins][] library +in the SDK: -The `setUrlStrategy` API can only be called on the web. -The following instructions show how to use a conditional -import to call this function on the web, -but not on other platforms. - -{{site.alert.note}} -By default, Flutter uses the hash (`/#/`) location strategy. -These instructions are only required if you want to use -the URL path strategy. - -Instead of using these setup instructions, -you can also use the [`url_strategy`][] package. -{{site.alert.end}} - -## Web setup - -First, add `flutter_web_plugins` to your `pubspec.yaml`: - -```yaml -dependencies: - flutter_web_plugins: - sdk: flutter -``` - -Then call [setUrlStrategy][] before `runApp()`: - -``` -import 'package:flutter/material.dart'; -import 'package:flutter_web_plugins/flutter_web_plugins.dart'; - -void main() { - setUrlStrategy(PathUrlStrategy()); - runApp(MyApp()); -} -``` - -## Cross platform setup - -If your app is cross-platform, use Dart's conditional imports feature by -creating three files: - -**url_strategy.dart** - -``` -export 'url_strategy_noop.dart' if (dart.library.html) 'url_strategy_web.dart'; -``` - -**url_strategy_noop.dart** - -``` -void usePathUrlStrategy() { - // noop -} -``` - -**url_strategy_web.dart** - -``` -import 'package:flutter_web_plugins/flutter_web_plugins.dart'; - -void usePathUrlStrategy() { - setUrlStrategy(PathUrlStrategy()); -} -``` - -Then, call `setPathUrlStrategy` before `runApp()`: - -**main.dart** - -``` -import 'package:flutter/material.dart'; -import 'url_strategy.dart'; +```dart +import 'package:flutter_web_plugins/url_strategy.dart'; void main() { usePathUrlStrategy(); - runApp(MyApp()); + runApp(ExampleApp()); } ``` -Using conditional imports ensures that the `flutter_web_plugins` library is only -loaded when your app is running on the web. - ## Configuring your web server PathUrlStrategy uses the [History API][], which requires additional @@ -132,7 +59,7 @@ this tag to ``. [`PathUrlStrategy`]: {{site.api}}/flutter/flutter_web_plugins/PathUrlStrategy-class.html [`setUrlStrategy`]: {{site.api}}/flutter/flutter_web_plugins/setUrlStrategy.html [`url_strategy`]: {{site.pub-pkg}}/url_strategy -[setUrlStrategy]: https://api.flutter.dev/flutter/flutter_web_plugins/setUrlStrategy.html +[usePathUrlStrategy]: https://api.flutter.dev/flutter/flutter_web_plugins/usePathUrlStrategy.html [flutter_web_plugins]: https://api.flutter.dev/flutter/flutter_web_plugins/flutter_web_plugins-library.html [History API]: https://developer.mozilla.org/en-US/docs/Web/API/History_API [Configure rewrites]: {{site.url}}/development/ui/navigation/url-strategies diff --git a/src/get-started/flutter-for/react-native-devs.md b/src/get-started/flutter-for/react-native-devs.md index 0b19748408..f812d8e744 100644 --- a/src/get-started/flutter-for/react-native-devs.md +++ b/src/get-started/flutter-for/react-native-devs.md @@ -1674,6 +1674,15 @@ A list of routes might be specified in the [`MaterialApp`][] widget, or they might be built on the fly, for example, in hero animations. The following example specifies named routes in the `MaterialApp` widget. +{{site.alert.note}} + Named routes are no longer recommended for most + applications. For more information, see + [Limitations][] in the [navigation overview][] page. +{{site.alert.note}} + +[Limitations]: {{site.url}}/development/ui/navigation#limitations +[navigation overview]: {{site.url}}/development/ui/navigation + ```dart class NavigationApp extends StatelessWidget { diff --git a/src/get-started/install/_ios-setup.md b/src/get-started/install/_ios-setup.md index 4ab98f3170..e8c4ed1deb 100644 --- a/src/get-started/install/_ios-setup.md +++ b/src/get-started/install/_ios-setup.md @@ -53,9 +53,6 @@ follow these steps: simulator and drag it to change the scale. You can also use the **Window > Physical Size** or **Window > Pixel Accurate** options if your computer's resolution is high enough. - * If you are using a version of Xcode older - than 9.1, you should instead set the device scale - in the **Window > Scale** menu. ### Create and run a simple Flutter app @@ -85,12 +82,37 @@ follow these steps: ### Deploy to iOS devices -To deploy your Flutter app to a physical iOS device +To deploy your Flutter app to a physical iPhone or iPad you'll need to set up physical device deployment in Xcode and an Apple Developer account. If your app is using Flutter plugins, you will also need the third-party CocoaPods dependency manager.
      + +
    1. + + +The first time you use an attached physical device for iOS +development, you need to trust both your Mac and the +Development Certificate on that device. +On iOS 16 and higher you must also enable [Developer Mode][]. + +Select **Trust** in the dialog prompt when +first connecting the iOS device to your Mac. + +![Trust Mac][]{:.mw-100} + +Then, go to the Settings app on the iOS device, +select **General > Device Management** +and trust your Certificate. +For first time users, you might need to select +**General > Profiles > Device Management** instead. +On iOS 16 and higher, navigate back to the top level +of the Settings app, select **Privacy & Security > Developer Mode**, +and toggle Developer Mode on. + +
    2. +
    3. You can skip this step if your apps do not depend on @@ -142,21 +164,6 @@ Follow the Xcode signing flow to provision your project: For details about membership types, see [Choosing a Membership][]. - - * The first time you use an attached physical device for iOS - development, you need to trust both your Mac and the - Development Certificate on that device. - Select `Trust` in the dialog prompt when - first connecting the iOS device to your Mac. - - ![Trust Mac][]{:.mw-100} - - Then, go to the Settings app on the iOS device, - select **General > Device Management** - and trust your Certificate. - For first time users, you may need to select - **General > Profiles > Device Management** instead. - * 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} @@ -180,3 +187,4 @@ or clicking the Run button in Xcode. [web download]: {{site.apple-dev}}/xcode/ [Xcode account add]: {{site.url}}/assets/images/docs/setup/xcode-account.png [Apple Silicon Mac]: https://support.apple.com/en-us/HT211814 +[Developer Mode]: https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device diff --git a/src/release/breaking-changes/index.md b/src/release/breaking-changes/index.md index 77434b644e..59524084fc 100644 --- a/src/release/breaking-changes/index.md +++ b/src/release/breaking-changes/index.md @@ -18,14 +18,18 @@ release, and listed in alphabetical order: ### Not yet released to stable -* [Default PrimaryScrollController on Desktop][] -* [ThemeData's toggleableActiveColor property has been deprecated][] * [iOS FlutterViewController splashScreenView made nullable][] +* [ThemeData's toggleableActiveColor property has been deprecated][] + -[Default PrimaryScrollController on Desktop]: {{site.url}}/release/breaking-changes/primary-scroll-controller-desktop [ThemeData's toggleableActiveColor property has been deprecated]: {{site.url}}/release/breaking-changes/toggleable-active-color [iOS FlutterViewController splashScreenView made nullable]: {{site.url}}/release/breaking-changes/ios-flutterviewcontroller-splashscreenview-nullable +### Released in Flutter 3.3 +* [Default PrimaryScrollController on Desktop][] + +[Default PrimaryScrollController on Desktop]: {{site.url}}/release/breaking-changes/primary-scroll-controller-desktop + ### Released in Flutter 3 * [Deprecated API removed after v2.10][] diff --git a/src/release/breaking-changes/ios-flutterviewcontroller-splashscreenview-nullable.md b/src/release/breaking-changes/ios-flutterviewcontroller-splashscreenview-nullable.md index fdd65a3874..0577dd64fa 100644 --- a/src/release/breaking-changes/ios-flutterviewcontroller-splashscreenview-nullable.md +++ b/src/release/breaking-changes/ios-flutterviewcontroller-splashscreenview-nullable.md @@ -61,10 +61,13 @@ Code after migration: ## Timeline +Landed in version: TBD In stable release: TBD ## References -Related PR [][PR #34743] Make splashScreenView of FlutterViewController nullable +Relavant PR: +* [Make splashScreenView of FlutterViewController nullable][] +[Make splashScreenView of FlutterViewController nullable]: {{site.github}}/flutter/engine/pull/34743 [PR #34743]: {{site.github}}/flutter/engine/pull/34743 \ No newline at end of file diff --git a/src/release/breaking-changes/mock-platform-channels.md b/src/release/breaking-changes/mock-platform-channels.md index 1ea217c387..2f9695b2a3 100644 --- a/src/release/breaking-changes/mock-platform-channels.md +++ b/src/release/breaking-changes/mock-platform-channels.md @@ -169,7 +169,7 @@ Relevant PRs: * [PR #76288: Migrate to ChannelBuffers.push][] -[`TestDefaultBinaryMessenger`]: {{site.master-api}}/flutter/flutter_test/TestDefaultBinaryMessenger-class.html -[`TestDefaultBinaryMessengerBinding`]: {{site.master-api}}/flutter/flutter_test/TestDefaultBinaryMessengerBinding-mixin.html +[`TestDefaultBinaryMessenger`]: {{site.api}}/flutter/flutter_test/TestDefaultBinaryMessenger-class.html +[`TestDefaultBinaryMessengerBinding`]: {{site.api}}/flutter/flutter_test/TestDefaultBinaryMessengerBinding-mixin.html [PR #76288: Migrate to ChannelBuffers.push]: {{site.repo.flutter}}/pull/76288 diff --git a/src/release/breaking-changes/primary-scroll-controller-desktop.md b/src/release/breaking-changes/primary-scroll-controller-desktop.md index 2a33360caa..f5faffa517 100644 --- a/src/release/breaking-changes/primary-scroll-controller-desktop.md +++ b/src/release/breaking-changes/primary-scroll-controller-desktop.md @@ -178,8 +178,8 @@ Scaffold( ## Timeline -Landed in version: TBD
      -In stable release: TBD +Landed in version: 3.3.0-0.0.pre +In stable release: 3.3 ## References diff --git a/src/release/breaking-changes/toggleable-active-color.md b/src/release/breaking-changes/toggleable-active-color.md index c10fcf1601..5a215639dc 100644 --- a/src/release/breaking-changes/toggleable-active-color.md +++ b/src/release/breaking-changes/toggleable-active-color.md @@ -100,8 +100,8 @@ MaterialApp( ## Timeline -Landed in version: TBD
      -In stable release: not yet +Landed in version: TBD +In stable release: TBD ## References diff --git a/src/testing/errors.md b/src/testing/errors.md index f10dccb944..08d9bdc491 100644 --- a/src/testing/errors.md +++ b/src/testing/errors.md @@ -9,7 +9,8 @@ The Flutter framework catches errors that occur during callbacks triggered by the framework itself, including errors encountered during the build, layout, and paint phases. Errors that don't occur within Flutter's callbacks can't be caught by the framework, -but you can handle them by setting up a [`Zone`][]. +but you can handle them by setting up a error handler on the +[`PlatformDispatcher`][]. All errors caught by Flutter are routed to the [`FlutterError.onError`][] handler. By default, @@ -34,8 +35,8 @@ in debug mode this shows an error message in red, and in release mode this shows a gray background. When errors occur without a Flutter callback on the call stack, -they are handled by the `Zone` where they occur. By default, -a `Zone` only prints errors and does nothing else. +they are handled by the `PlatformDispatcher`'s error callback. By default, +this only prints errors and does nothing else. You can customize these behaviors, typically by setting them to values in @@ -75,7 +76,7 @@ void main() { {{site.alert.end}} This handler can also be used to report errors to a logging service. -For more details, see our cookbook chapter for +For more details, see our cookbook chapter for [reporting errors to a service][]. ## Define a custom error widget for build phase errors @@ -123,44 +124,25 @@ OutlinedButton( ``` If `invokeMethod` throws an error, it won't be forwarded to `FlutterError.onError`. -Instead, it's forwarded to the `Zone` where `runApp` was run. +Instead, it's forwarded to the `PlatformDispatcher`. -To catch such an error, use [`runZonedGuarded`][]. +To catch such an error, use [`PlatformDispatcher.instance.onError`][]. - + ```dart -import 'dart:async'; +import 'package:flutter/material.dart'; +import 'dart:ui'; void main() { - runZonedGuarded(() { - runApp(const MyApp()); - }, (error, stack) { + MyBackend myBackend = MyBackend(); + PlatformDispatcher.instance.onError = (error, stack) { myBackend.sendError(error, stack); - }); -} -``` - -Note that if in your app you call `WidgetsFlutterBinding.ensureInitialized()` -manually to perform some initialization before calling `runApp` (e.g. -`Firebase.initializeApp()`), you **must** call -`WidgetsFlutterBinding.ensureInitialized()` inside `runZonedGuarded`: - - -```dart -runZonedGuarded(() async { - WidgetsFlutterBinding.ensureInitialized(); - await Firebase.initializeApp(); + return true; + }; runApp(const MyApp()); -}, (error, stack) { - myBackend.sendError(error, stack); -}); +} ``` -{{site.alert.note}} - Error handling wouldn't work if `WidgetsFlutterBinding.ensureInitialized()` - was called from the outside. -{{site.alert.end}} - ## Handling all types of errors Say you want to exit application on any exception and to display @@ -169,24 +151,20 @@ your errors handling on next code snippet: ```dart -import 'dart:async'; -import 'dart:io'; import 'package:flutter/material.dart'; +import 'dart:ui'; -void main() { - runZonedGuarded(() async { - WidgetsFlutterBinding.ensureInitialized(); - await myErrorsHandler.initialize(); - FlutterError.onError = (details) { - FlutterError.presentError(details); - myErrorsHandler.onErrorDetails(details); - exit(1); - }; - runApp(const MyApp()); - }, (error, stack) { +Future main() async { + await myErrorsHandler.initialize(); + FlutterError.onError = (details) { + FlutterError.presentError(details); + myErrorsHandler.onErrorDetails(details); + }; + PlatformDispatcher.instance.onError = (error, stack) { myErrorsHandler.onError(error, stack); - exit(1); - }); + return true; + }; + runApp(const MyApp()); } class MyApp extends StatelessWidget { @@ -215,5 +193,5 @@ class MyApp extends StatelessWidget { [`kReleaseMode`]: {{site.api}}/flutter/foundation/kReleaseMode-constant.html [`MaterialApp.builder`]: {{site.api}}/flutter/material/MaterialApp/builder.html [reporting errors to a service]: {{site.url}}/cookbook/maintenance/error-reporting -[`runZonedGuarded`]: {{site.api}}/flutter/dart-async/runZonedGuarded.html -[`Zone`]: {{site.api}}/flutter/dart-async/Zone-class.html +[`PlatformDispatcher.instance.onError`]: {{site.api}}/flutter/dart-ui/PlatformDispatcher/onError.html +[`PlatformDispatcher`]: {{site.api}}/flutter/dart-ui/PlatformDispatcher-class.html diff --git a/src/whats-new.md b/src/whats-new.md index 75f64ed503..e023918e33 100644 --- a/src/whats-new.md +++ b/src/whats-new.md @@ -20,6 +20,54 @@ and review the [Dart changelog][]. [Dart Announce]: https://groups.google.com/a/dartlang.org/g/announce [Dart changelog]: {{site.github}}/dart-lang/sdk/blob/main/CHANGELOG.md +## Aug 31, 2022, Flutter Vikings Edition: 3.3 release + +Flutter 3.3 is live! For more information, see +{% comment %} +[Announcing Flutter 3.3 at Flutter Vikings][], +{% endcomment %} +[What's new in Flutter 3.3][], +and [Dart 2.18: Objective-C & Swift interop][] (free articles on Medium), +and the [Flutter 3.3 release notes][3.3 release notes]. + +[3.3 release notes]: {{site.url}}/development/tools/sdk/release-notes/release-notes-3.3.0 +[Announcing Flutter 3.3 at Flutter Vikings]: {{site.medium}}/flutter/announcing-flutter-3-3-at-flutter-vikings-6f213e068793 +[Dart 2.18: Objective-C & Swift interop]: {{site.medium}}/dartlang/dart-2-18-f4b3101f146c +[What's new in Flutter 3.3]: {{site.medium}}/flutter/whats-new-in-flutter-3-3-893c7b9af1ff + +**Docs updated or added since the 3.0 release** + +* The [navigation and routing overview][] page has been + rewritten with more guidance on using `Navigator` + and `Router` together, named routes, and + using a routing package. +* The [URL strategies][] page has also been updated + to reflect a more streamlined API. +* For apps not published to the Microsoft Store, you + can now set the app's executable's file and + product versions in the pubspec file. + For more information, see + [Build and release a Windows desktop app][]. +* If you are developing software for iOS 16 and higher, + you must enable [Developer mode][]. + The [macOS install][] page is updated + with this information. +* As described in the [3.3 release notes][], + you should catch all errors and exceptions + in your app by setting + the `PlatformDispatcher.onError` callback, + instead of using a custom `Zone`. + The [Handling errors in Flutter][] + page has been updated with this advice. + +[Build and release a Windows desktop app]: {{site.url}}/deployment/windows +[Developer mode]: https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device +[Handling errors in Flutter]: {{site.url}}/testing/errors +[macOS install]: {{site.url}}/get-started/install/macos#install-xcode +[navigation and routing overview]: {{site.url}}/development/ui/navigation +[URL strategies]: {{site.url}}/development/ui/navigation/url-strategies + + ## May 11, 2022, Google I/O Edition: Flutter 3 release Flutter 3 is live!!! For more information, see @@ -156,12 +204,12 @@ publication since the last stable release: * [GSoC'21: Creating a desktop sample for Flutter][] * [Flutter Hot Reload][] * [What can we do to better improve Flutter?][] -* [Adding Flutter to your existing iOS and Android codebases][] +* [Adding Flutter to your existing iOS and Android codebases][] * [Google I/O Spotlight: Flutter in action at ByteDance][] * [Improving Platform Channel Performance in Flutter][] -[Adding Flutter to your existing iOS and Android codebases]: {{site.flutter-medium}}/adding-flutter-to-your-existing-ios-and-android-codebases-3e2c5a4797c1 +[Adding Flutter to your existing iOS and Android codebases]: {{site.flutter-medium}}/adding-flutter-to-your-existing-ios-and-android-codebases-3e2c5a4797c1 [What's new in Flutter 2.5]: {{site.flutter-medium}}/whats-new-in-flutter-2-5-6f080c3f3dc [Flutter Hot Reload]: {{site.flutter-medium}}/flutter-hot-reload-f3c5994e2cee [Google I/O Spotlight: Flutter in action at ByteDance]: {{site.flutter-medium}}/google-i-o-spotlight-flutter-in-action-at-bytedance-c22f4b6dc9ef