Update link branches to `main` (#146558)

- Update CS and googlesource.com link branches
- Update GitHub /blob/ and /tree/ links

Tested links manually and fixes a few broken or deprecated links

Added a test that validates that `master` isn't used, except for
specified repos.

Part of https://github.com/flutter/flutter/issues/121564

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

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

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#overview
[Tree Hygiene]: https://github.com/flutter/flutter/wiki/Tree-hygiene
[test-exempt]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/wiki/Style-guide-for-Flutter-repo#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/wiki/Tree-hygiene#handling-breaking-changes
[Discord]: https://github.com/flutter/flutter/wiki/Chat
[Data Driven Fixes]:
https://github.com/flutter/flutter/wiki/Data-driven-Fixes
diff --git a/.github/workflows/easy-cp.yml b/.github/workflows/easy-cp.yml
index 62caf93..a77109a 100644
--- a/.github/workflows/easy-cp.yml
+++ b/.github/workflows/easy-cp.yml
@@ -53,7 +53,7 @@
       # TODO(xilaizhang): remove this step once the template is available on release branches.
       - name: Get CP Template
         run: |
-          curl -o PULL_REQUEST_CP_TEMPLATE.md https://raw.githubusercontent.com/flutter/flutter/master/.github/PR_TEMPLATE/PULL_REQUEST_CP_TEMPLATE.md
+          curl -o PULL_REQUEST_CP_TEMPLATE.md https://raw.githubusercontent.com/flutter/flutter/main/.github/PR_TEMPLATE/PULL_REQUEST_CP_TEMPLATE.md
       - name: Create PR on CP success
         if: ${{ steps.attempt-cp.conclusion == 'success' }}
         working-directory: ./flutter
diff --git a/README.md b/README.md
index ddce07b..e19a80f 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,7 @@
 * [Install Flutter](https://flutter.dev/get-started/)
 * [Flutter documentation](https://docs.flutter.dev/)
 * [Development wiki](https://github.com/flutter/flutter/wiki)
-* [Contributing to Flutter](https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md)
+* [Contributing to Flutter](https://github.com/flutter/flutter/blob/main/CONTRIBUTING.md)
 
 For announcements about new releases, follow the
 [flutter-announce@googlegroups.com](https://groups.google.com/forum/#!forum/flutter-announce)
@@ -121,5 +121,5 @@
 [macOS FFI]: https://docs.flutter.dev/development/platform-integration/macos/c-interop
 [Windows FFI]: https://docs.flutter.dev/development/platform-integration/windows/building#integrating-with-windows
 [platform channels]: https://docs.flutter.dev/development/platform-integration/platform-channels
-[interop example]: https://github.com/flutter/flutter/tree/master/examples/platform_channel
+[interop example]: https://github.com/flutter/flutter/tree/main/examples/platform_channel
 [Impeller]: https://docs.flutter.dev/perf/impeller
diff --git a/dev/bots/README.md b/dev/bots/README.md
index 491a614..4d6203e 100644
--- a/dev/bots/README.md
+++ b/dev/bots/README.md
@@ -61,7 +61,7 @@
 will indicate the recipe used for a test.
 
 Recipes are just Python with some limitations on what can be imported. They are
-[documented](https://github.com/luci/recipes-py/blob/master/doc/user_guide.md)
+[documented](https://github.com/luci/recipes-py/blob/main/doc/user_guide.md)
 by the [luci/recipes-py GitHub project](https://github.com/luci/recipes-py).
 
 The typical cycle for editing a recipe is:
diff --git a/dev/bots/analyze.dart b/dev/bots/analyze.dart
index 4c2cb47..f49162a 100644
--- a/dev/bots/analyze.dart
+++ b/dev/bots/analyze.dart
@@ -109,9 +109,12 @@
   printProgress('Debug mode instead of checked mode...');
   await verifyNoCheckedMode(flutterRoot);
 
-  printProgress('Links for creating GitHub issues');
+  printProgress('Links for creating GitHub issues...');
   await verifyIssueLinks(flutterRoot);
 
+  printProgress('Links to GitHub...');
+  await verifyGitHubLinks(flutterRoot);
+
   printProgress('Unexpected binaries...');
   await verifyNoBinaries(flutterRoot);
 
@@ -1220,7 +1223,7 @@
 Future<void> verifyIssueLinks(String workingDirectory) async {
   const String issueLinkPrefix = 'https://github.com/flutter/flutter/issues/new';
   const Set<String> stops = <String>{ '\n', ' ', "'", '"', r'\', ')', '>' };
-  assert(!stops.contains('.')); // instead of "visit https://foo." say "visit: https://", it copy-pastes better
+  assert(!stops.contains('.')); // instead of "visit https://foo." say "visit: https://foo", it copy-pastes better
   const String kGiveTemplates =
     'Prefer to provide a link either to $issueLinkPrefix/choose (the list of issue '
     'templates) or to a specific template directly ($issueLinkPrefix?template=...).\n';
@@ -1291,6 +1294,68 @@
   }
 }
 
+Future<void> verifyGitHubLinks(String workingDirectory) async {
+  const Set<String> stops = <String>{ '\n', ' ', "'", '"', r'\', ')', '>' };
+  assert(!stops.contains('.')); // instead of "visit https://foo." say "visit: https://foo", it copy-pastes better
+
+  // Repos whose default branch is still 'master'
+  const Set<String> repoExceptions = <String>{
+    'clojure/clojure',
+    'dart-lang/test', // TODO(guidezpl): remove when https://github.com/dart-lang/test/issues/2209 is closed
+    'eseidelGoogle/bezier_perf',
+    'flutter/devtools', // TODO(guidezpl): remove when https://github.com/flutter/devtools/issues/7551 is closed
+    'flutter/flutter_gallery_assets', // TODO(guidezpl): remove when subtask in https://github.com/flutter/flutter/issues/121564 is complete
+    'flutter/flutter-intellij', // TODO(guidezpl): remove when https://github.com/flutter/flutter-intellij/issues/7342 is closed
+    'flutter/platform_tests', // TODO(guidezpl): remove when subtask in https://github.com/flutter/flutter/issues/121564 is complete
+    'glfw/glfw',
+    'material-components/material-components-android', // TODO(guidezpl): remove when https://github.com/material-components/material-components-android/issues/4144 is closed
+    'torvalds/linux',
+    'tpn/winsdk-10',
+  };
+
+  const List<String> linkPrefixes = <String>[
+    'https://raw.githubusercontent.com/',
+    'https://github.com/',
+  ];
+
+  final List<String> problems = <String>[];
+  final Set<String> suggestions = <String>{};
+  final List<File> files = await _gitFiles(workingDirectory);
+  for (final File file in files) {
+    for (final String linkPrefix in linkPrefixes) {
+      final Uint8List bytes = file.readAsBytesSync();
+      // We allow invalid UTF-8 here so that binaries don't trip us up.
+      // There's a separate test in this file that verifies that all text
+      // files are actually valid UTF-8 (see verifyNoBinaries below).
+      final String contents = utf8.decode(bytes, allowMalformed: true);
+      int start = 0;
+      while ((start = contents.indexOf(linkPrefix, start)) >= 0) {
+        int end = start + linkPrefixes.length;
+        while (end < contents.length && !stops.contains(contents[end])) {
+          end += 1;
+        }
+        final String url = contents.substring(start, end);
+        if (url.startsWith(linkPrefix) && !repoExceptions.any(url.contains)) {
+          if (url.contains('master')) {
+            problems.add('${file.path} contains $url, which uses the banned "master" branch.');
+            suggestions.add('Change the URLs above to the expected pattern by '
+              'using the "main" branch if it exists, otherwise adding the '
+              'repository to the list of exceptions in analyze.dart.');
+          }
+        }
+        start = end;
+      }
+    }
+  }
+  assert(problems.isEmpty == suggestions.isEmpty);
+  if (problems.isNotEmpty) {
+    foundError(<String>[
+      ...problems,
+      ...suggestions,
+    ]);
+  }
+}
+
 @immutable
 class Hash256 {
   const Hash256(this.a, this.b, this.c, this.d);
diff --git a/dev/bots/codelabs_build_test.sh b/dev/bots/codelabs_build_test.sh
index ef594a9..e5f70c1 100755
--- a/dev/bots/codelabs_build_test.sh
+++ b/dev/bots/codelabs_build_test.sh
@@ -29,7 +29,7 @@
   rm "$log_file"
 else
   all_builds_ok=0
-  echo "View https://github.com/flutter/flutter/blob/master/dev/bots/README.md for steps to resolve this failed build test." >> ${log_file}
+  echo "View https://github.com/flutter/flutter/blob/main/dev/bots/README.md for steps to resolve this failed build test." >> ${log_file}
   echo
   echo "Log left in $log_file."
   echo
diff --git a/dev/conductor/core/bin/cli.dart b/dev/conductor/core/bin/cli.dart
index 6c2025b..f1394ca 100644
--- a/dev/conductor/core/bin/cli.dart
+++ b/dev/conductor/core/bin/cli.dart
@@ -13,7 +13,7 @@
 import 'package:platform/platform.dart';
 import 'package:process/process.dart';
 
-const String readmeUrl = 'https://github.com/flutter/flutter/tree/master/dev/conductor/README.md';
+const String readmeUrl = 'https://github.com/flutter/flutter/tree/main/dev/conductor/README.md';
 
 Future<void> main(List<String> args) async {
   const FileSystem fileSystem = LocalFileSystem();
diff --git a/dev/customer_testing/run_tests.dart b/dev/customer_testing/run_tests.dart
index cb3f421..276402b 100644
--- a/dev/customer_testing/run_tests.dart
+++ b/dev/customer_testing/run_tests.dart
@@ -60,7 +60,7 @@
   void printHelp() {
     print('run_tests.dart [options...] path/to/file1.test path/to/file2.test...');
     print('For details on the test registry format, see:');
-    print('  https://github.com/flutter/tests/blob/master/registry/template.test');
+    print('  https://github.com/flutter/tests/blob/main/registry/template.test');
     print('');
     print(argParser.usage);
     print('');
diff --git a/dev/devicelab/README.md b/dev/devicelab/README.md
index 5781861..3bf02a0 100644
--- a/dev/devicelab/README.md
+++ b/dev/devicelab/README.md
@@ -217,7 +217,7 @@
   file in `bin/tasks` without the `.dart` extension.
 
 1. Add target to
-   [.ci.yaml](https://github.com/flutter/flutter/blob/master/.ci.yaml)
+   [.ci.yaml](https://github.com/flutter/flutter/blob/main/.ci.yaml)
    * Mirror an existing one that has the recipe `devicelab_drone`
 
 If your test needs to run on multiple operating systems, create a separate
@@ -237,7 +237,7 @@
 
 Steps:
 
-1. Update the task class to extend [`BuildTestTask`](https://github.com/flutter/flutter/blob/master/dev/devicelab/lib/tasks/build_test_task.dart)
+1. Update the task class to extend [`BuildTestTask`](https://github.com/flutter/flutter/blob/main/dev/devicelab/lib/tasks/build_test_task.dart)
    - Override function `getBuildArgs`
    - Override function `getTestArgs`
    - Override function `parseTaskResult`
diff --git a/dev/devicelab/lib/framework/devices.dart b/dev/devicelab/lib/framework/devices.dart
index 98e3fa4..c732476 100644
--- a/dev/devicelab/lib/framework/devices.dart
+++ b/dev/devicelab/lib/framework/devices.dart
@@ -649,7 +649,7 @@
 
   /// Retrieves device's wakefulness state.
   ///
-  /// See: https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/os/PowerManagerInternal.java
+  /// See: https://android.googlesource.com/platform/frameworks/base/+/main/core/java/android/os/PowerManagerInternal.java
   Future<String> _getWakefulness() async {
     final String powerInfo = await shellEval('dumpsys', <String>['power']);
     // A motoG4 phone returns `mWakefulness=Awake`.
diff --git a/dev/integration_tests/deferred_components_test/run_release_test.sh b/dev/integration_tests/deferred_components_test/run_release_test.sh
index 2f2c724..46bf30d 100755
--- a/dev/integration_tests/deferred_components_test/run_release_test.sh
+++ b/dev/integration_tests/deferred_components_test/run_release_test.sh
@@ -9,7 +9,7 @@
 #
 # In CI, this script currently depends on a modified version of bundletool because
 # ddmlib which bundletool depends on does not yet support detecting QEMU emulator device
-# density system properties. See https://android.googlesource.com/platform/tools/base/+/refs/heads/master/ddmlib/src/main/java/com/android/ddmlib/IDevice.java#46
+# density system properties. See https://android.googlesource.com/platform/tools/base/+/refs/heads/main/ddmlib/src/main/java/com/android/ddmlib/IDevice.java#46
 #
 # The modified bundletool which waives the density requirement is at:
 # https://chrome-infra-packages.appspot.com/p/flutter/android/bundletool/+/vFt1jA0cUeZLmUCVR5NG2JVB-SgJ18GH_pVYKMOlfUIC
diff --git a/dev/integration_tests/web_e2e_tests/README.md b/dev/integration_tests/web_e2e_tests/README.md
index f58efd8..ca93161 100644
--- a/dev/integration_tests/web_e2e_tests/README.md
+++ b/dev/integration_tests/web_e2e_tests/README.md
@@ -37,5 +37,5 @@
 
 [1]: https://chromedriver.chromium.org/downloads
 [2]: https://flutter.dev/docs/development/tools/web-renderers
-[3]: https://github.com/flutter/flutter/blob/master/dev/bots/test.dart
+[3]: https://github.com/flutter/flutter/blob/main/dev/bots/test.dart
 [4]: https://flutter.dev/docs/testing/build-modes
diff --git a/dev/snippets/config/README.md b/dev/snippets/config/README.md
index d5539ee..87cc99d 100644
--- a/dev/snippets/config/README.md
+++ b/dev/snippets/config/README.md
@@ -4,4 +4,4 @@
 blocks generated from `{@tool dartpad}`, `{@tool sample}`, and `{@tool snippet}`
 sections found in doc comments into the API docs.
 
-[snippets]: https://github.com/flutter/assets-for-api-docs/tree/master/packages/snippets
+[snippets]: https://github.com/flutter/assets-for-api-docs/tree/main/packages/snippets
diff --git a/dev/tools/gen_keycodes/README.md b/dev/tools/gen_keycodes/README.md
index f9ff1ad..99811c0 100644
--- a/dev/tools/gen_keycodes/README.md
+++ b/dev/tools/gen_keycodes/README.md
@@ -77,7 +77,7 @@
 
 - **Plane 0x01**: The unprintable plane. This plane contains logical keys that
   are defined by the [Chromium key
-  list](https://chromium.googlesource.com/codesearch/chromium/src/+/refs/heads/master/ui/events/keycodes/dom/dom_key_data.inc)
+  list](https://chromium.googlesource.com/codesearch/chromium/src/+/refs/heads/main/ui/events/keycodes/dom/dom_key_data.inc)
   and do not generate Unicode characters. The value is defined as the macro
   value defined by the Chromium key list. Examples are CapsLock (0x105),
   ArrowUp (0x304), F1 (0x801), Hiragata (0x716), and TVPower (0xD4B).
diff --git a/dev/tools/gen_keycodes/bin/gen_keycodes.dart b/dev/tools/gen_keycodes/bin/gen_keycodes.dart
index e715bd1..3dda5ce 100644
--- a/dev/tools/gen_keycodes/bin/gen_keycodes.dart
+++ b/dev/tools/gen_keycodes/bin/gen_keycodes.dart
@@ -39,7 +39,7 @@
 
 /// Get contents of the file that contains the key codes in Android source.
 Future<String> getAndroidKeyCodes() async {
-  final Uri keyCodesUri = Uri.parse('https://android.googlesource.com/platform/frameworks/native/+/master/include/android/keycodes.h?format=TEXT');
+  final Uri keyCodesUri = Uri.parse('https://android.googlesource.com/platform/frameworks/native/+/main/include/android/keycodes.h?format=TEXT');
   return utf8.decode(base64.decode(await http.read(keyCodesUri)));
 }
 
@@ -55,7 +55,7 @@
 /// common keyboards. Other than some special keyboards and game pads, this
 /// should be OK.
 Future<String> getAndroidScanCodes() async {
-  final Uri scanCodesUri = Uri.parse('https://android.googlesource.com/platform/frameworks/base/+/master/data/keyboards/Generic.kl?format=TEXT');
+  final Uri scanCodesUri = Uri.parse('https://android.googlesource.com/platform/frameworks/base/+/main/data/keyboards/Generic.kl?format=TEXT');
   return utf8.decode(base64.decode(await http.read(scanCodesUri)));
 }
 
diff --git a/packages/flutter/lib/src/animation/curves.dart b/packages/flutter/lib/src/animation/curves.dart
index 25f4659..ba80e1b 100644
--- a/packages/flutter/lib/src/animation/curves.dart
+++ b/packages/flutter/lib/src/animation/curves.dart
@@ -1230,7 +1230,7 @@
   @override
   double transformInternal(double t) {
     // Intended to match the behavior of:
-    // https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/animation/DecelerateInterpolator.java
+    // https://android.googlesource.com/platform/frameworks/base/+/main/core/java/android/view/animation/DecelerateInterpolator.java
     // ...as of December 2016.
     t = 1.0 - t;
     return 1.0 - t * t;
diff --git a/packages/flutter/lib/src/gestures/constants.dart b/packages/flutter/lib/src/gestures/constants.dart
index 6d83ad3..269b6ca 100644
--- a/packages/flutter/lib/src/gestures/constants.dart
+++ b/packages/flutter/lib/src/gestures/constants.dart
@@ -3,7 +3,7 @@
 // found in the LICENSE file.
 
 // Modeled after Android's ViewConfiguration:
-// https://github.com/android/platform_frameworks_base/blob/master/core/java/android/view/ViewConfiguration.java
+// https://github.com/android/platform_frameworks_base/blob/main/core/java/android/view/ViewConfiguration.java
 
 /// The time that must elapse before a tap gesture sends onTapDown, if there's
 /// any doubt that the gesture is a tap.
diff --git a/packages/flutter/lib/src/material/ink_sparkle.dart b/packages/flutter/lib/src/material/ink_sparkle.dart
index 7986049..4224e41 100644
--- a/packages/flutter/lib/src/material/ink_sparkle.dart
+++ b/packages/flutter/lib/src/material/ink_sparkle.dart
@@ -316,9 +316,9 @@
 
   /// All double values for uniforms come from the Android 12 ripple
   /// implementation from the following files:
-  /// - https://cs.android.com/android/platform/superproject/+/master:frameworks/base/graphics/java/android/graphics/drawable/RippleShader.java
-  /// - https://cs.android.com/android/platform/superproject/+/master:frameworks/base/graphics/java/android/graphics/drawable/RippleDrawable.java
-  /// - https://cs.android.com/android/platform/superproject/+/master:frameworks/base/graphics/java/android/graphics/drawable/RippleAnimationSession.java
+  /// - https://cs.android.com/android/platform/superproject/+/main:frameworks/base/graphics/java/android/graphics/drawable/RippleShader.java
+  /// - https://cs.android.com/android/platform/superproject/+/main:frameworks/base/graphics/java/android/graphics/drawable/RippleDrawable.java
+  /// - https://cs.android.com/android/platform/superproject/+/main:frameworks/base/graphics/java/android/graphics/drawable/RippleAnimationSession.java
   void _updateFragmentShader() {
     const double turbulenceScale = 1.5;
     final double turbulencePhase = _turbulenceSeed + _radiusScale.value;
diff --git a/packages/flutter/lib/src/rendering/box.dart b/packages/flutter/lib/src/rendering/box.dart
index b33591c..7e3b0fb 100644
--- a/packages/flutter/lib/src/rendering/box.dart
+++ b/packages/flutter/lib/src/rendering/box.dart
@@ -1185,7 +1185,7 @@
 /// positioned at 0,0. If this is not true, then use [RenderShiftedBox] instead.
 ///
 /// See
-/// [proxy_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/proxy_box.dart)
+/// [proxy_box.dart](https://github.com/flutter/flutter/blob/main/packages/flutter/lib/src/rendering/proxy_box.dart)
 /// for examples of inheriting from [RenderProxyBox].
 ///
 /// #### Using RenderShiftedBox
@@ -1196,7 +1196,7 @@
 /// default layout algorithm.
 ///
 /// See
-/// [shifted_box.dart](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/rendering/shifted_box.dart)
+/// [shifted_box.dart](https://github.com/flutter/flutter/blob/main/packages/flutter/lib/src/rendering/shifted_box.dart)
 /// for examples of inheriting from [RenderShiftedBox].
 ///
 /// #### Kinds of children and child-specific data
diff --git a/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart b/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart
index a257d6f..ae4aa0d 100644
--- a/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart
+++ b/packages/flutter/lib/src/services/raw_keyboard_fuchsia.dart
@@ -53,7 +53,7 @@
 
   /// The modifiers that were present when the key event occurred.
   ///
-  /// See <https://fuchsia.googlesource.com/garnet/+/master/public/fidl/fuchsia.ui.input/input_event_constants.fidl>
+  /// See <https://android.googlesource.com/platform/prebuilts/fuchsia_sdk/+/main/fidl/fuchsia.ui.input/input_event_constants.fidl>
   /// for the numerical values of the modifiers. Many of these are also
   /// replicated as static constants in this class.
   ///
diff --git a/packages/flutter/lib/src/services/raw_keyboard_windows.dart b/packages/flutter/lib/src/services/raw_keyboard_windows.dart
index f9f6169..52f9eda 100644
--- a/packages/flutter/lib/src/services/raw_keyboard_windows.dart
+++ b/packages/flutter/lib/src/services/raw_keyboard_windows.dart
@@ -230,7 +230,7 @@
   // These are not the values defined by the Windows header for each modifier. Since they
   // can't be packaged into a single int, we are re-defining them here to reduce the size
   // of the message from the embedder. Embedders should map these values to the native key codes.
-  // Keep this in sync with https://github.com/flutter/engine/blob/master/shell/platform/windows/key_event_handler.cc
+  // Keep this in sync with https://github.com/flutter/engine/blob/main/shell/platform/windows/key_event_handler.cc
 
   /// This mask is used to check the [modifiers] field to test whether one of the
   /// SHIFT modifier keys is pressed.
diff --git a/packages/flutter/lib/src/widgets/overscroll_indicator.dart b/packages/flutter/lib/src/widgets/overscroll_indicator.dart
index ab925cd..6963dd2 100644
--- a/packages/flutter/lib/src/widgets/overscroll_indicator.dart
+++ b/packages/flutter/lib/src/widgets/overscroll_indicator.dart
@@ -296,7 +296,7 @@
 }
 
 // The Glow logic is a port of the logic in the following file:
-// https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/widget/EdgeEffect.java
+// https://android.googlesource.com/platform/frameworks/base/+/main/core/java/android/widget/EdgeEffect.java
 // as of December 2016.
 
 enum _GlowState { idle, absorb, pull, recede }
diff --git a/packages/flutter_driver/lib/fix_data/README.md b/packages/flutter_driver/lib/fix_data/README.md
index 1060b4d..3a3622d 100644
--- a/packages/flutter_driver/lib/fix_data/README.md
+++ b/packages/flutter_driver/lib/fix_data/README.md
@@ -38,7 +38,7 @@
 See [tools/bots/flutter/analyze_flutter_flutter.sh](https://github.com/dart-lang/sdk/blob/main/tools/bots/flutter/analyze_flutter_flutter.sh)
 for where the flutter fix tests are invoked for the dart repo.
 
-See [dev/bots/test.dart](https://github.com/flutter/flutter/blob/master/dev/bots/test.dart)
+See [dev/bots/test.dart](https://github.com/flutter/flutter/blob/main/dev/bots/test.dart)
 for where the flutter fix tests are invoked for the flutter/flutter repo.
 
 When possible, please coordinate changes to this directory that might affect the
diff --git a/packages/flutter_driver/lib/src/driver/profiling_summarizer.dart b/packages/flutter_driver/lib/src/driver/profiling_summarizer.dart
index e70e866..09f970e 100644
--- a/packages/flutter_driver/lib/src/driver/profiling_summarizer.dart
+++ b/packages/flutter_driver/lib/src/driver/profiling_summarizer.dart
@@ -16,7 +16,7 @@
 };
 
 // These field names need to be in-sync with:
-// https://github.com/flutter/engine/blob/master/shell/profiling/sampling_profiler.cc
+// https://github.com/flutter/engine/blob/main/shell/profiling/sampling_profiler.cc
 const String _kCpuProfile = 'CpuUsage';
 const String _kGpuProfile = 'GpuUsage';
 const String _kMemoryProfile = 'MemoryUsage';
diff --git a/packages/flutter_localizations/README.md b/packages/flutter_localizations/README.md
index 96ae110..26a6350 100644
--- a/packages/flutter_localizations/README.md
+++ b/packages/flutter_localizations/README.md
@@ -20,7 +20,7 @@
    String get showMenuTooltip;
    ```
    to the localizations class `MaterialLocalizations`,
-   in [`packages/flutter/lib/src/material/material_localizations.dart`](https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/material/material_localizations.dart);
+   in [`packages/flutter/lib/src/material/material_localizations.dart`](https://github.com/flutter/flutter/blob/main/packages/flutter/lib/src/material/material_localizations.dart);
 
    ### For messages with parameters, add new function
    ```
@@ -41,7 +41,7 @@
    @override
    String aboutListTileTitle(String applicationName) => 'About $applicationName';
    ```
-   For messages with parameters, do also add the function to `GlobalMaterialLocalizations`  in [`packages/flutter_localizations/lib/src/material_localizations.dart`](https://github.com/flutter/flutter/blob/master/packages/flutter_localizations/lib/src/material_localizations.dart), and add a raw getter as demonstrated below:
+   For messages with parameters, do also add the function to `GlobalMaterialLocalizations`  in [`packages/flutter_localizations/lib/src/material_localizations.dart`](https://github.com/flutter/flutter/blob/main/packages/flutter_localizations/lib/src/material_localizations.dart), and add a raw getter as demonstrated below:
 
    ```
    /// The raw version of [aboutListTileTitle], with `$applicationName` verbatim
diff --git a/packages/flutter_test/lib/fix_data/README.md b/packages/flutter_test/lib/fix_data/README.md
index 1495006..2b7b48e 100644
--- a/packages/flutter_test/lib/fix_data/README.md
+++ b/packages/flutter_test/lib/fix_data/README.md
@@ -38,7 +38,7 @@
 See [tools/bots/flutter/analyze_flutter_flutter.sh](https://github.com/dart-lang/sdk/blob/main/tools/bots/flutter/analyze_flutter_flutter.sh)
 for where the flutter fix tests are invoked for the dart repo.
 
-See [dev/bots/test.dart](https://github.com/flutter/flutter/blob/master/dev/bots/test.dart)
+See [dev/bots/test.dart](https://github.com/flutter/flutter/blob/main/dev/bots/test.dart)
 for where the flutter fix tests are invoked for the flutter/flutter repo.
 
 When possible, please coordinate changes to this directory that might affect the
diff --git a/packages/flutter_tools/doc/attach.md b/packages/flutter_tools/doc/attach.md
index 565115d..247f9ae 100644
--- a/packages/flutter_tools/doc/attach.md
+++ b/packages/flutter_tools/doc/attach.md
@@ -23,4 +23,4 @@
 
 ## Source
 
-See the [source](https://github.com/flutter/flutter/blob/master/packages/flutter_tools/lib/src/commands/attach.dart) for the attach command.
+See the [source](https://github.com/flutter/flutter/blob/main/packages/flutter_tools/lib/src/commands/attach.dart) for the attach command.
diff --git a/packages/flutter_tools/doc/daemon.md b/packages/flutter_tools/doc/daemon.md
index f570949..9d6cabd 100644
--- a/packages/flutter_tools/doc/daemon.md
+++ b/packages/flutter_tools/doc/daemon.md
@@ -300,7 +300,7 @@
 
 ## Source
 
-See the [source](https://github.com/flutter/flutter/blob/master/packages/flutter_tools/lib/src/commands/daemon.dart) for the daemon protocol and implementation.
+See the [source](https://github.com/flutter/flutter/blob/main/packages/flutter_tools/lib/src/commands/daemon.dart) for the daemon protocol and implementation.
 
 ## Changelog
 
diff --git a/packages/flutter_tools/lib/src/base/error_handling_io.dart b/packages/flutter_tools/lib/src/base/error_handling_io.dart
index 468bfbf..a1e5283 100644
--- a/packages/flutter_tools/lib/src/base/error_handling_io.dart
+++ b/packages/flutter_tools/lib/src/base/error_handling_io.dart
@@ -728,7 +728,7 @@
   // From:
   // https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/errno.h
   // https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/errno-base.h
-  // https://github.com/apple/darwin-xnu/blob/master/bsd/dev/dtrace/scripts/errno.d
+  // https://github.com/apple/darwin-xnu/blob/main/bsd/dev/dtrace/scripts/errno.d
   const int eperm = 1;
   const int enospc = 28;
   const int eacces = 13;
@@ -762,7 +762,7 @@
 }
 
 void _handleMacOSException(Exception e, String? message, int errorCode, String? posixPermissionSuggestion) {
-  // https://github.com/apple/darwin-xnu/blob/master/bsd/dev/dtrace/scripts/errno.d
+  // https://github.com/apple/darwin-xnu/blob/main/bsd/dev/dtrace/scripts/errno.d
   const int ebadarch = 86;
   if (errorCode == ebadarch) {
     final StringBuffer errorBuffer = StringBuffer();
diff --git a/packages/flutter_tools/lib/src/base/terminal.dart b/packages/flutter_tools/lib/src/base/terminal.dart
index 4edce49..0c95fb3 100644
--- a/packages/flutter_tools/lib/src/base/terminal.dart
+++ b/packages/flutter_tools/lib/src/base/terminal.dart
@@ -229,7 +229,7 @@
   // Assume unicode emojis are supported when not on Windows.
   // If we are on Windows, unicode emojis are supported in Windows Terminal,
   // which sets the WT_SESSION environment variable. See:
-  // https://github.com/microsoft/terminal/blob/master/doc/user-docs/index.md#tips-and-tricks
+  // https://learn.microsoft.com/en-us/windows/terminal/tips-and-tricks
   @override
   bool get supportsEmoji => !_platform.isWindows
     || _platform.environment.containsKey('WT_SESSION');
diff --git a/packages/flutter_tools/lib/src/commands/upgrade.dart b/packages/flutter_tools/lib/src/commands/upgrade.dart
index d9918e3..0bcf443 100644
--- a/packages/flutter_tools/lib/src/commands/upgrade.dart
+++ b/packages/flutter_tools/lib/src/commands/upgrade.dart
@@ -221,7 +221,7 @@
         'We do not recommend using this channel for normal use as it more likely to contain serious regressions.\n'
         '\n'
         'For information on contributing to Flutter, see our contributing guide:\n'
-        '    https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md\n'
+        '    https://github.com/flutter/flutter/blob/main/CONTRIBUTING.md\n'
         '\n'
         'For the most up to date stable version of flutter, consider using the "beta" channel instead. '
         'The Flutter "beta" channel enjoys all the same automated testing as the "stable" channel, '
diff --git a/packages/flutter_tools/lib/src/dart/language_version.dart b/packages/flutter_tools/lib/src/dart/language_version.dart
index 311ce2e..de7bb7f 100644
--- a/packages/flutter_tools/lib/src/dart/language_version.dart
+++ b/packages/flutter_tools/lib/src/dart/language_version.dart
@@ -47,7 +47,7 @@
 /// for language declarations other than library, part, or import.
 ///
 /// The specification for the language version tag is defined at:
-/// https://github.com/dart-lang/language/blob/master/accepted/future-releases/language-versioning/feature-specification.md#individual-library-language-version-override
+/// https://github.com/dart-lang/language/blob/main/accepted/2.8/language-versioning/feature-specification.md#individual-library-language-version-override
 LanguageVersion determineLanguageVersion(File file, Package? package, String flutterRoot) {
   int blockCommentDepth = 0;
   // If reading the file fails, default to a null-safe version. The
diff --git a/packages/flutter_tools/lib/src/debug_adapters/README.md b/packages/flutter_tools/lib/src/debug_adapters/README.md
index 096a49d..917a714 100644
--- a/packages/flutter_tools/lib/src/debug_adapters/README.md
+++ b/packages/flutter_tools/lib/src/debug_adapters/README.md
@@ -2,7 +2,7 @@
 
 This document is Flutter-specific. For information on the standard Dart DAP implementation, [see this document](https://github.com/dart-lang/sdk/blob/main/pkg/dds/tool/dap/README.md).
 
-Flutter includes support for debugging using [the Debug Adapter Protocol](https://microsoft.github.io/debug-adapter-protocol/) as an alternative to using the [VM Service](https://github.com/dart-lang/sdk/blob/master/runtime/vm/service/service.md) directly, simplifying the integration for new editors.
+Flutter includes support for debugging using [the Debug Adapter Protocol](https://microsoft.github.io/debug-adapter-protocol/) as an alternative to using the [VM Service](https://github.com/dart-lang/sdk/blob/main/runtime/vm/service/service.md) directly, simplifying the integration for new editors.
 
 The debug adapters are started with the `flutter debug-adapter` command and are intended to be consumed by DAP-compliant tools such as Flutter-specific extensions for editors, or configured by users whose editors include generic configurable DAP clients.
 
diff --git a/packages/flutter_tools/test/commands.shard/hermetic/upgrade_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/upgrade_test.dart
index d869309..ec48825 100644
--- a/packages/flutter_tools/test/commands.shard/hermetic/upgrade_test.dart
+++ b/packages/flutter_tools/test/commands.shard/hermetic/upgrade_test.dart
@@ -190,7 +190,7 @@
       'for normal use as it more likely to contain serious regressions.\n'
       '\n'
       'For information on contributing to Flutter, see our contributing guide:\n'
-      '    https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md\n'
+      '    https://github.com/flutter/flutter/blob/main/CONTRIBUTING.md\n'
       '\n'
       'For the most up to date stable version of flutter, consider using the "beta" channel '
       'instead. The Flutter "beta" channel enjoys all the same automated testing as the '
diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart
index bee12dd..73b7c25 100644
--- a/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_system/targets/dart_plugin_registrant_test.dart
@@ -75,7 +75,7 @@
 name: path_provider_linux
 description: linux implementation of the path_provider plugin
 // version: 2.0.1
-// homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider/path_provider_linux
+// homepage: https://github.com/flutter/plugins/tree/main/packages/path_provider/path_provider_linux
 
 flutter:
   plugin:
diff --git a/packages/flutter_tools/test/web.shard/test_data/hot_reload_index_html_samples.dart b/packages/flutter_tools/test/web.shard/test_data/hot_reload_index_html_samples.dart
index fab7d5b..85b2b66 100644
--- a/packages/flutter_tools/test/web.shard/test_data/hot_reload_index_html_samples.dart
+++ b/packages/flutter_tools/test/web.shard/test_data/hot_reload_index_html_samples.dart
@@ -6,7 +6,7 @@
 // by Flutter Web users.
 // This should be somewhat kept in sync with the different index.html files present
 // in `flutter/dev/integration_tests/web/web`.
-// @see https://github.com/flutter/flutter/tree/master/dev/integration_tests/web/web
+// @see https://github.com/flutter/flutter/tree/main/dev/integration_tests/web/web
 
 /// index_with_flutterjs_entrypoint_loaded.html
 String indexHtmlFlutterJsCallback = _generateFlutterJsIndexHtml('''
diff --git a/packages/integration_test/README.md b/packages/integration_test/README.md
index 7aa3503..6ebec27 100644
--- a/packages/integration_test/README.md
+++ b/packages/integration_test/README.md
@@ -50,7 +50,7 @@
 You can also use different driver scripts to customize the behavior of the app
 under test. For example, `FlutterDriver` can also be parameterized with
 different [options](https://api.flutter.dev/flutter/flutter_driver/FlutterDriver/connect.html).
-See the [extended driver](https://github.com/flutter/flutter/blob/master/packages/integration_test/example/test_driver/extended_integration_test.dart) for an example.
+See the [extended driver](https://github.com/flutter/flutter/blob/main/packages/integration_test/example/test_driver/extended_integration_test.dart) for an example.
 
 ### Package Structure
 
@@ -68,7 +68,7 @@
   integration_test.dart
 ```
 
-[Example](https://github.com/flutter/flutter/tree/master/packages/integration_test/example)
+[Example](https://github.com/flutter/flutter/tree/main/packages/integration_test/example)
 
 ## Using Flutter Driver to Run Tests
 
diff --git a/packages/integration_test/integration_test_macos/ios/integration_test_macos.podspec b/packages/integration_test/integration_test_macos/ios/integration_test_macos.podspec
index 6034ec2..38da23c 100644
--- a/packages/integration_test/integration_test_macos/ios/integration_test_macos.podspec
+++ b/packages/integration_test/integration_test_macos/ios/integration_test_macos.podspec
@@ -9,7 +9,7 @@
   No-op implementation of integration to avoid build issues on iOS.
   See https://github.com/flutter/flutter/issues/39659
                        DESC
-  s.homepage         = 'https://github.com/flutter/flutter/tree/master/packages/integration_test/integration_test_macos'
+  s.homepage         = 'https://github.com/flutter/flutter/tree/main/packages/integration_test/integration_test_macos'
   s.license          = { :file => '../LICENSE' }
   s.author           = { 'Flutter Team' => 'flutter-dev@googlegroups.com' }
   s.source           = { :path => '.' }
diff --git a/packages/integration_test/integration_test_macos/macos/integration_test_macos.podspec b/packages/integration_test/integration_test_macos/macos/integration_test_macos.podspec
index a8b6e23..e22fbf1 100644
--- a/packages/integration_test/integration_test_macos/macos/integration_test_macos.podspec
+++ b/packages/integration_test/integration_test_macos/macos/integration_test_macos.podspec
@@ -8,13 +8,13 @@
   s.description      = <<-DESC
 Runs tests that use the flutter_test API as integration tests on macOS.
                        DESC
-  s.homepage         = 'https://github.com/flutter/flutter/tree/master/packages/integration_test/integration_test_macos'
+  s.homepage         = 'https://github.com/flutter/flutter/tree/main/packages/integration_test/integration_test_macos'
   s.license          = { :type => 'BSD', :text => <<-LICENSE
 Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
 LICENSE
    }
   s.author           = { 'Flutter Team' => 'flutter-dev@googlegroups.com' }
-  s.source           = { :http => 'https://github.com/flutter/flutter/tree/master/packages/integration_test/integration_test_macos' }
+  s.source           = { :http => 'https://github.com/flutter/flutter/tree/main/packages/integration_test/integration_test_macos' }
   s.source_files = 'Classes/**/*'
   s.dependency 'FlutterMacOS'
 
diff --git a/packages/integration_test/integration_test_macos/pubspec.yaml b/packages/integration_test/integration_test_macos/pubspec.yaml
index a569b83..625c2c9 100644
--- a/packages/integration_test/integration_test_macos/pubspec.yaml
+++ b/packages/integration_test/integration_test_macos/pubspec.yaml
@@ -1,7 +1,7 @@
 name: integration_test_macos
 description: Desktop implementation of integration_test plugin
 version: 0.0.1+1
-homepage: https://github.com/flutter/flutter/tree/master/packages/integration_test/integration_test_macos
+homepage: https://github.com/flutter/flutter/tree/main/packages/integration_test/integration_test_macos
 
 flutter:
   plugin:
diff --git a/packages/integration_test/ios/integration_test.podspec b/packages/integration_test/ios/integration_test.podspec
index d2a8440..71500bc 100644
--- a/packages/integration_test/ios/integration_test.podspec
+++ b/packages/integration_test/ios/integration_test.podspec
@@ -8,13 +8,13 @@
   s.description      = <<-DESC
 Runs tests that use the flutter_test API as integration tests.
                        DESC
-  s.homepage         = 'https://github.com/flutter/flutter/tree/master/packages/integration_test'
+  s.homepage         = 'https://github.com/flutter/flutter/tree/main/packages/integration_test'
   s.license          = { :type => 'BSD', :text => <<-LICENSE
 Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
 LICENSE
    }
   s.author           = { 'Flutter Team' => 'flutter-dev@googlegroups.com' }
-  s.source           = { :http => 'https://github.com/flutter/flutter/tree/master/packages/integration_test' }
+  s.source           = { :http => 'https://github.com/flutter/flutter/tree/main/packages/integration_test' }
   s.source_files = 'Classes/**/*'
   s.public_header_files = 'Classes/**/*.h'
   s.dependency 'Flutter'
diff --git a/packages/integration_test/lib/fix_data/README.md b/packages/integration_test/lib/fix_data/README.md
index 748818f..05c275d 100644
--- a/packages/integration_test/lib/fix_data/README.md
+++ b/packages/integration_test/lib/fix_data/README.md
@@ -38,7 +38,7 @@
 See [tools/bots/flutter/analyze_flutter_flutter.sh](https://github.com/dart-lang/sdk/blob/main/tools/bots/flutter/analyze_flutter_flutter.sh)
 for where the flutter fix tests are invoked for the dart repo.
 
-See [dev/bots/test.dart](https://github.com/flutter/flutter/blob/master/dev/bots/test.dart)
+See [dev/bots/test.dart](https://github.com/flutter/flutter/blob/main/dev/bots/test.dart)
 for where the flutter fix tests are invoked for the flutter/flutter repo.
 
 When possible, please coordinate changes to this directory that might affect the