Enable `no_leading_underscores_for_local_identifiers` (#6509)

diff --git a/analysis_options.yaml b/analysis_options.yaml
index a8cff3c..98352af 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -143,7 +143,7 @@
     # - no_default_cases # LOCAL CHANGE - Needs to be enabled and violations fixed.
     - no_duplicate_case_values
     - no_leading_underscores_for_library_prefixes
-    # - no_leading_underscores_for_local_identifiers # LOCAL CHANGE - Needs to be enabled and violations fixed.
+    - no_leading_underscores_for_local_identifiers
     - no_logic_in_create_state
     # - no_runtimeType_toString # ok in tests; we enable this only in packages/
     - non_constant_identifier_names
diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md
index 6f4a9f4..30bb098 100644
--- a/packages/camera/camera/CHANGELOG.md
+++ b/packages/camera/camera/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.10.0+3
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 0.10.0+2
 
 * Updates imports for `prefer_relative_imports`.
diff --git a/packages/camera/camera/example/integration_test/camera_test.dart b/packages/camera/camera/example/integration_test/camera_test.dart
index 557f485..b233d49 100644
--- a/packages/camera/camera/example/integration_test/camera_test.dart
+++ b/packages/camera/camera/example/integration_test/camera_test.dart
@@ -221,16 +221,16 @@
       );
 
       await controller.initialize();
-      bool _isDetecting = false;
+      bool isDetecting = false;
 
       await controller.startImageStream((CameraImage image) {
-        if (_isDetecting) {
+        if (isDetecting) {
           return;
         }
 
-        _isDetecting = true;
+        isDetecting = true;
 
-        expectLater(image, isNotNull).whenComplete(() => _isDetecting = false);
+        expectLater(image, isNotNull).whenComplete(() => isDetecting = false);
       });
 
       expect(controller.value.isStreamingImages, true);
@@ -254,19 +254,19 @@
     );
 
     await controller.initialize();
-    final Completer<CameraImage> _completer = Completer<CameraImage>();
+    final Completer<CameraImage> completer = Completer<CameraImage>();
 
     await controller.startImageStream((CameraImage image) {
-      if (!_completer.isCompleted) {
+      if (!completer.isCompleted) {
         Future<void>(() async {
           await controller.stopImageStream();
           await controller.dispose();
         }).then((Object? value) {
-          _completer.complete(image);
+          completer.complete(image);
         });
       }
     });
-    return _completer.future;
+    return completer.future;
   }
 
   testWidgets(
@@ -277,20 +277,20 @@
         return;
       }
 
-      CameraImage _image = await startStreaming(cameras, null);
-      expect(_image, isNotNull);
-      expect(_image.format.group, ImageFormatGroup.bgra8888);
-      expect(_image.planes.length, 1);
+      CameraImage image = await startStreaming(cameras, null);
+      expect(image, isNotNull);
+      expect(image.format.group, ImageFormatGroup.bgra8888);
+      expect(image.planes.length, 1);
 
-      _image = await startStreaming(cameras, ImageFormatGroup.yuv420);
-      expect(_image, isNotNull);
-      expect(_image.format.group, ImageFormatGroup.yuv420);
-      expect(_image.planes.length, 2);
+      image = await startStreaming(cameras, ImageFormatGroup.yuv420);
+      expect(image, isNotNull);
+      expect(image.format.group, ImageFormatGroup.yuv420);
+      expect(image.planes.length, 2);
 
-      _image = await startStreaming(cameras, ImageFormatGroup.bgra8888);
-      expect(_image, isNotNull);
-      expect(_image.format.group, ImageFormatGroup.bgra8888);
-      expect(_image.planes.length, 1);
+      image = await startStreaming(cameras, ImageFormatGroup.bgra8888);
+      expect(image, isNotNull);
+      expect(image.format.group, ImageFormatGroup.bgra8888);
+      expect(image.planes.length, 1);
     },
     skip: !Platform.isIOS,
   );
diff --git a/packages/camera/camera/lib/src/camera_controller.dart b/packages/camera/camera/lib/src/camera_controller.dart
index 13bb637..ed1c951 100644
--- a/packages/camera/camera/lib/src/camera_controller.dart
+++ b/packages/camera/camera/lib/src/camera_controller.dart
@@ -282,7 +282,7 @@
       );
     }
     try {
-      final Completer<CameraInitializedEvent> _initializeCompleter =
+      final Completer<CameraInitializedEvent> initializeCompleter =
           Completer<CameraInitializedEvent>();
 
       _deviceOrientationSubscription = CameraPlatform.instance
@@ -303,7 +303,7 @@
           .onCameraInitialized(_cameraId)
           .first
           .then((CameraInitializedEvent event) {
-        _initializeCompleter.complete(event);
+        initializeCompleter.complete(event);
       }));
 
       await CameraPlatform.instance.initializeCamera(
@@ -313,18 +313,18 @@
 
       value = value.copyWith(
         isInitialized: true,
-        previewSize: await _initializeCompleter.future
+        previewSize: await initializeCompleter.future
             .then((CameraInitializedEvent event) => Size(
                   event.previewWidth,
                   event.previewHeight,
                 )),
-        exposureMode: await _initializeCompleter.future
+        exposureMode: await initializeCompleter.future
             .then((CameraInitializedEvent event) => event.exposureMode),
-        focusMode: await _initializeCompleter.future
+        focusMode: await initializeCompleter.future
             .then((CameraInitializedEvent event) => event.focusMode),
-        exposurePointSupported: await _initializeCompleter.future.then(
+        exposurePointSupported: await initializeCompleter.future.then(
             (CameraInitializedEvent event) => event.exposurePointSupported),
-        focusPointSupported: await _initializeCompleter.future
+        focusPointSupported: await initializeCompleter.future
             .then((CameraInitializedEvent event) => event.focusPointSupported),
       );
     } on PlatformException catch (e) {
diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml
index 2770e97..1190989 100644
--- a/packages/camera/camera/pubspec.yaml
+++ b/packages/camera/camera/pubspec.yaml
@@ -4,7 +4,7 @@
   Dart.
 repository: https://github.com/flutter/plugins/tree/main/packages/camera/camera
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
-version: 0.10.0+2
+version: 0.10.0+3
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/camera/camera_android/CHANGELOG.md b/packages/camera/camera_android/CHANGELOG.md
index f2417fb..af87147 100644
--- a/packages/camera/camera_android/CHANGELOG.md
+++ b/packages/camera/camera_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.10.0+3
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 0.10.0+2
 
 * Removes call to `join` on the camera's background `HandlerThread`.
diff --git a/packages/camera/camera_android/example/integration_test/camera_test.dart b/packages/camera/camera_android/example/integration_test/camera_test.dart
index 99029fc..3b1aae6 100644
--- a/packages/camera/camera_android/example/integration_test/camera_test.dart
+++ b/packages/camera/camera_android/example/integration_test/camera_test.dart
@@ -225,16 +225,16 @@
       );
 
       await controller.initialize();
-      bool _isDetecting = false;
+      bool isDetecting = false;
 
       await controller.startImageStream((CameraImageData image) {
-        if (_isDetecting) {
+        if (isDetecting) {
           return;
         }
 
-        _isDetecting = true;
+        isDetecting = true;
 
-        expectLater(image, isNotNull).whenComplete(() => _isDetecting = false);
+        expectLater(image, isNotNull).whenComplete(() => isDetecting = false);
       });
 
       expect(controller.value.isStreamingImages, true);
diff --git a/packages/camera/camera_android/example/lib/camera_controller.dart b/packages/camera/camera_android/example/lib/camera_controller.dart
index 5a7a79c..09441cc 100644
--- a/packages/camera/camera_android/example/lib/camera_controller.dart
+++ b/packages/camera/camera_android/example/lib/camera_controller.dart
@@ -203,7 +203,7 @@
 
   /// Initializes the camera on the device.
   Future<void> initialize() async {
-    final Completer<CameraInitializedEvent> _initializeCompleter =
+    final Completer<CameraInitializedEvent> initializeCompleter =
         Completer<CameraInitializedEvent>();
 
     _deviceOrientationSubscription = CameraPlatform.instance
@@ -224,7 +224,7 @@
         .onCameraInitialized(_cameraId)
         .first
         .then((CameraInitializedEvent event) {
-      _initializeCompleter.complete(event);
+      initializeCompleter.complete(event);
     });
 
     await CameraPlatform.instance.initializeCamera(
@@ -234,18 +234,18 @@
 
     value = value.copyWith(
       isInitialized: true,
-      previewSize: await _initializeCompleter.future
+      previewSize: await initializeCompleter.future
           .then((CameraInitializedEvent event) => Size(
                 event.previewWidth,
                 event.previewHeight,
               )),
-      exposureMode: await _initializeCompleter.future
+      exposureMode: await initializeCompleter.future
           .then((CameraInitializedEvent event) => event.exposureMode),
-      focusMode: await _initializeCompleter.future
+      focusMode: await initializeCompleter.future
           .then((CameraInitializedEvent event) => event.focusMode),
-      exposurePointSupported: await _initializeCompleter.future
+      exposurePointSupported: await initializeCompleter.future
           .then((CameraInitializedEvent event) => event.exposurePointSupported),
-      focusPointSupported: await _initializeCompleter.future
+      focusPointSupported: await initializeCompleter.future
           .then((CameraInitializedEvent event) => event.focusPointSupported),
     );
 
diff --git a/packages/camera/camera_android/lib/src/android_camera.dart b/packages/camera/camera_android/lib/src/android_camera.dart
index 3e9e52a..36077ea 100644
--- a/packages/camera/camera_android/lib/src/android_camera.dart
+++ b/packages/camera/camera_android/lib/src/android_camera.dart
@@ -126,10 +126,10 @@
       return channel;
     });
 
-    final Completer<void> _completer = Completer<void>();
+    final Completer<void> completer = Completer<void>();
 
     onCameraInitialized(cameraId).first.then((CameraInitializedEvent value) {
-      _completer.complete();
+      completer.complete();
     });
 
     _channel.invokeMapMethod<String, dynamic>(
@@ -147,14 +147,14 @@
         if (error is! PlatformException) {
           throw error;
         }
-        _completer.completeError(
+        completer.completeError(
           CameraException(error.code, error.message),
           stackTrace,
         );
       },
     );
 
-    return _completer.future;
+    return completer.future;
   }
 
   @override
diff --git a/packages/camera/camera_android/pubspec.yaml b/packages/camera/camera_android/pubspec.yaml
index 9f5a2f2..a464759 100644
--- a/packages/camera/camera_android/pubspec.yaml
+++ b/packages/camera/camera_android/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Android implementation of the camera plugin.
 repository: https://github.com/flutter/plugins/tree/main/packages/camera/camera_android
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
-version: 0.10.0+2
+version: 0.10.0+3
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/camera/camera_avfoundation/CHANGELOG.md b/packages/camera/camera_avfoundation/CHANGELOG.md
index ab33c35..12d9a53 100644
--- a/packages/camera/camera_avfoundation/CHANGELOG.md
+++ b/packages/camera/camera_avfoundation/CHANGELOG.md
@@ -1,5 +1,6 @@
-## NEXT
+## 0.9.8+6
 
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
 * Updates minimum Flutter version to 2.10.
 
 ## 0.9.8+5
diff --git a/packages/camera/camera_avfoundation/example/integration_test/camera_test.dart b/packages/camera/camera_avfoundation/example/integration_test/camera_test.dart
index 51eab63..3e62edc 100644
--- a/packages/camera/camera_avfoundation/example/integration_test/camera_test.dart
+++ b/packages/camera/camera_avfoundation/example/integration_test/camera_test.dart
@@ -213,19 +213,19 @@
     );
 
     await controller.initialize();
-    final Completer<CameraImageData> _completer = Completer<CameraImageData>();
+    final Completer<CameraImageData> completer = Completer<CameraImageData>();
 
     await controller.startImageStream((CameraImageData image) {
-      if (!_completer.isCompleted) {
+      if (!completer.isCompleted) {
         Future<void>(() async {
           await controller.stopImageStream();
           await controller.dispose();
         }).then((Object? value) {
-          _completer.complete(image);
+          completer.complete(image);
         });
       }
     });
-    return _completer.future;
+    return completer.future;
   }
 
   testWidgets(
@@ -237,20 +237,20 @@
         return;
       }
 
-      CameraImageData _image = await startStreaming(cameras, null);
-      expect(_image, isNotNull);
-      expect(_image.format.group, ImageFormatGroup.bgra8888);
-      expect(_image.planes.length, 1);
+      CameraImageData image = await startStreaming(cameras, null);
+      expect(image, isNotNull);
+      expect(image.format.group, ImageFormatGroup.bgra8888);
+      expect(image.planes.length, 1);
 
-      _image = await startStreaming(cameras, ImageFormatGroup.yuv420);
-      expect(_image, isNotNull);
-      expect(_image.format.group, ImageFormatGroup.yuv420);
-      expect(_image.planes.length, 2);
+      image = await startStreaming(cameras, ImageFormatGroup.yuv420);
+      expect(image, isNotNull);
+      expect(image.format.group, ImageFormatGroup.yuv420);
+      expect(image.planes.length, 2);
 
-      _image = await startStreaming(cameras, ImageFormatGroup.bgra8888);
-      expect(_image, isNotNull);
-      expect(_image.format.group, ImageFormatGroup.bgra8888);
-      expect(_image.planes.length, 1);
+      image = await startStreaming(cameras, ImageFormatGroup.bgra8888);
+      expect(image, isNotNull);
+      expect(image.format.group, ImageFormatGroup.bgra8888);
+      expect(image.planes.length, 1);
     },
   );
 }
diff --git a/packages/camera/camera_avfoundation/example/lib/camera_controller.dart b/packages/camera/camera_avfoundation/example/lib/camera_controller.dart
index 5a7a79c..09441cc 100644
--- a/packages/camera/camera_avfoundation/example/lib/camera_controller.dart
+++ b/packages/camera/camera_avfoundation/example/lib/camera_controller.dart
@@ -203,7 +203,7 @@
 
   /// Initializes the camera on the device.
   Future<void> initialize() async {
-    final Completer<CameraInitializedEvent> _initializeCompleter =
+    final Completer<CameraInitializedEvent> initializeCompleter =
         Completer<CameraInitializedEvent>();
 
     _deviceOrientationSubscription = CameraPlatform.instance
@@ -224,7 +224,7 @@
         .onCameraInitialized(_cameraId)
         .first
         .then((CameraInitializedEvent event) {
-      _initializeCompleter.complete(event);
+      initializeCompleter.complete(event);
     });
 
     await CameraPlatform.instance.initializeCamera(
@@ -234,18 +234,18 @@
 
     value = value.copyWith(
       isInitialized: true,
-      previewSize: await _initializeCompleter.future
+      previewSize: await initializeCompleter.future
           .then((CameraInitializedEvent event) => Size(
                 event.previewWidth,
                 event.previewHeight,
               )),
-      exposureMode: await _initializeCompleter.future
+      exposureMode: await initializeCompleter.future
           .then((CameraInitializedEvent event) => event.exposureMode),
-      focusMode: await _initializeCompleter.future
+      focusMode: await initializeCompleter.future
           .then((CameraInitializedEvent event) => event.focusMode),
-      exposurePointSupported: await _initializeCompleter.future
+      exposurePointSupported: await initializeCompleter.future
           .then((CameraInitializedEvent event) => event.exposurePointSupported),
-      focusPointSupported: await _initializeCompleter.future
+      focusPointSupported: await initializeCompleter.future
           .then((CameraInitializedEvent event) => event.focusPointSupported),
     );
 
diff --git a/packages/camera/camera_avfoundation/lib/src/avfoundation_camera.dart b/packages/camera/camera_avfoundation/lib/src/avfoundation_camera.dart
index 19054fe..9bdadfb 100644
--- a/packages/camera/camera_avfoundation/lib/src/avfoundation_camera.dart
+++ b/packages/camera/camera_avfoundation/lib/src/avfoundation_camera.dart
@@ -126,10 +126,10 @@
       return channel;
     });
 
-    final Completer<void> _completer = Completer<void>();
+    final Completer<void> completer = Completer<void>();
 
     onCameraInitialized(cameraId).first.then((CameraInitializedEvent value) {
-      _completer.complete();
+      completer.complete();
     });
 
     _channel.invokeMapMethod<String, dynamic>(
@@ -147,14 +147,14 @@
         if (error is! PlatformException) {
           throw error;
         }
-        _completer.completeError(
+        completer.completeError(
           CameraException(error.code, error.message),
           stackTrace,
         );
       },
     );
 
-    return _completer.future;
+    return completer.future;
   }
 
   @override
diff --git a/packages/camera/camera_avfoundation/pubspec.yaml b/packages/camera/camera_avfoundation/pubspec.yaml
index 4b5b67d..f394d59 100644
--- a/packages/camera/camera_avfoundation/pubspec.yaml
+++ b/packages/camera/camera_avfoundation/pubspec.yaml
@@ -2,7 +2,7 @@
 description: iOS implementation of the camera plugin.
 repository: https://github.com/flutter/plugins/tree/main/packages/camera/camera_avfoundation
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
-version: 0.9.8+5
+version: 0.9.8+6
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/camera/camera_platform_interface/CHANGELOG.md b/packages/camera/camera_platform_interface/CHANGELOG.md
index bdfbd44..d410304 100644
--- a/packages/camera/camera_platform_interface/CHANGELOG.md
+++ b/packages/camera/camera_platform_interface/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.2.2
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 2.2.1
 
 * Updates imports for `prefer_relative_imports`.
diff --git a/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart b/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart
index 68e1315..37c00d6 100644
--- a/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart
+++ b/packages/camera/camera_platform_interface/lib/src/method_channel/method_channel_camera.dart
@@ -118,10 +118,10 @@
       return channel;
     });
 
-    final Completer<void> _completer = Completer<void>();
+    final Completer<void> completer = Completer<void>();
 
     onCameraInitialized(cameraId).first.then((CameraInitializedEvent value) {
-      _completer.complete();
+      completer.complete();
     });
 
     _channel.invokeMapMethod<String, dynamic>(
@@ -139,14 +139,14 @@
         if (error is! PlatformException) {
           throw error;
         }
-        _completer.completeError(
+        completer.completeError(
           CameraException(error.code, error.message),
           stackTrace,
         );
       },
     );
 
-    return _completer.future;
+    return completer.future;
   }
 
   @override
diff --git a/packages/camera/camera_platform_interface/pubspec.yaml b/packages/camera/camera_platform_interface/pubspec.yaml
index 9cbd51b..e876792 100644
--- a/packages/camera/camera_platform_interface/pubspec.yaml
+++ b/packages/camera/camera_platform_interface/pubspec.yaml
@@ -4,7 +4,7 @@
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
 # NOTE: We strongly prefer non-breaking changes, even at the expense of a
 # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
-version: 2.2.1
+version: 2.2.2
 
 environment:
   sdk: '>=2.12.0 <3.0.0'
diff --git a/packages/camera/camera_windows/CHANGELOG.md b/packages/camera/camera_windows/CHANGELOG.md
index 10b0887..71c5d56 100644
--- a/packages/camera/camera_windows/CHANGELOG.md
+++ b/packages/camera/camera_windows/CHANGELOG.md
@@ -1,5 +1,6 @@
-## NEXT
+## 0.2.1+2
 
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
 * Updates minimum Flutter version to 2.10.
 
 ## 0.2.1+1
diff --git a/packages/camera/camera_windows/example/lib/main.dart b/packages/camera/camera_windows/example/lib/main.dart
index 3106304..d27edb8 100644
--- a/packages/camera/camera_windows/example/lib/main.dart
+++ b/packages/camera/camera_windows/example/lib/main.dart
@@ -187,8 +187,8 @@
   }
 
   Future<void> _takePicture() async {
-    final XFile _file = await CameraPlatform.instance.takePicture(_cameraId);
-    _showInSnackBar('Picture captured to: ${_file.path}');
+    final XFile file = await CameraPlatform.instance.takePicture(_cameraId);
+    _showInSnackBar('Picture captured to: ${file.path}');
   }
 
   Future<void> _recordTimed(int seconds) async {
@@ -228,10 +228,10 @@
         if (!_recording) {
           await CameraPlatform.instance.startVideoRecording(_cameraId);
         } else {
-          final XFile _file =
+          final XFile file =
               await CameraPlatform.instance.stopVideoRecording(_cameraId);
 
-          _showInSnackBar('Video captured to: ${_file.path}');
+          _showInSnackBar('Video captured to: ${file.path}');
         }
 
         if (mounted) {
diff --git a/packages/camera/camera_windows/pubspec.yaml b/packages/camera/camera_windows/pubspec.yaml
index 403cb45..1eab9fa 100644
--- a/packages/camera/camera_windows/pubspec.yaml
+++ b/packages/camera/camera_windows/pubspec.yaml
@@ -2,7 +2,7 @@
 description: A Flutter plugin for getting information about and controlling the camera on Windows.
 repository: https://github.com/flutter/plugins/tree/main/packages/camera/camera_windows
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
-version: 0.2.1+1
+version: 0.2.1+2
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md
index 70298bc..3707aa8 100644
--- a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md
+++ b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 2.2.1
 
 * Updates imports for `prefer_relative_imports`.
diff --git a/packages/google_maps_flutter/google_maps_flutter/test/polygon_updates_test.dart b/packages/google_maps_flutter/google_maps_flutter/test/polygon_updates_test.dart
index cb7263c..3495983 100644
--- a/packages/google_maps_flutter/google_maps_flutter/test/polygon_updates_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/test/polygon_updates_test.dart
@@ -123,10 +123,10 @@
   });
 
   testWidgets('Mutate a polygon', (WidgetTester tester) async {
-    final List<LatLng> _points = <LatLng>[const LatLng(0.0, 0.0)];
+    final List<LatLng> points = <LatLng>[const LatLng(0.0, 0.0)];
     final Polygon p1 = Polygon(
       polygonId: const PolygonId('polygon_1'),
-      points: _points,
+      points: points,
     );
     await tester.pumpWidget(_mapWithPolygons(<Polygon>{p1}));
 
diff --git a/packages/google_maps_flutter/google_maps_flutter/test/polyline_updates_test.dart b/packages/google_maps_flutter/google_maps_flutter/test/polyline_updates_test.dart
index a2dad92..f9d0916 100644
--- a/packages/google_maps_flutter/google_maps_flutter/test/polyline_updates_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/test/polyline_updates_test.dart
@@ -117,10 +117,10 @@
   });
 
   testWidgets('Mutate a polyline', (WidgetTester tester) async {
-    final List<LatLng> _points = <LatLng>[const LatLng(0.0, 0.0)];
+    final List<LatLng> points = <LatLng>[const LatLng(0.0, 0.0)];
     final Polyline p1 = Polyline(
       polylineId: const PolylineId('polyline_1'),
-      points: _points,
+      points: points,
     );
     await tester.pumpWidget(_mapWithPolylines(<Polyline>{p1}));
 
diff --git a/packages/google_maps_flutter/google_maps_flutter_platform_interface/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_platform_interface/CHANGELOG.md
index 26e70d3..a41d1fe 100644
--- a/packages/google_maps_flutter/google_maps_flutter_platform_interface/CHANGELOG.md
+++ b/packages/google_maps_flutter/google_maps_flutter_platform_interface/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.2.4
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 2.2.3
 
 * Updates imports for `prefer_relative_imports`.
diff --git a/packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/types/maps_object_updates.dart b/packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/types/maps_object_updates.dart
index 0051afc..efc319b 100644
--- a/packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/types/maps_object_updates.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_platform_interface/lib/src/types/maps_object_updates.dart
@@ -31,7 +31,7 @@
     ///
     /// It is a programming error to call this with an ID that is not guaranteed
     /// to be in [currentObjects].
-    T _idToCurrentObject(MapsObjectId<T> id) {
+    T idToCurrentObject(MapsObjectId<T> id) {
       return currentObjects[id]!;
     }
 
@@ -39,7 +39,7 @@
 
     _objectsToAdd = currentObjectIds
         .difference(previousObjectIds)
-        .map(_idToCurrentObject)
+        .map(idToCurrentObject)
         .toSet();
 
     // Returns `true` if [current] is not equals to previous one with the
@@ -51,7 +51,7 @@
 
     _objectsToChange = currentObjectIds
         .intersection(previousObjectIds)
-        .map(_idToCurrentObject)
+        .map(idToCurrentObject)
         .where(hasChanged)
         .toSet();
   }
diff --git a/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml
index 853a23d..5639ee8 100644
--- a/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml
+++ b/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml
@@ -4,7 +4,7 @@
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+maps%22
 # NOTE: We strongly prefer non-breaking changes, even at the expense of a
 # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
-version: 2.2.3
+version: 2.2.4
 
 environment:
   sdk: '>=2.12.0 <3.0.0'
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md
index b1ddd41..2333f7d 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md
+++ b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 0.4.0+3
 
 * Updates imports for `prefer_relative_imports`.
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_controller_test.dart b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_controller_test.dart
index 4294f87..0226234 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_controller_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_controller_test.dart
@@ -37,7 +37,7 @@
     late StreamController<MapEvent<Object?>> stream;
 
     // Creates a controller with the default mapId and stream controller, and any `options` needed.
-    GoogleMapController _createController({
+    GoogleMapController createController({
       CameraPosition initialCameraPosition =
           const CameraPosition(target: LatLng(0, 0)),
       MapObjects mapObjects = const MapObjects(),
@@ -60,7 +60,7 @@
 
     group('construct/dispose', () {
       setUp(() {
-        controller = _createController();
+        controller = createController();
       });
 
       testWidgets('constructor creates widget', (WidgetTester tester) async {
@@ -223,7 +223,7 @@
       });
 
       testWidgets('listens to map events', (WidgetTester tester) async {
-        controller = _createController();
+        controller = createController();
         controller.debugSetOverrides(
           createMap: (_, __) => map,
           circles: circles,
@@ -262,7 +262,7 @@
 
       testWidgets("binds geometry controllers to map's",
           (WidgetTester tester) async {
-        controller = _createController();
+        controller = createController();
         controller.debugSetOverrides(
           createMap: (_, __) => map,
           circles: circles,
@@ -280,7 +280,7 @@
       });
 
       testWidgets('renders initial geometry', (WidgetTester tester) async {
-        controller = _createController(
+        controller = createController(
             mapObjects: MapObjects(circles: <Circle>{
           const Circle(
             circleId: CircleId('circle-1'),
@@ -360,7 +360,7 @@
 
       testWidgets('empty infoWindow does not create InfoWindow instance.',
           (WidgetTester tester) async {
-        controller = _createController(
+        controller = createController(
             mapObjects: MapObjects(markers: <Marker>{
           const Marker(markerId: MarkerId('marker-1')),
         }));
@@ -383,7 +383,7 @@
           capturedOptions = null;
         });
         testWidgets('translates initial options', (WidgetTester tester) async {
-          controller = _createController(
+          controller = createController(
               mapConfiguration: const MapConfiguration(
             mapType: MapType.satellite,
             zoomControlsEnabled: true,
@@ -406,7 +406,7 @@
 
         testWidgets('disables gestureHandling with scrollGesturesEnabled false',
             (WidgetTester tester) async {
-          controller = _createController(
+          controller = createController(
               mapConfiguration: const MapConfiguration(
             scrollGesturesEnabled: false,
           ));
@@ -426,7 +426,7 @@
 
         testWidgets('disables gestureHandling with zoomGesturesEnabled false',
             (WidgetTester tester) async {
-          controller = _createController(
+          controller = createController(
               mapConfiguration: const MapConfiguration(
             zoomGesturesEnabled: false,
           ));
@@ -446,7 +446,7 @@
 
         testWidgets('sets initial position when passed',
             (WidgetTester tester) async {
-          controller = _createController(
+          controller = createController(
             initialCameraPosition: const CameraPosition(
               target: LatLng(43.308, -5.6910),
               zoom: 12,
@@ -469,14 +469,14 @@
 
       group('Traffic Layer', () {
         testWidgets('by default is disabled', (WidgetTester tester) async {
-          controller = _createController();
+          controller = createController();
           controller.init();
           expect(controller.trafficLayer, isNull);
         });
 
         testWidgets('initializes with traffic layer',
             (WidgetTester tester) async {
-          controller = _createController(
+          controller = createController(
               mapConfiguration: const MapConfiguration(
             trafficEnabled: true,
           ));
@@ -498,7 +498,7 @@
             ..zoom = 10
             ..center = gmaps.LatLng(0, 0),
         );
-        controller = _createController();
+        controller = createController();
         controller.debugSetOverrides(createMap: (_, __) => map);
         controller.init();
       });
@@ -572,7 +572,7 @@
     // These are the methods that get forwarded to other controllers, so we just verify calls.
     group('Pass-through methods', () {
       setUp(() {
-        controller = _createController();
+        controller = createController();
       });
 
       testWidgets('updateCircles', (WidgetTester tester) async {
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_plugin_test.dart b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_plugin_test.dart
index b4786c7..9bd1a68 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_plugin_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_plugin_test.dart
@@ -381,7 +381,7 @@
       });
 
       // Dispatches a few events in the global streamController, and expects *only* the passed event to be there.
-      Future<void> _testStreamFiltering(
+      Future<void> testStreamFiltering(
           Stream<MapEvent<Object?>> stream, MapEvent<Object?> event) async {
         Timer.run(() {
           streamController.add(_OtherMapEvent(mapId));
@@ -403,7 +403,7 @@
         final Stream<CameraMoveStartedEvent> stream =
             plugin.onCameraMoveStarted(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
       testWidgets('onCameraMoveStarted', (WidgetTester tester) async {
         final CameraMoveEvent event = CameraMoveEvent(
@@ -416,7 +416,7 @@
         final Stream<CameraMoveEvent> stream =
             plugin.onCameraMove(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
       testWidgets('onCameraIdle', (WidgetTester tester) async {
         final CameraIdleEvent event = CameraIdleEvent(mapId);
@@ -424,7 +424,7 @@
         final Stream<CameraIdleEvent> stream =
             plugin.onCameraIdle(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
       // Marker events
       testWidgets('onMarkerTap', (WidgetTester tester) async {
@@ -435,7 +435,7 @@
 
         final Stream<MarkerTapEvent> stream = plugin.onMarkerTap(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
       testWidgets('onInfoWindowTap', (WidgetTester tester) async {
         final InfoWindowTapEvent event = InfoWindowTapEvent(
@@ -446,7 +446,7 @@
         final Stream<InfoWindowTapEvent> stream =
             plugin.onInfoWindowTap(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
       testWidgets('onMarkerDragStart', (WidgetTester tester) async {
         final MarkerDragStartEvent event = MarkerDragStartEvent(
@@ -458,7 +458,7 @@
         final Stream<MarkerDragStartEvent> stream =
             plugin.onMarkerDragStart(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
       testWidgets('onMarkerDrag', (WidgetTester tester) async {
         final MarkerDragEvent event = MarkerDragEvent(
@@ -470,7 +470,7 @@
         final Stream<MarkerDragEvent> stream =
             plugin.onMarkerDrag(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
       testWidgets('onMarkerDragEnd', (WidgetTester tester) async {
         final MarkerDragEndEvent event = MarkerDragEndEvent(
@@ -482,7 +482,7 @@
         final Stream<MarkerDragEndEvent> stream =
             plugin.onMarkerDragEnd(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
       // Geometry
       testWidgets('onPolygonTap', (WidgetTester tester) async {
@@ -494,7 +494,7 @@
         final Stream<PolygonTapEvent> stream =
             plugin.onPolygonTap(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
       testWidgets('onPolylineTap', (WidgetTester tester) async {
         final PolylineTapEvent event = PolylineTapEvent(
@@ -505,7 +505,7 @@
         final Stream<PolylineTapEvent> stream =
             plugin.onPolylineTap(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
       testWidgets('onCircleTap', (WidgetTester tester) async {
         final CircleTapEvent event = CircleTapEvent(
@@ -515,7 +515,7 @@
 
         final Stream<CircleTapEvent> stream = plugin.onCircleTap(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
       // Map taps
       testWidgets('onTap', (WidgetTester tester) async {
@@ -526,7 +526,7 @@
 
         final Stream<MapTapEvent> stream = plugin.onTap(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
       testWidgets('onLongPress', (WidgetTester tester) async {
         final MapLongPressEvent event = MapLongPressEvent(
@@ -537,7 +537,7 @@
         final Stream<MapLongPressEvent> stream =
             plugin.onLongPress(mapId: mapId);
 
-        await _testStreamFiltering(stream, event);
+        await testStreamFiltering(stream, event);
       });
     });
   });
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/marker_test.dart b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/marker_test.dart
index e07ade0..6591b0c 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/marker_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/marker_test.dart
@@ -16,32 +16,32 @@
 
   // Since onTap/DragEnd events happen asynchronously, we need to store when the event
   // is fired. We use a completer so the test can wait for the future to be completed.
-  late Completer<bool> _methodCalledCompleter;
+  late Completer<bool> methodCalledCompleter;
 
-  /// This is the future value of the [_methodCalledCompleter]. Reinitialized
+  /// This is the future value of the [methodCalledCompleter]. Reinitialized
   /// in the [setUp] method, and completed (as `true`) by [onTap] and [onDragEnd]
   /// when those methods are called from the MarkerController.
   late Future<bool> methodCalled;
 
   void onTap() {
-    _methodCalledCompleter.complete(true);
+    methodCalledCompleter.complete(true);
   }
 
   void onDragStart(gmaps.LatLng _) {
-    _methodCalledCompleter.complete(true);
+    methodCalledCompleter.complete(true);
   }
 
   void onDrag(gmaps.LatLng _) {
-    _methodCalledCompleter.complete(true);
+    methodCalledCompleter.complete(true);
   }
 
   void onDragEnd(gmaps.LatLng _) {
-    _methodCalledCompleter.complete(true);
+    methodCalledCompleter.complete(true);
   }
 
   setUp(() {
-    _methodCalledCompleter = Completer<bool>();
-    methodCalled = _methodCalledCompleter.future;
+    methodCalledCompleter = Completer<bool>();
+    methodCalled = methodCalledCompleter.future;
   });
 
   group('MarkerController', () {
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/shape_test.dart b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/shape_test.dart
index d142676..11af181 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/shape_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/shape_test.dart
@@ -15,20 +15,20 @@
 
   // Since onTap events happen asynchronously, we need to store when the event
   // is fired. We use a completer so the test can wait for the future to be completed.
-  late Completer<bool> _methodCalledCompleter;
+  late Completer<bool> methodCalledCompleter;
 
-  /// This is the future value of the [_methodCalledCompleter]. Reinitialized
+  /// This is the future value of the [methodCalledCompleter]. Reinitialized
   /// in the [setUp] method, and completed (as `true`) by [onTap], when it gets
   /// called by the corresponding Shape Controller.
   late Future<bool> methodCalled;
 
   void onTap() {
-    _methodCalledCompleter.complete(true);
+    methodCalledCompleter.complete(true);
   }
 
   setUp(() {
-    _methodCalledCompleter = Completer<bool>();
-    methodCalled = _methodCalledCompleter.future;
+    methodCalledCompleter = Completer<bool>();
+    methodCalled = methodCalledCompleter.future;
   });
 
   group('CircleController', () {
diff --git a/packages/google_sign_in/google_sign_in_web/CHANGELOG.md b/packages/google_sign_in/google_sign_in_web/CHANGELOG.md
index 51842e4..2816e72 100644
--- a/packages/google_sign_in/google_sign_in_web/CHANGELOG.md
+++ b/packages/google_sign_in/google_sign_in_web/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
 * Updates minimum Flutter version to 2.10.
 
 ## 0.10.2
diff --git a/packages/google_sign_in/google_sign_in_web/example/integration_test/auth2_legacy_init_test.dart b/packages/google_sign_in/google_sign_in_web/example/integration_test/auth2_legacy_init_test.dart
index 12f8f2f..5dada90 100644
--- a/packages/google_sign_in/google_sign_in_web/example/integration_test/auth2_legacy_init_test.dart
+++ b/packages/google_sign_in/google_sign_in_web/example/integration_test/auth2_legacy_init_test.dart
@@ -71,7 +71,7 @@
   group('other methods also throw catchable exceptions on initialize fail', () {
     // This function ensures that initialize gets called, but for some reason,
     // we ignored that it has thrown stuff...
-    Future<void> _discardInit() async {
+    Future<void> discardInit() async {
       try {
         await plugin.init(
           hostedDomain: 'foo',
@@ -89,23 +89,23 @@
     });
 
     testWidgets('signInSilently throws', (WidgetTester tester) async {
-      await _discardInit();
+      await discardInit();
       await expectLater(
           plugin.signInSilently(), throwsA(isA<PlatformException>()));
     });
 
     testWidgets('signIn throws', (WidgetTester tester) async {
-      await _discardInit();
+      await discardInit();
       await expectLater(plugin.signIn(), throwsA(isA<PlatformException>()));
     });
 
     testWidgets('getTokens throws', (WidgetTester tester) async {
-      await _discardInit();
+      await discardInit();
       await expectLater(plugin.getTokens(email: 'test@example.com'),
           throwsA(isA<PlatformException>()));
     });
     testWidgets('requestScopes', (WidgetTester tester) async {
-      await _discardInit();
+      await discardInit();
       await expectLater(plugin.requestScopes(<String>['newScope']),
           throwsA(isA<PlatformException>()));
     });
diff --git a/packages/google_sign_in/google_sign_in_web/example/integration_test/auth2_test.dart b/packages/google_sign_in/google_sign_in_web/example/integration_test/auth2_test.dart
index 81d9f14..3e803b8 100644
--- a/packages/google_sign_in/google_sign_in_web/example/integration_test/auth2_test.dart
+++ b/packages/google_sign_in/google_sign_in_web/example/integration_test/auth2_test.dart
@@ -66,7 +66,7 @@
       () {
     // This function ensures that initWithParams gets called, but for some
     // reason, we ignored that it has thrown stuff...
-    Future<void> _discardInit() async {
+    Future<void> discardInit() async {
       try {
         await plugin.initWithParams(const SignInInitParameters(
           hostedDomain: 'foo',
@@ -84,23 +84,23 @@
     });
 
     testWidgets('signInSilently throws', (WidgetTester tester) async {
-      await _discardInit();
+      await discardInit();
       await expectLater(
           plugin.signInSilently(), throwsA(isA<PlatformException>()));
     });
 
     testWidgets('signIn throws', (WidgetTester tester) async {
-      await _discardInit();
+      await discardInit();
       await expectLater(plugin.signIn(), throwsA(isA<PlatformException>()));
     });
 
     testWidgets('getTokens throws', (WidgetTester tester) async {
-      await _discardInit();
+      await discardInit();
       await expectLater(plugin.getTokens(email: 'test@example.com'),
           throwsA(isA<PlatformException>()));
     });
     testWidgets('requestScopes', (WidgetTester tester) async {
-      await _discardInit();
+      await discardInit();
       await expectLater(plugin.requestScopes(<String>['newScope']),
           throwsA(isA<PlatformException>()));
     });
diff --git a/packages/image_picker/image_picker_for_web/CHANGELOG.md b/packages/image_picker/image_picker_for_web/CHANGELOG.md
index 23bfe17..8a5c089 100644
--- a/packages/image_picker/image_picker_for_web/CHANGELOG.md
+++ b/packages/image_picker/image_picker_for_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.1.10
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 2.1.9
 
 * Updates imports for `prefer_relative_imports`.
diff --git a/packages/image_picker/image_picker_for_web/lib/image_picker_for_web.dart b/packages/image_picker/image_picker_for_web/lib/image_picker_for_web.dart
index 5e0f18a..bb261f7 100644
--- a/packages/image_picker/image_picker_for_web/lib/image_picker_for_web.dart
+++ b/packages/image_picker/image_picker_for_web/lib/image_picker_for_web.dart
@@ -244,35 +244,35 @@
 
   /// Monitors an <input type="file"> and returns the selected file.
   Future<PickedFile> _getSelectedFile(html.FileUploadInputElement input) {
-    final Completer<PickedFile> _completer = Completer<PickedFile>();
+    final Completer<PickedFile> completer = Completer<PickedFile>();
     // Observe the input until we can return something
     input.onChange.first.then((html.Event event) {
       final List<html.File>? files = _handleOnChangeEvent(event);
-      if (!_completer.isCompleted && files != null) {
-        _completer.complete(PickedFile(
+      if (!completer.isCompleted && files != null) {
+        completer.complete(PickedFile(
           html.Url.createObjectUrl(files.first),
         ));
       }
     });
     input.onError.first.then((html.Event event) {
-      if (!_completer.isCompleted) {
-        _completer.completeError(event);
+      if (!completer.isCompleted) {
+        completer.completeError(event);
       }
     });
     // Note that we don't bother detaching from these streams, since the
     // "input" gets re-created in the DOM every time the user needs to
     // pick a file.
-    return _completer.future;
+    return completer.future;
   }
 
   /// Monitors an <input type="file"> and returns the selected file(s).
   Future<List<XFile>> _getSelectedXFiles(html.FileUploadInputElement input) {
-    final Completer<List<XFile>> _completer = Completer<List<XFile>>();
+    final Completer<List<XFile>> completer = Completer<List<XFile>>();
     // Observe the input until we can return something
     input.onChange.first.then((html.Event event) {
       final List<html.File>? files = _handleOnChangeEvent(event);
-      if (!_completer.isCompleted && files != null) {
-        _completer.complete(files.map((html.File file) {
+      if (!completer.isCompleted && files != null) {
+        completer.complete(files.map((html.File file) {
           return XFile(
             html.Url.createObjectUrl(file),
             name: file.name,
@@ -286,14 +286,14 @@
       }
     });
     input.onError.first.then((html.Event event) {
-      if (!_completer.isCompleted) {
-        _completer.completeError(event);
+      if (!completer.isCompleted) {
+        completer.completeError(event);
       }
     });
     // Note that we don't bother detaching from these streams, since the
     // "input" gets re-created in the DOM every time the user needs to
     // pick a file.
-    return _completer.future;
+    return completer.future;
   }
 
   /// Initializes a DOM container where we can host input elements.
diff --git a/packages/image_picker/image_picker_for_web/pubspec.yaml b/packages/image_picker/image_picker_for_web/pubspec.yaml
index 14d9197..c2e0975 100644
--- a/packages/image_picker/image_picker_for_web/pubspec.yaml
+++ b/packages/image_picker/image_picker_for_web/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Web platform implementation of image_picker
 repository: https://github.com/flutter/plugins/tree/main/packages/image_picker/image_picker_for_web
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22
-version: 2.1.9
+version: 2.1.10
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/path_provider/path_provider/CHANGELOG.md b/packages/path_provider/path_provider/CHANGELOG.md
index e19415f..4365235 100644
--- a/packages/path_provider/path_provider/CHANGELOG.md
+++ b/packages/path_provider/path_provider/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
 * Updates minimum Flutter version to 2.10.
 * Fixes avoid_redundant_argument_values lint warnings and minor typos.
 
diff --git a/packages/path_provider/path_provider/example/integration_test/path_provider_test.dart b/packages/path_provider/path_provider/example/integration_test/path_provider_test.dart
index 1fe31df..bf150f6 100644
--- a/packages/path_provider/path_provider/example/integration_test/path_provider_test.dart
+++ b/packages/path_provider/path_provider/example/integration_test/path_provider_test.dart
@@ -58,7 +58,7 @@
     }
   });
 
-  final List<StorageDirectory?> _allDirs = <StorageDirectory?>[
+  final List<StorageDirectory?> allDirs = <StorageDirectory?>[
     null,
     StorageDirectory.music,
     StorageDirectory.podcasts,
@@ -69,7 +69,7 @@
     StorageDirectory.movies,
   ];
 
-  for (final StorageDirectory? type in _allDirs) {
+  for (final StorageDirectory? type in allDirs) {
     testWidgets('getExternalStorageDirectories (type: $type)',
         (WidgetTester tester) async {
       if (Platform.isIOS) {
diff --git a/packages/path_provider/path_provider_android/CHANGELOG.md b/packages/path_provider/path_provider_android/CHANGELOG.md
index 93f0747..c36a771 100644
--- a/packages/path_provider/path_provider_android/CHANGELOG.md
+++ b/packages/path_provider/path_provider_android/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
 * Updates minimum Flutter version to 2.10.
 
 ## 2.0.20
diff --git a/packages/path_provider/path_provider_android/example/integration_test/path_provider_test.dart b/packages/path_provider/path_provider_android/example/integration_test/path_provider_test.dart
index 2be8813..ecd0b97 100644
--- a/packages/path_provider/path_provider_android/example/integration_test/path_provider_test.dart
+++ b/packages/path_provider/path_provider_android/example/integration_test/path_provider_test.dart
@@ -49,7 +49,7 @@
     }
   });
 
-  final List<StorageDirectory?> _allDirs = <StorageDirectory?>[
+  final List<StorageDirectory?> allDirs = <StorageDirectory?>[
     null,
     StorageDirectory.music,
     StorageDirectory.podcasts,
@@ -60,7 +60,7 @@
     StorageDirectory.movies,
   ];
 
-  for (final StorageDirectory? type in _allDirs) {
+  for (final StorageDirectory? type in allDirs) {
     testWidgets('getExternalStorageDirectories (type: $type)',
         (WidgetTester tester) async {
       final PathProviderPlatform provider = PathProviderPlatform.instance;
diff --git a/packages/shared_preferences/shared_preferences/CHANGELOG.md b/packages/shared_preferences/shared_preferences/CHANGELOG.md
index d7c3aa4..b719ff1 100644
--- a/packages/shared_preferences/shared_preferences/CHANGELOG.md
+++ b/packages/shared_preferences/shared_preferences/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
 * Updates minimum Flutter version to 2.10.
 
 ## 2.0.15
diff --git a/packages/shared_preferences/shared_preferences/test/shared_preferences_test.dart b/packages/shared_preferences/shared_preferences/test/shared_preferences_test.dart
index 0a02c46..30f7829 100755
--- a/packages/shared_preferences/shared_preferences/test/shared_preferences_test.dart
+++ b/packages/shared_preferences/shared_preferences/test/shared_preferences_test.dart
@@ -171,22 +171,22 @@
     });
 
     group('mocking', () {
-      const String _key = 'dummy';
-      const String _prefixedKey = 'flutter.$_key';
+      const String key = 'dummy';
+      const String prefixedKey = 'flutter.$key';
 
       test('test 1', () async {
         SharedPreferences.setMockInitialValues(
-            <String, Object>{_prefixedKey: 'my string'});
+            <String, Object>{prefixedKey: 'my string'});
         final SharedPreferences prefs = await SharedPreferences.getInstance();
-        final String? value = prefs.getString(_key);
+        final String? value = prefs.getString(key);
         expect(value, 'my string');
       });
 
       test('test 2', () async {
         SharedPreferences.setMockInitialValues(
-            <String, Object>{_prefixedKey: 'my other string'});
+            <String, Object>{prefixedKey: 'my other string'});
         final SharedPreferences prefs = await SharedPreferences.getInstance();
-        final String? value = prefs.getString(_key);
+        final String? value = prefs.getString(key);
         expect(value, 'my other string');
       });
     });
diff --git a/packages/shared_preferences/shared_preferences_android/CHANGELOG.md b/packages/shared_preferences/shared_preferences_android/CHANGELOG.md
index 91a922d..f21af6a 100644
--- a/packages/shared_preferences/shared_preferences_android/CHANGELOG.md
+++ b/packages/shared_preferences/shared_preferences_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 2.0.13
 
 * Updates gradle to 7.2.2.
diff --git a/packages/shared_preferences/shared_preferences_android/example/integration_test/shared_preferences_test.dart b/packages/shared_preferences/shared_preferences_android/example/integration_test/shared_preferences_test.dart
index 275067d..4d4a85a 100644
--- a/packages/shared_preferences/shared_preferences_android/example/integration_test/shared_preferences_test.dart
+++ b/packages/shared_preferences/shared_preferences_android/example/integration_test/shared_preferences_test.dart
@@ -39,42 +39,42 @@
 
     // Normally the app-facing package adds the prefix, but since this test
     // bypasses the app-facing package it needs to be manually added.
-    String _prefixedKey(String key) {
+    String prefixedKey(String key) {
       return 'flutter.$key';
     }
 
     testWidgets('reading', (WidgetTester _) async {
       final Map<String, Object> values = await preferences.getAll();
-      expect(values[_prefixedKey('String')], isNull);
-      expect(values[_prefixedKey('bool')], isNull);
-      expect(values[_prefixedKey('int')], isNull);
-      expect(values[_prefixedKey('double')], isNull);
-      expect(values[_prefixedKey('List')], isNull);
+      expect(values[prefixedKey('String')], isNull);
+      expect(values[prefixedKey('bool')], isNull);
+      expect(values[prefixedKey('int')], isNull);
+      expect(values[prefixedKey('double')], isNull);
+      expect(values[prefixedKey('List')], isNull);
     });
 
     testWidgets('writing', (WidgetTester _) async {
       await Future.wait(<Future<bool>>[
         preferences.setValue(
-            'String', _prefixedKey('String'), kTestValues2['flutter.String']!),
+            'String', prefixedKey('String'), kTestValues2['flutter.String']!),
         preferences.setValue(
-            'Bool', _prefixedKey('bool'), kTestValues2['flutter.bool']!),
+            'Bool', prefixedKey('bool'), kTestValues2['flutter.bool']!),
         preferences.setValue(
-            'Int', _prefixedKey('int'), kTestValues2['flutter.int']!),
+            'Int', prefixedKey('int'), kTestValues2['flutter.int']!),
         preferences.setValue(
-            'Double', _prefixedKey('double'), kTestValues2['flutter.double']!),
+            'Double', prefixedKey('double'), kTestValues2['flutter.double']!),
         preferences.setValue(
-            'StringList', _prefixedKey('List'), kTestValues2['flutter.List']!)
+            'StringList', prefixedKey('List'), kTestValues2['flutter.List']!)
       ]);
       final Map<String, Object> values = await preferences.getAll();
-      expect(values[_prefixedKey('String')], kTestValues2['flutter.String']);
-      expect(values[_prefixedKey('bool')], kTestValues2['flutter.bool']);
-      expect(values[_prefixedKey('int')], kTestValues2['flutter.int']);
-      expect(values[_prefixedKey('double')], kTestValues2['flutter.double']);
-      expect(values[_prefixedKey('List')], kTestValues2['flutter.List']);
+      expect(values[prefixedKey('String')], kTestValues2['flutter.String']);
+      expect(values[prefixedKey('bool')], kTestValues2['flutter.bool']);
+      expect(values[prefixedKey('int')], kTestValues2['flutter.int']);
+      expect(values[prefixedKey('double')], kTestValues2['flutter.double']);
+      expect(values[prefixedKey('List')], kTestValues2['flutter.List']);
     });
 
     testWidgets('removing', (WidgetTester _) async {
-      final String key = _prefixedKey('testKey');
+      final String key = prefixedKey('testKey');
       await preferences.setValue('String', key, kTestValues['flutter.String']!);
       await preferences.setValue('Bool', key, kTestValues['flutter.bool']!);
       await preferences.setValue('Int', key, kTestValues['flutter.int']!);
@@ -108,19 +108,19 @@
       final List<Future<bool>> writes = <Future<bool>>[];
       const int writeCount = 100;
       for (int i = 1; i <= writeCount; i++) {
-        writes.add(preferences.setValue('Int', _prefixedKey('int'), i));
+        writes.add(preferences.setValue('Int', prefixedKey('int'), i));
       }
       final List<bool> result = await Future.wait(writes, eagerError: true);
       // All writes should succeed.
       expect(result.where((bool element) => !element), isEmpty);
       // The last write should win.
       final Map<String, Object> values = await preferences.getAll();
-      expect(values[_prefixedKey('int')], writeCount);
+      expect(values[prefixedKey('int')], writeCount);
     });
 
     testWidgets('string clash with lists, big integers and doubles',
         (WidgetTester _) async {
-      final String key = _prefixedKey('akey');
+      final String key = prefixedKey('akey');
       const String value = 'a string value';
       await preferences.clear();
 
diff --git a/packages/shared_preferences/shared_preferences_ios/CHANGELOG.md b/packages/shared_preferences/shared_preferences_ios/CHANGELOG.md
index 99dde9c..d2101e0 100644
--- a/packages/shared_preferences/shared_preferences_ios/CHANGELOG.md
+++ b/packages/shared_preferences/shared_preferences_ios/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
 * Updates minimum Flutter version to 2.10.
 
 ## 2.1.1
diff --git a/packages/shared_preferences/shared_preferences_ios/example/integration_test/shared_preferences_test.dart b/packages/shared_preferences/shared_preferences_ios/example/integration_test/shared_preferences_test.dart
index 3a6bab5..b4b2187 100644
--- a/packages/shared_preferences/shared_preferences_ios/example/integration_test/shared_preferences_test.dart
+++ b/packages/shared_preferences/shared_preferences_ios/example/integration_test/shared_preferences_test.dart
@@ -38,42 +38,42 @@
 
     // Normally the app-facing package adds the prefix, but since this test
     // bypasses the app-facing package it needs to be manually added.
-    String _prefixedKey(String key) {
+    String prefixedKey(String key) {
       return 'flutter.$key';
     }
 
     testWidgets('reading', (WidgetTester _) async {
       final Map<String, Object> values = await preferences.getAll();
-      expect(values[_prefixedKey('String')], isNull);
-      expect(values[_prefixedKey('bool')], isNull);
-      expect(values[_prefixedKey('int')], isNull);
-      expect(values[_prefixedKey('double')], isNull);
-      expect(values[_prefixedKey('List')], isNull);
+      expect(values[prefixedKey('String')], isNull);
+      expect(values[prefixedKey('bool')], isNull);
+      expect(values[prefixedKey('int')], isNull);
+      expect(values[prefixedKey('double')], isNull);
+      expect(values[prefixedKey('List')], isNull);
     });
 
     testWidgets('writing', (WidgetTester _) async {
       await Future.wait(<Future<bool>>[
         preferences.setValue(
-            'String', _prefixedKey('String'), kTestValues2['flutter.String']!),
+            'String', prefixedKey('String'), kTestValues2['flutter.String']!),
         preferences.setValue(
-            'Bool', _prefixedKey('bool'), kTestValues2['flutter.bool']!),
+            'Bool', prefixedKey('bool'), kTestValues2['flutter.bool']!),
         preferences.setValue(
-            'Int', _prefixedKey('int'), kTestValues2['flutter.int']!),
+            'Int', prefixedKey('int'), kTestValues2['flutter.int']!),
         preferences.setValue(
-            'Double', _prefixedKey('double'), kTestValues2['flutter.double']!),
+            'Double', prefixedKey('double'), kTestValues2['flutter.double']!),
         preferences.setValue(
-            'StringList', _prefixedKey('List'), kTestValues2['flutter.List']!)
+            'StringList', prefixedKey('List'), kTestValues2['flutter.List']!)
       ]);
       final Map<String, Object> values = await preferences.getAll();
-      expect(values[_prefixedKey('String')], kTestValues2['flutter.String']);
-      expect(values[_prefixedKey('bool')], kTestValues2['flutter.bool']);
-      expect(values[_prefixedKey('int')], kTestValues2['flutter.int']);
-      expect(values[_prefixedKey('double')], kTestValues2['flutter.double']);
-      expect(values[_prefixedKey('List')], kTestValues2['flutter.List']);
+      expect(values[prefixedKey('String')], kTestValues2['flutter.String']);
+      expect(values[prefixedKey('bool')], kTestValues2['flutter.bool']);
+      expect(values[prefixedKey('int')], kTestValues2['flutter.int']);
+      expect(values[prefixedKey('double')], kTestValues2['flutter.double']);
+      expect(values[prefixedKey('List')], kTestValues2['flutter.List']);
     });
 
     testWidgets('removing', (WidgetTester _) async {
-      final String key = _prefixedKey('testKey');
+      final String key = prefixedKey('testKey');
       await preferences.setValue('String', key, kTestValues['flutter.String']!);
       await preferences.setValue('Bool', key, kTestValues['flutter.bool']!);
       await preferences.setValue('Int', key, kTestValues['flutter.int']!);
diff --git a/packages/shared_preferences/shared_preferences_linux/CHANGELOG.md b/packages/shared_preferences/shared_preferences_linux/CHANGELOG.md
index 60f93f3..5d59660 100644
--- a/packages/shared_preferences/shared_preferences_linux/CHANGELOG.md
+++ b/packages/shared_preferences/shared_preferences_linux/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
 * Updates minimum Flutter version to 2.10.
 
 ## 2.1.1
diff --git a/packages/shared_preferences/shared_preferences_linux/test/shared_preferences_linux_test.dart b/packages/shared_preferences/shared_preferences_linux/test/shared_preferences_linux_test.dart
index 57acd17..176d1d9 100644
--- a/packages/shared_preferences/shared_preferences_linux/test/shared_preferences_linux_test.dart
+++ b/packages/shared_preferences/shared_preferences_linux/test/shared_preferences_linux_test.dart
@@ -20,22 +20,22 @@
     pathProvider = FakePathProviderLinux();
   });
 
-  Future<String> _getFilePath() async {
+  Future<String> getFilePath() async {
     final String? directory = await pathProvider.getApplicationSupportPath();
     return path.join(directory!, 'shared_preferences.json');
   }
 
-  Future<void> _writeTestFile(String value) async {
-    fs.file(await _getFilePath())
+  Future<void> writeTestFile(String value) async {
+    fs.file(await getFilePath())
       ..createSync(recursive: true)
       ..writeAsStringSync(value);
   }
 
-  Future<String> _readTestFile() async {
-    return fs.file(await _getFilePath()).readAsStringSync();
+  Future<String> readTestFile() async {
+    return fs.file(await getFilePath()).readAsStringSync();
   }
 
-  SharedPreferencesLinux _getPreferences() {
+  SharedPreferencesLinux getPreferences() {
     final SharedPreferencesLinux prefs = SharedPreferencesLinux();
     prefs.fs = fs;
     prefs.pathProvider = pathProvider;
@@ -49,8 +49,8 @@
   });
 
   test('getAll', () async {
-    await _writeTestFile('{"key1": "one", "key2": 2}');
-    final SharedPreferencesLinux prefs = _getPreferences();
+    await writeTestFile('{"key1": "one", "key2": 2}');
+    final SharedPreferencesLinux prefs = getPreferences();
 
     final Map<String, Object> values = await prefs.getAll();
     expect(values, hasLength(2));
@@ -59,30 +59,30 @@
   });
 
   test('remove', () async {
-    await _writeTestFile('{"key1":"one","key2":2}');
-    final SharedPreferencesLinux prefs = _getPreferences();
+    await writeTestFile('{"key1":"one","key2":2}');
+    final SharedPreferencesLinux prefs = getPreferences();
 
     await prefs.remove('key2');
 
-    expect(await _readTestFile(), '{"key1":"one"}');
+    expect(await readTestFile(), '{"key1":"one"}');
   });
 
   test('setValue', () async {
-    await _writeTestFile('{}');
-    final SharedPreferencesLinux prefs = _getPreferences();
+    await writeTestFile('{}');
+    final SharedPreferencesLinux prefs = getPreferences();
 
     await prefs.setValue('', 'key1', 'one');
     await prefs.setValue('', 'key2', 2);
 
-    expect(await _readTestFile(), '{"key1":"one","key2":2}');
+    expect(await readTestFile(), '{"key1":"one","key2":2}');
   });
 
   test('clear', () async {
-    await _writeTestFile('{"key1":"one","key2":2}');
-    final SharedPreferencesLinux prefs = _getPreferences();
+    await writeTestFile('{"key1":"one","key2":2}');
+    final SharedPreferencesLinux prefs = getPreferences();
 
     await prefs.clear();
-    expect(await _readTestFile(), '{}');
+    expect(await readTestFile(), '{}');
   });
 }
 
diff --git a/packages/shared_preferences/shared_preferences_macos/CHANGELOG.md b/packages/shared_preferences/shared_preferences_macos/CHANGELOG.md
index bc4e150..fc8a78a 100644
--- a/packages/shared_preferences/shared_preferences_macos/CHANGELOG.md
+++ b/packages/shared_preferences/shared_preferences_macos/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
 * Updates minimum Flutter version to 2.10.
 
 ## 2.0.4
diff --git a/packages/shared_preferences/shared_preferences_macos/example/integration_test/shared_preferences_test.dart b/packages/shared_preferences/shared_preferences_macos/example/integration_test/shared_preferences_test.dart
index 874ceb4..a980eab 100644
--- a/packages/shared_preferences/shared_preferences_macos/example/integration_test/shared_preferences_test.dart
+++ b/packages/shared_preferences/shared_preferences_macos/example/integration_test/shared_preferences_test.dart
@@ -38,42 +38,42 @@
 
     // Normally the app-facing package adds the prefix, but since this test
     // bypasses the app-facing package it needs to be manually added.
-    String _prefixedKey(String key) {
+    String prefixedKey(String key) {
       return 'flutter.$key';
     }
 
     testWidgets('reading', (WidgetTester _) async {
       final Map<String, Object> values = await preferences.getAll();
-      expect(values[_prefixedKey('String')], isNull);
-      expect(values[_prefixedKey('bool')], isNull);
-      expect(values[_prefixedKey('int')], isNull);
-      expect(values[_prefixedKey('double')], isNull);
-      expect(values[_prefixedKey('List')], isNull);
+      expect(values[prefixedKey('String')], isNull);
+      expect(values[prefixedKey('bool')], isNull);
+      expect(values[prefixedKey('int')], isNull);
+      expect(values[prefixedKey('double')], isNull);
+      expect(values[prefixedKey('List')], isNull);
     });
 
     testWidgets('writing', (WidgetTester _) async {
       await Future.wait(<Future<bool>>[
         preferences.setValue(
-            'String', _prefixedKey('String'), kTestValues2['flutter.String']!),
+            'String', prefixedKey('String'), kTestValues2['flutter.String']!),
         preferences.setValue(
-            'Bool', _prefixedKey('bool'), kTestValues2['flutter.bool']!),
+            'Bool', prefixedKey('bool'), kTestValues2['flutter.bool']!),
         preferences.setValue(
-            'Int', _prefixedKey('int'), kTestValues2['flutter.int']!),
+            'Int', prefixedKey('int'), kTestValues2['flutter.int']!),
         preferences.setValue(
-            'Double', _prefixedKey('double'), kTestValues2['flutter.double']!),
+            'Double', prefixedKey('double'), kTestValues2['flutter.double']!),
         preferences.setValue(
-            'StringList', _prefixedKey('List'), kTestValues2['flutter.List']!)
+            'StringList', prefixedKey('List'), kTestValues2['flutter.List']!)
       ]);
       final Map<String, Object> values = await preferences.getAll();
-      expect(values[_prefixedKey('String')], kTestValues2['flutter.String']);
-      expect(values[_prefixedKey('bool')], kTestValues2['flutter.bool']);
-      expect(values[_prefixedKey('int')], kTestValues2['flutter.int']);
-      expect(values[_prefixedKey('double')], kTestValues2['flutter.double']);
-      expect(values[_prefixedKey('List')], kTestValues2['flutter.List']);
+      expect(values[prefixedKey('String')], kTestValues2['flutter.String']);
+      expect(values[prefixedKey('bool')], kTestValues2['flutter.bool']);
+      expect(values[prefixedKey('int')], kTestValues2['flutter.int']);
+      expect(values[prefixedKey('double')], kTestValues2['flutter.double']);
+      expect(values[prefixedKey('List')], kTestValues2['flutter.List']);
     });
 
     testWidgets('removing', (WidgetTester _) async {
-      final String key = _prefixedKey('testKey');
+      final String key = prefixedKey('testKey');
       await preferences.setValue('String', key, kTestValues['flutter.String']!);
       await preferences.setValue('Bool', key, kTestValues['flutter.bool']!);
       await preferences.setValue('Int', key, kTestValues['flutter.int']!);
diff --git a/packages/shared_preferences/shared_preferences_windows/CHANGELOG.md b/packages/shared_preferences/shared_preferences_windows/CHANGELOG.md
index b8351c8..935a5ee 100644
--- a/packages/shared_preferences/shared_preferences_windows/CHANGELOG.md
+++ b/packages/shared_preferences/shared_preferences_windows/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
 * Updates minimum Flutter version to 2.10.
 
 ## 2.1.1
diff --git a/packages/shared_preferences/shared_preferences_windows/test/shared_preferences_windows_test.dart b/packages/shared_preferences/shared_preferences_windows/test/shared_preferences_windows_test.dart
index 0c47e98..04fa335 100644
--- a/packages/shared_preferences/shared_preferences_windows/test/shared_preferences_windows_test.dart
+++ b/packages/shared_preferences/shared_preferences_windows/test/shared_preferences_windows_test.dart
@@ -19,22 +19,22 @@
     pathProvider = FakePathProviderWindows();
   });
 
-  Future<String> _getFilePath() async {
+  Future<String> getFilePath() async {
     final String? directory = await pathProvider.getApplicationSupportPath();
     return path.join(directory!, 'shared_preferences.json');
   }
 
-  Future<void> _writeTestFile(String value) async {
-    fileSystem.file(await _getFilePath())
+  Future<void> writeTestFile(String value) async {
+    fileSystem.file(await getFilePath())
       ..createSync(recursive: true)
       ..writeAsStringSync(value);
   }
 
-  Future<String> _readTestFile() async {
-    return fileSystem.file(await _getFilePath()).readAsStringSync();
+  Future<String> readTestFile() async {
+    return fileSystem.file(await getFilePath()).readAsStringSync();
   }
 
-  SharedPreferencesWindows _getPreferences() {
+  SharedPreferencesWindows getPreferences() {
     final SharedPreferencesWindows prefs = SharedPreferencesWindows();
     prefs.fs = fileSystem;
     prefs.pathProvider = pathProvider;
@@ -48,8 +48,8 @@
   });
 
   test('getAll', () async {
-    await _writeTestFile('{"key1": "one", "key2": 2}');
-    final SharedPreferencesWindows prefs = _getPreferences();
+    await writeTestFile('{"key1": "one", "key2": 2}');
+    final SharedPreferencesWindows prefs = getPreferences();
 
     final Map<String, Object> values = await prefs.getAll();
     expect(values, hasLength(2));
@@ -58,30 +58,30 @@
   });
 
   test('remove', () async {
-    await _writeTestFile('{"key1":"one","key2":2}');
-    final SharedPreferencesWindows prefs = _getPreferences();
+    await writeTestFile('{"key1":"one","key2":2}');
+    final SharedPreferencesWindows prefs = getPreferences();
 
     await prefs.remove('key2');
 
-    expect(await _readTestFile(), '{"key1":"one"}');
+    expect(await readTestFile(), '{"key1":"one"}');
   });
 
   test('setValue', () async {
-    await _writeTestFile('{}');
-    final SharedPreferencesWindows prefs = _getPreferences();
+    await writeTestFile('{}');
+    final SharedPreferencesWindows prefs = getPreferences();
 
     await prefs.setValue('', 'key1', 'one');
     await prefs.setValue('', 'key2', 2);
 
-    expect(await _readTestFile(), '{"key1":"one","key2":2}');
+    expect(await readTestFile(), '{"key1":"one","key2":2}');
   });
 
   test('clear', () async {
-    await _writeTestFile('{"key1":"one","key2":2}');
-    final SharedPreferencesWindows prefs = _getPreferences();
+    await writeTestFile('{"key1":"one","key2":2}');
+    final SharedPreferencesWindows prefs = getPreferences();
 
     await prefs.clear();
-    expect(await _readTestFile(), '{}');
+    expect(await readTestFile(), '{}');
   });
 }
 
diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md
index 53cfabf..0885f28 100644
--- a/packages/video_player/video_player/CHANGELOG.md
+++ b/packages/video_player/video_player/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 2.4.7
 
 * Updates README via code excerpts.
diff --git a/packages/video_player/video_player/example/integration_test/video_player_test.dart b/packages/video_player/video_player/example/integration_test/video_player_test.dart
index 023c4b3..dd77a2f 100644
--- a/packages/video_player/video_player/example/integration_test/video_player_test.dart
+++ b/packages/video_player/video_player/example/integration_test/video_player_test.dart
@@ -37,22 +37,22 @@
 
 void main() {
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
-  late VideoPlayerController _controller;
-  tearDown(() async => _controller.dispose());
+  late VideoPlayerController controller;
+  tearDown(() async => controller.dispose());
 
   group('asset videos', () {
     setUp(() {
-      _controller = VideoPlayerController.asset(_videoAssetKey);
+      controller = VideoPlayerController.asset(_videoAssetKey);
     });
 
     testWidgets('can be initialized', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
-      expect(_controller.value.isInitialized, true);
-      expect(_controller.value.position, Duration.zero);
-      expect(_controller.value.isPlaying, false);
+      expect(controller.value.isInitialized, true);
+      expect(controller.value.position, Duration.zero);
+      expect(controller.value.isPlaying, false);
       // The WebM version has a slightly different duration than the MP4.
-      expect(_controller.value.duration,
+      expect(controller.value.duration,
           const Duration(seconds: 7, milliseconds: kIsWeb ? 544 : 540));
     });
 
@@ -77,16 +77,16 @@
     testWidgets(
       'can be played',
       (WidgetTester tester) async {
-        await _controller.initialize();
+        await controller.initialize();
         // Mute to allow playing without DOM interaction on Web.
         // See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
-        await _controller.setVolume(0);
+        await controller.setVolume(0);
 
-        await _controller.play();
+        await controller.play();
         await tester.pumpAndSettle(_playDuration);
 
-        expect(_controller.value.isPlaying, true);
-        expect(_controller.value.position,
+        expect(controller.value.isPlaying, true);
+        expect(controller.value.position,
             (Duration position) => position > Duration.zero);
       },
     );
@@ -94,85 +94,85 @@
     testWidgets(
       'can seek',
       (WidgetTester tester) async {
-        await _controller.initialize();
+        await controller.initialize();
 
-        await _controller.seekTo(const Duration(seconds: 3));
+        await controller.seekTo(const Duration(seconds: 3));
 
-        expect(_controller.value.position, const Duration(seconds: 3));
+        expect(controller.value.position, const Duration(seconds: 3));
       },
     );
 
     testWidgets(
       'can be paused',
       (WidgetTester tester) async {
-        await _controller.initialize();
+        await controller.initialize();
         // Mute to allow playing without DOM interaction on Web.
         // See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
-        await _controller.setVolume(0);
+        await controller.setVolume(0);
 
         // Play for a second, then pause, and then wait a second.
-        await _controller.play();
+        await controller.play();
         await tester.pumpAndSettle(_playDuration);
-        await _controller.pause();
-        final Duration pausedPosition = _controller.value.position;
+        await controller.pause();
+        final Duration pausedPosition = controller.value.position;
         await tester.pumpAndSettle(_playDuration);
 
         // Verify that we stopped playing after the pause.
-        expect(_controller.value.isPlaying, false);
-        expect(_controller.value.position, pausedPosition);
+        expect(controller.value.isPlaying, false);
+        expect(controller.value.position, pausedPosition);
       },
     );
 
     testWidgets(
       'stay paused when seeking after video completed',
       (WidgetTester tester) async {
-        await _controller.initialize();
+        await controller.initialize();
         // Mute to allow playing without DOM interaction on Web.
         // See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
-        await _controller.setVolume(0);
+        await controller.setVolume(0);
         final Duration tenMillisBeforeEnd =
-            _controller.value.duration - const Duration(milliseconds: 10);
-        await _controller.seekTo(tenMillisBeforeEnd);
-        await _controller.play();
+            controller.value.duration - const Duration(milliseconds: 10);
+        await controller.seekTo(tenMillisBeforeEnd);
+        await controller.play();
         await tester.pumpAndSettle(_playDuration);
-        expect(_controller.value.isPlaying, false);
-        expect(_controller.value.position, _controller.value.duration);
+        expect(controller.value.isPlaying, false);
+        expect(controller.value.position, controller.value.duration);
 
-        await _controller.seekTo(tenMillisBeforeEnd);
+        await controller.seekTo(tenMillisBeforeEnd);
         await tester.pumpAndSettle(_playDuration);
 
-        expect(_controller.value.isPlaying, false);
-        expect(_controller.value.position, tenMillisBeforeEnd);
+        expect(controller.value.isPlaying, false);
+        expect(controller.value.position, tenMillisBeforeEnd);
       },
     );
 
     testWidgets(
       'do not exceed duration on play after video completed',
       (WidgetTester tester) async {
-        await _controller.initialize();
+        await controller.initialize();
         // Mute to allow playing without DOM interaction on Web.
         // See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
-        await _controller.setVolume(0);
-        await _controller.seekTo(
-            _controller.value.duration - const Duration(milliseconds: 10));
-        await _controller.play();
+        await controller.setVolume(0);
+        await controller.seekTo(
+            controller.value.duration - const Duration(milliseconds: 10));
+        await controller.play();
         await tester.pumpAndSettle(_playDuration);
-        expect(_controller.value.isPlaying, false);
-        expect(_controller.value.position, _controller.value.duration);
+        expect(controller.value.isPlaying, false);
+        expect(controller.value.position, controller.value.duration);
 
-        await _controller.play();
+        await controller.play();
         await tester.pumpAndSettle(_playDuration);
 
-        expect(_controller.value.position,
-            lessThanOrEqualTo(_controller.value.duration));
+        expect(controller.value.position,
+            lessThanOrEqualTo(controller.value.duration));
       },
     );
 
     testWidgets('test video player view with local asset',
         (WidgetTester tester) async {
       Future<bool> started() async {
-        await _controller.initialize();
-        await _controller.play();
+        await controller.initialize();
+        await controller.play();
         return true;
       }
 
@@ -185,8 +185,8 @@
               builder: (BuildContext context, AsyncSnapshot<bool> snapshot) {
                 if (snapshot.data ?? false) {
                   return AspectRatio(
-                    aspectRatio: _controller.value.aspectRatio,
-                    child: VideoPlayer(_controller),
+                    aspectRatio: controller.value.aspectRatio,
+                    child: VideoPlayer(controller),
                   );
                 } else {
                   return const Text('waiting for video to load');
@@ -198,7 +198,7 @@
       ));
 
       await tester.pumpAndSettle();
-      expect(_controller.value.isPlaying, true);
+      expect(controller.value.isPlaying, true);
     },
         skip: kIsWeb || // Web does not support local assets.
             // Extremely flaky on iOS: https://github.com/flutter/flutter/issues/86915
@@ -216,54 +216,54 @@
       final File file = File('$tempDir/$filename');
       await file.writeAsBytes(bytes.buffer.asInt8List());
 
-      _controller = VideoPlayerController.file(file);
+      controller = VideoPlayerController.file(file);
     });
 
     testWidgets('test video player using static file() method as constructor',
         (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
-      await _controller.play();
-      expect(_controller.value.isPlaying, true);
+      await controller.play();
+      expect(controller.value.isPlaying, true);
 
-      await _controller.pause();
-      expect(_controller.value.isPlaying, false);
+      await controller.pause();
+      expect(controller.value.isPlaying, false);
     }, skip: kIsWeb);
   });
 
   group('network videos', () {
     setUp(() {
-      _controller = VideoPlayerController.network(
+      controller = VideoPlayerController.network(
           getUrlForAssetAsNetworkSource(_videoAssetKey));
     });
 
     testWidgets(
       'reports buffering status',
       (WidgetTester tester) async {
-        await _controller.initialize();
+        await controller.initialize();
         // Mute to allow playing without DOM interaction on Web.
         // See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
-        await _controller.setVolume(0);
+        await controller.setVolume(0);
         final Completer<void> started = Completer<void>();
         final Completer<void> ended = Completer<void>();
-        _controller.addListener(() {
-          if (!started.isCompleted && _controller.value.isBuffering) {
+        controller.addListener(() {
+          if (!started.isCompleted && controller.value.isBuffering) {
             started.complete();
           }
           if (started.isCompleted &&
-              !_controller.value.isBuffering &&
+              !controller.value.isBuffering &&
               !ended.isCompleted) {
             ended.complete();
           }
         });
 
-        await _controller.play();
-        await _controller.seekTo(const Duration(seconds: 5));
+        await controller.play();
+        await controller.seekTo(const Duration(seconds: 5));
         await tester.pumpAndSettle(_playDuration);
-        await _controller.pause();
+        await controller.pause();
 
-        expect(_controller.value.isPlaying, false);
-        expect(_controller.value.position,
+        expect(controller.value.isPlaying, false);
+        expect(controller.value.position,
             (Duration position) => position > Duration.zero);
 
         await expectLater(started.future, completes);
@@ -277,63 +277,63 @@
   // but could be removed in the future.
   group('asset audios', () {
     setUp(() {
-      _controller = VideoPlayerController.asset('assets/Audio.mp3');
+      controller = VideoPlayerController.asset('assets/Audio.mp3');
     });
 
     testWidgets('can be initialized', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
-      expect(_controller.value.isInitialized, true);
-      expect(_controller.value.position, Duration.zero);
-      expect(_controller.value.isPlaying, false);
+      expect(controller.value.isInitialized, true);
+      expect(controller.value.position, Duration.zero);
+      expect(controller.value.isPlaying, false);
       // Due to the duration calculation accuracy between platforms,
       // the milliseconds on Web will be a slightly different from natives.
       // The audio was made with 44100 Hz, 192 Kbps CBR, and 32 bits.
       expect(
-        _controller.value.duration,
+        controller.value.duration,
         const Duration(seconds: 5, milliseconds: kIsWeb ? 42 : 41),
       );
     });
 
     testWidgets('can be played', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
       // Mute to allow playing without DOM interaction on Web.
       // See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
-      await _controller.setVolume(0);
+      await controller.setVolume(0);
 
-      await _controller.play();
+      await controller.play();
       await tester.pumpAndSettle(_playDuration);
 
-      expect(_controller.value.isPlaying, true);
+      expect(controller.value.isPlaying, true);
       expect(
-        _controller.value.position,
+        controller.value.position,
         (Duration position) => position > Duration.zero,
       );
     });
 
     testWidgets('can seek', (WidgetTester tester) async {
-      await _controller.initialize();
-      await _controller.seekTo(const Duration(seconds: 3));
+      await controller.initialize();
+      await controller.seekTo(const Duration(seconds: 3));
 
-      expect(_controller.value.position, const Duration(seconds: 3));
+      expect(controller.value.position, const Duration(seconds: 3));
     });
 
     testWidgets('can be paused', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
       // Mute to allow playing without DOM interaction on Web.
       // See https://developers.google.com/web/updates/2017/09/autoplay-policy-changes
-      await _controller.setVolume(0);
+      await controller.setVolume(0);
 
       // Play for a second, then pause, and then wait a second.
-      await _controller.play();
+      await controller.play();
       await tester.pumpAndSettle(_playDuration);
-      await _controller.pause();
-      final Duration pausedPosition = _controller.value.position;
+      await controller.pause();
+      final Duration pausedPosition = controller.value.position;
       await tester.pumpAndSettle(_playDuration);
 
       // Verify that we stopped playing after the pause.
-      expect(_controller.value.isPlaying, false);
-      expect(_controller.value.position, pausedPosition);
+      expect(controller.value.isPlaying, false);
+      expect(controller.value.position, pausedPosition);
     });
   });
 }
diff --git a/packages/video_player/video_player/test/video_player_test.dart b/packages/video_player/video_player/test/video_player_test.dart
index e7b3e1d..8e5e98b 100644
--- a/packages/video_player/video_player/test/video_player_test.dart
+++ b/packages/video_player/video_player/test/video_player_test.dart
@@ -105,7 +105,7 @@
 }
 
 void main() {
-  void _verifyPlayStateRespondsToLifecycle(
+  void verifyPlayStateRespondsToLifecycle(
     VideoPlayerController controller, {
     required bool shouldPlayInBackground,
   }) {
@@ -248,7 +248,7 @@
         );
         await controller.initialize();
         await controller.play();
-        _verifyPlayStateRespondsToLifecycle(controller,
+        verifyPlayStateRespondsToLifecycle(controller,
             shouldPlayInBackground: false);
       });
 
@@ -1025,7 +1025,7 @@
       );
       await controller.initialize();
       await controller.play();
-      _verifyPlayStateRespondsToLifecycle(
+      verifyPlayStateRespondsToLifecycle(
         controller,
         shouldPlayInBackground: true,
       );
@@ -1038,7 +1038,7 @@
       );
       await controller.initialize();
       await controller.play();
-      _verifyPlayStateRespondsToLifecycle(
+      verifyPlayStateRespondsToLifecycle(
         controller,
         shouldPlayInBackground: false,
       );
diff --git a/packages/video_player/video_player_android/CHANGELOG.md b/packages/video_player/video_player_android/CHANGELOG.md
index 7986d1a..7298bac 100644
--- a/packages/video_player/video_player_android/CHANGELOG.md
+++ b/packages/video_player/video_player_android/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
 * Updates minimum Flutter version to 2.10.
 * Fixes violations of new analysis option use_named_constants.
 
diff --git a/packages/video_player/video_player_android/example/integration_test/video_player_test.dart b/packages/video_player/video_player_android/example/integration_test/video_player_test.dart
index ef7bded..751412c 100644
--- a/packages/video_player/video_player_android/example/integration_test/video_player_test.dart
+++ b/packages/video_player/video_player_android/example/integration_test/video_player_test.dart
@@ -39,12 +39,12 @@
 void main() {
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
 
-  late MiniController _controller;
-  tearDown(() async => _controller.dispose());
+  late MiniController controller;
+  tearDown(() async => controller.dispose());
 
   group('asset videos', () {
     setUp(() {
-      _controller = MiniController.asset(_videoAssetKey);
+      controller = MiniController.asset(_videoAssetKey);
     });
 
     testWidgets('registers expected implementation',
@@ -54,44 +54,44 @@
     });
 
     testWidgets('can be initialized', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
-      expect(_controller.value.isInitialized, true);
-      expect(await _controller.position, Duration.zero);
-      expect(_controller.value.duration,
+      expect(controller.value.isInitialized, true);
+      expect(await controller.position, Duration.zero);
+      expect(controller.value.duration,
           const Duration(seconds: 7, milliseconds: 540));
     });
 
     testWidgets('can be played', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
-      await _controller.play();
+      await controller.play();
       await tester.pumpAndSettle(_playDuration);
 
-      expect(await _controller.position, greaterThan(Duration.zero));
+      expect(await controller.position, greaterThan(Duration.zero));
     });
 
     testWidgets('can seek', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
-      await _controller.seekTo(const Duration(seconds: 3));
+      await controller.seekTo(const Duration(seconds: 3));
 
-      expect(await _controller.position, const Duration(seconds: 3));
+      expect(await controller.position, const Duration(seconds: 3));
     });
 
     testWidgets('can be paused', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
       // Play for a second, then pause, and then wait a second.
-      await _controller.play();
+      await controller.play();
       await tester.pumpAndSettle(_playDuration);
-      await _controller.pause();
+      await controller.pause();
       await tester.pumpAndSettle(_playDuration);
-      final Duration pausedPosition = (await _controller.position)!;
+      final Duration pausedPosition = (await controller.position)!;
       await tester.pumpAndSettle(_playDuration);
 
       // Verify that we stopped playing after the pause.
-      expect(await _controller.position, pausedPosition);
+      expect(await controller.position, pausedPosition);
     });
   });
 
@@ -106,48 +106,48 @@
       final File file = File('$tempDir/$filename');
       await file.writeAsBytes(bytes.buffer.asInt8List());
 
-      _controller = MiniController.file(file);
+      controller = MiniController.file(file);
     });
 
     testWidgets('test video player using static file() method as constructor',
         (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
-      await _controller.play();
+      await controller.play();
       await tester.pumpAndSettle(_playDuration);
 
-      expect(await _controller.position, greaterThan(Duration.zero));
+      expect(await controller.position, greaterThan(Duration.zero));
     });
   });
 
   group('network videos', () {
     setUp(() {
       final String videoUrl = getUrlForAssetAsNetworkSource(_videoAssetKey);
-      _controller = MiniController.network(videoUrl);
+      controller = MiniController.network(videoUrl);
     });
 
     testWidgets('reports buffering status', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
       final Completer<void> started = Completer<void>();
       final Completer<void> ended = Completer<void>();
-      _controller.addListener(() {
-        if (!started.isCompleted && _controller.value.isBuffering) {
+      controller.addListener(() {
+        if (!started.isCompleted && controller.value.isBuffering) {
           started.complete();
         }
         if (started.isCompleted &&
-            !_controller.value.isBuffering &&
+            !controller.value.isBuffering &&
             !ended.isCompleted) {
           ended.complete();
         }
       });
 
-      await _controller.play();
-      await _controller.seekTo(const Duration(seconds: 5));
+      await controller.play();
+      await controller.seekTo(const Duration(seconds: 5));
       await tester.pumpAndSettle(_playDuration);
-      await _controller.pause();
+      await controller.pause();
 
-      expect(await _controller.position, greaterThan(Duration.zero));
+      expect(await controller.position, greaterThan(Duration.zero));
 
       await expectLater(started.future, completes);
       await expectLater(ended.future, completes);
diff --git a/packages/video_player/video_player_avfoundation/CHANGELOG.md b/packages/video_player/video_player_avfoundation/CHANGELOG.md
index cc4411c..7cfa025 100644
--- a/packages/video_player/video_player_avfoundation/CHANGELOG.md
+++ b/packages/video_player/video_player_avfoundation/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 2.3.6
 
 * Fixes a bug in iOS 16 where videos from protected live streams are not shown. 
diff --git a/packages/video_player/video_player_avfoundation/example/integration_test/video_player_test.dart b/packages/video_player/video_player_avfoundation/example/integration_test/video_player_test.dart
index 15108aa..5027973 100644
--- a/packages/video_player/video_player_avfoundation/example/integration_test/video_player_test.dart
+++ b/packages/video_player/video_player_avfoundation/example/integration_test/video_player_test.dart
@@ -39,12 +39,12 @@
 void main() {
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
 
-  late MiniController _controller;
-  tearDown(() async => _controller.dispose());
+  late MiniController controller;
+  tearDown(() async => controller.dispose());
 
   group('asset videos', () {
     setUp(() {
-      _controller = MiniController.asset(_videoAssetKey);
+      controller = MiniController.asset(_videoAssetKey);
     });
 
     testWidgets('registers expected implementation',
@@ -54,50 +54,50 @@
     });
 
     testWidgets('can be initialized', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
-      expect(_controller.value.isInitialized, true);
-      expect(await _controller.position, Duration.zero);
-      expect(_controller.value.duration,
+      expect(controller.value.isInitialized, true);
+      expect(await controller.position, Duration.zero);
+      expect(controller.value.duration,
           const Duration(seconds: 7, milliseconds: 540));
     });
 
     testWidgets('can be played', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
-      await _controller.play();
+      await controller.play();
       await tester.pumpAndSettle(_playDuration);
 
-      expect(await _controller.position, greaterThan(Duration.zero));
+      expect(await controller.position, greaterThan(Duration.zero));
     });
 
     testWidgets('can seek', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
-      await _controller.seekTo(const Duration(seconds: 3));
+      await controller.seekTo(const Duration(seconds: 3));
 
       // TODO(stuartmorgan): Switch to _controller.position once seekTo is
       // fixed on the native side to wait for completion, so this is testing
       // the native code rather than the MiniController position cache.
-      expect(_controller.value.position, const Duration(seconds: 3));
+      expect(controller.value.position, const Duration(seconds: 3));
     });
 
     testWidgets('can be paused', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
       // Play for a second, then pause, and then wait a second.
-      await _controller.play();
+      await controller.play();
       await tester.pumpAndSettle(_playDuration);
-      await _controller.pause();
-      final Duration pausedPosition = (await _controller.position)!;
+      await controller.pause();
+      final Duration pausedPosition = (await controller.position)!;
       await tester.pumpAndSettle(_playDuration);
 
       // Verify that we stopped playing after the pause.
       // TODO(stuartmorgan): Investigate why this has a slight discrepency, and
       // fix it if possible. Is AVPlayer's pause method internally async?
       const Duration allowableDelta = Duration(milliseconds: 10);
-      expect(await _controller.position,
-          lessThan(pausedPosition + allowableDelta));
+      expect(
+          await controller.position, lessThan(pausedPosition + allowableDelta));
     });
   });
 
@@ -112,51 +112,51 @@
       final File file = File('$tempDir/$filename');
       await file.writeAsBytes(bytes.buffer.asInt8List());
 
-      _controller = MiniController.file(file);
+      controller = MiniController.file(file);
     });
 
     testWidgets('test video player using static file() method as constructor',
         (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
-      await _controller.play();
+      await controller.play();
       await tester.pumpAndSettle(_playDuration);
 
-      expect(await _controller.position, greaterThan(Duration.zero));
+      expect(await controller.position, greaterThan(Duration.zero));
     });
   });
 
   group('network videos', () {
     setUp(() {
       final String videoUrl = getUrlForAssetAsNetworkSource(_videoAssetKey);
-      _controller = MiniController.network(videoUrl);
+      controller = MiniController.network(videoUrl);
     });
 
     testWidgets('reports buffering status', (WidgetTester tester) async {
-      await _controller.initialize();
+      await controller.initialize();
 
       final Completer<void> started = Completer<void>();
       final Completer<void> ended = Completer<void>();
-      _controller.addListener(() {
-        if (!started.isCompleted && _controller.value.isBuffering) {
+      controller.addListener(() {
+        if (!started.isCompleted && controller.value.isBuffering) {
           started.complete();
         }
         if (started.isCompleted &&
-            !_controller.value.isBuffering &&
+            !controller.value.isBuffering &&
             !ended.isCompleted) {
           ended.complete();
         }
       });
 
-      await _controller.play();
-      await _controller.seekTo(const Duration(seconds: 5));
+      await controller.play();
+      await controller.seekTo(const Duration(seconds: 5));
       await tester.pumpAndSettle(_playDuration);
-      await _controller.pause();
+      await controller.pause();
 
       // TODO(stuartmorgan): Switch to _controller.position once seekTo is
       // fixed on the native side to wait for completion, so this is testing
       // the native code rather than the MiniController position cache.
-      expect(_controller.value.position, greaterThan(Duration.zero));
+      expect(controller.value.position, greaterThan(Duration.zero));
 
       await expectLater(started.future, completes);
       await expectLater(ended.future, completes);
diff --git a/packages/webview_flutter/webview_flutter/CHANGELOG.md b/packages/webview_flutter/webview_flutter/CHANGELOG.md
index 73dd7ce..d5559f9 100644
--- a/packages/webview_flutter/webview_flutter/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
 * Updates minimum Flutter version to 2.10.
 * Fixes avoid_redundant_argument_values lint warnings and minor typos.
 * Ignores unnecessary import warnings in preparation for [upcoming Flutter changes](https://github.com/flutter/flutter/pull/104231).
diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart
index 8e326fe..63f4384 100644
--- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart
+++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart
@@ -235,12 +235,12 @@
   testWidgets('set custom userAgent', (WidgetTester tester) async {
     final Completer<WebViewController> controllerCompleter1 =
         Completer<WebViewController>();
-    final GlobalKey _globalKey = GlobalKey();
+    final GlobalKey globalKey = GlobalKey();
     await tester.pumpWidget(
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: 'about:blank',
           javascriptMode: JavascriptMode.unrestricted,
           userAgent: 'Custom_User_Agent1',
@@ -258,7 +258,7 @@
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: 'about:blank',
           javascriptMode: JavascriptMode.unrestricted,
           userAgent: 'Custom_User_Agent2',
@@ -274,13 +274,13 @@
       (WidgetTester tester) async {
     final Completer<WebViewController> controllerCompleter =
         Completer<WebViewController>();
-    final GlobalKey _globalKey = GlobalKey();
+    final GlobalKey globalKey = GlobalKey();
     // Build the webView with no user agent to get the default platform user agent.
     await tester.pumpWidget(
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: primaryUrl,
           javascriptMode: JavascriptMode.unrestricted,
           onWebViewCreated: (WebViewController controller) {
@@ -296,7 +296,7 @@
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: 'about:blank',
           javascriptMode: JavascriptMode.unrestricted,
           userAgent: 'Custom_User_Agent',
@@ -310,7 +310,7 @@
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: 'about:blank',
           javascriptMode: JavascriptMode.unrestricted,
         ),
diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
index 4853aec..dfad03e 100644
--- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 2.10.3
 
 * Updates imports for `prefer_relative_imports`.
diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart
index b7c32f5..69c1a46 100644
--- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart
+++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart
@@ -241,12 +241,12 @@
   testWidgets('set custom userAgent', (WidgetTester tester) async {
     final Completer<WebViewController> controllerCompleter1 =
         Completer<WebViewController>();
-    final GlobalKey _globalKey = GlobalKey();
+    final GlobalKey globalKey = GlobalKey();
     await tester.pumpWidget(
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: 'about:blank',
           javascriptMode: JavascriptMode.unrestricted,
           userAgent: 'Custom_User_Agent1',
@@ -264,7 +264,7 @@
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: 'about:blank',
           javascriptMode: JavascriptMode.unrestricted,
           userAgent: 'Custom_User_Agent2',
@@ -280,13 +280,13 @@
       (WidgetTester tester) async {
     final Completer<WebViewController> controllerCompleter =
         Completer<WebViewController>();
-    final GlobalKey _globalKey = GlobalKey();
+    final GlobalKey globalKey = GlobalKey();
     // Build the webView with no user agent to get the default platform user agent.
     await tester.pumpWidget(
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: primaryUrl,
           javascriptMode: JavascriptMode.unrestricted,
           onWebViewCreated: (WebViewController controller) {
@@ -302,7 +302,7 @@
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: 'about:blank',
           javascriptMode: JavascriptMode.unrestricted,
           userAgent: 'Custom_User_Agent',
@@ -316,7 +316,7 @@
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: 'about:blank',
           javascriptMode: JavascriptMode.unrestricted,
         ),
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
index e8eb01e..b7050e4 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.9.5
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 1.9.4
 
 * Updates imports for `prefer_relative_imports`.
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/method_channel/webview_method_channel.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/method_channel/webview_method_channel.dart
index f328817..0e98ea0 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/method_channel/webview_method_channel.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/method_channel/webview_method_channel.dart
@@ -247,30 +247,29 @@
 
   static Map<String, dynamic> _webSettingsToMap(WebSettings? settings) {
     final Map<String, dynamic> map = <String, dynamic>{};
-    void _addIfNonNull(String key, dynamic value) {
+    void addIfNonNull(String key, dynamic value) {
       if (value == null) {
         return;
       }
       map[key] = value;
     }
 
-    void _addSettingIfPresent<T>(String key, WebSetting<T> setting) {
+    void addSettingIfPresent<T>(String key, WebSetting<T> setting) {
       if (!setting.isPresent) {
         return;
       }
       map[key] = setting.value;
     }
 
-    _addIfNonNull('jsMode', settings!.javascriptMode?.index);
-    _addIfNonNull('hasNavigationDelegate', settings.hasNavigationDelegate);
-    _addIfNonNull('hasProgressTracking', settings.hasProgressTracking);
-    _addIfNonNull('debuggingEnabled', settings.debuggingEnabled);
-    _addIfNonNull(
-        'gestureNavigationEnabled', settings.gestureNavigationEnabled);
-    _addIfNonNull(
+    addIfNonNull('jsMode', settings!.javascriptMode?.index);
+    addIfNonNull('hasNavigationDelegate', settings.hasNavigationDelegate);
+    addIfNonNull('hasProgressTracking', settings.hasProgressTracking);
+    addIfNonNull('debuggingEnabled', settings.debuggingEnabled);
+    addIfNonNull('gestureNavigationEnabled', settings.gestureNavigationEnabled);
+    addIfNonNull(
         'allowsInlineMediaPlayback', settings.allowsInlineMediaPlayback);
-    _addSettingIfPresent('userAgent', settings.userAgent);
-    _addIfNonNull('zoomEnabled', settings.zoomEnabled);
+    addSettingIfPresent('userAgent', settings.userAgent);
+    addIfNonNull('zoomEnabled', settings.zoomEnabled);
     return map;
   }
 
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml
index 4b14872..8f60592 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml
@@ -4,7 +4,7 @@
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview_flutter%22
 # NOTE: We strongly prefer non-breaking changes, even at the expense of a
 # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
-version: 1.9.4
+version: 1.9.5
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/platform_interface/javascript_channel_registry_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/src/platform_interface/javascript_channel_registry_test.dart
index 30795b0..aec568e 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/platform_interface/javascript_channel_registry_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/src/platform_interface/javascript_channel_registry_test.dart
@@ -7,35 +7,35 @@
 import 'package:webview_flutter_platform_interface/src/types/types.dart';
 
 void main() {
-  final Map<String, String> _log = <String, String>{};
-  final Set<JavascriptChannel> _channels = <JavascriptChannel>{
+  final Map<String, String> log = <String, String>{};
+  final Set<JavascriptChannel> channels = <JavascriptChannel>{
     JavascriptChannel(
       name: 'js_channel_1',
       onMessageReceived: (JavascriptMessage message) =>
-          _log['js_channel_1'] = message.message,
+          log['js_channel_1'] = message.message,
     ),
     JavascriptChannel(
       name: 'js_channel_2',
       onMessageReceived: (JavascriptMessage message) =>
-          _log['js_channel_2'] = message.message,
+          log['js_channel_2'] = message.message,
     ),
     JavascriptChannel(
       name: 'js_channel_3',
       onMessageReceived: (JavascriptMessage message) =>
-          _log['js_channel_3'] = message.message,
+          log['js_channel_3'] = message.message,
     ),
   };
 
   tearDown(() {
-    _log.clear();
+    log.clear();
   });
 
   test('ctor should initialize with channels.', () {
     final JavascriptChannelRegistry registry =
-        JavascriptChannelRegistry(_channels);
+        JavascriptChannelRegistry(channels);
 
     expect(registry.channels.length, 3);
-    for (final JavascriptChannel channel in _channels) {
+    for (final JavascriptChannel channel in channels) {
       expect(registry.channels[channel.name], channel);
     }
   });
@@ -43,7 +43,7 @@
   test('onJavascriptChannelMessage should forward message on correct channel.',
       () {
     final JavascriptChannelRegistry registry =
-        JavascriptChannelRegistry(_channels);
+        JavascriptChannelRegistry(channels);
 
     registry.onJavascriptChannelMessage(
       'js_channel_2',
@@ -51,7 +51,7 @@
     );
 
     expect(
-        _log,
+        log,
         containsPair(
           'js_channel_2',
           'test message on channel 2',
@@ -62,7 +62,7 @@
       'onJavascriptChannelMessage should throw ArgumentError when message arrives on non-existing channel.',
       () {
     final JavascriptChannelRegistry registry =
-        JavascriptChannelRegistry(_channels);
+        JavascriptChannelRegistry(channels);
 
     expect(
         () => registry.onJavascriptChannelMessage(
@@ -79,7 +79,7 @@
       'updateJavascriptChannelsFromSet should clear all channels when null is supplied.',
       () {
     final JavascriptChannelRegistry registry =
-        JavascriptChannelRegistry(_channels);
+        JavascriptChannelRegistry(channels);
 
     expect(registry.channels.length, 3);
 
@@ -91,7 +91,7 @@
   test('updateJavascriptChannelsFromSet should update registry with new set.',
       () {
     final JavascriptChannelRegistry registry =
-        JavascriptChannelRegistry(_channels);
+        JavascriptChannelRegistry(channels);
 
     expect(registry.channels.length, 3);
 
@@ -99,12 +99,12 @@
       JavascriptChannel(
         name: 'new_js_channel_1',
         onMessageReceived: (JavascriptMessage message) =>
-            _log['new_js_channel_1'] = message.message,
+            log['new_js_channel_1'] = message.message,
       ),
       JavascriptChannel(
         name: 'new_js_channel_2',
         onMessageReceived: (JavascriptMessage message) =>
-            _log['new_js_channel_2'] = message.message,
+            log['new_js_channel_2'] = message.message,
       ),
     };
 
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/types/javascript_channel_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/src/types/javascript_channel_test.dart
index f481edd..8d71771 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/types/javascript_channel_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/src/types/javascript_channel_test.dart
@@ -6,17 +6,17 @@
 import 'package:webview_flutter_platform_interface/src/types/javascript_channel.dart';
 
 void main() {
-  final List<String> _validChars =
+  final List<String> validChars =
       'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_'.split('');
-  final List<String> _commonInvalidChars =
+  final List<String> commonInvalidChars =
       r'`~!@#$%^&*()-=+[]{}\|"' ':;/?<>,. '.split('');
-  final List<int> _digits = List<int>.generate(10, (int index) => index++);
+  final List<int> digits = List<int>.generate(10, (int index) => index++);
 
   test(
       'ctor should create JavascriptChannel when name starts with a valid character followed by a number.',
       () {
-    for (final String char in _validChars) {
-      for (final int digit in _digits) {
+    for (final String char in validChars) {
+      for (final int digit in digits) {
         final JavascriptChannel channel =
             JavascriptChannel(name: '$char$digit', onMessageReceived: (_) {});
 
@@ -26,7 +26,7 @@
   });
 
   test('ctor should assert when channel name starts with a number.', () {
-    for (final int i in _digits) {
+    for (final int i in digits) {
       expect(
         () => JavascriptChannel(name: '$i', onMessageReceived: (_) {}),
         throwsAssertionError,
@@ -35,8 +35,8 @@
   });
 
   test('ctor should assert when channel contains invalid char.', () {
-    for (final String validChar in _validChars) {
-      for (final String invalidChar in _commonInvalidChars) {
+    for (final String validChar in validChars) {
+      for (final String invalidChar in commonInvalidChars) {
         expect(
           () => JavascriptChannel(
               name: validChar + invalidChar, onMessageReceived: (_) {}),
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
index 318ffe6..c0a2ade 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates code for `no_leading_underscores_for_local_identifiers` lint.
+
 ## 2.9.5
 
 * Updates imports for `prefer_relative_imports`.
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart
index e259bc7..047d69f 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart
+++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart
@@ -253,12 +253,12 @@
   testWidgets('set custom userAgent', (WidgetTester tester) async {
     final Completer<WebViewController> controllerCompleter1 =
         Completer<WebViewController>();
-    final GlobalKey _globalKey = GlobalKey();
+    final GlobalKey globalKey = GlobalKey();
     await tester.pumpWidget(
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: 'about:blank',
           javascriptMode: JavascriptMode.unrestricted,
           userAgent: 'Custom_User_Agent1',
@@ -276,7 +276,7 @@
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: 'about:blank',
           javascriptMode: JavascriptMode.unrestricted,
           userAgent: 'Custom_User_Agent2',
@@ -292,13 +292,13 @@
       (WidgetTester tester) async {
     final Completer<WebViewController> controllerCompleter =
         Completer<WebViewController>();
-    final GlobalKey _globalKey = GlobalKey();
+    final GlobalKey globalKey = GlobalKey();
     // Build the webView with no user agent to get the default platform user agent.
     await tester.pumpWidget(
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: primaryUrl,
           javascriptMode: JavascriptMode.unrestricted,
           onWebViewCreated: (WebViewController controller) {
@@ -314,7 +314,7 @@
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: 'about:blank',
           javascriptMode: JavascriptMode.unrestricted,
           userAgent: 'Custom_User_Agent',
@@ -328,7 +328,7 @@
       Directionality(
         textDirection: TextDirection.ltr,
         child: WebView(
-          key: _globalKey,
+          key: globalKey,
           initialUrl: 'about:blank',
           javascriptMode: JavascriptMode.unrestricted,
         ),
diff --git a/script/tool/lib/src/common/package_looping_command.dart b/script/tool/lib/src/common/package_looping_command.dart
index a32ada2..d8b1cf0 100644
--- a/script/tool/lib/src/common/package_looping_command.dart
+++ b/script/tool/lib/src/common/package_looping_command.dart
@@ -428,9 +428,9 @@
             .length;
     // Split the warnings into those from packages that ran, and those that
     // were skipped.
-    final Set<PackageEnumerationEntry> _skippedPackagesWithWarnings =
+    final Set<PackageEnumerationEntry> skippedPackagesWithWarnings =
         _packagesWithWarnings.intersection(skippedPackages);
-    final int skippedWarningCount = _skippedPackagesWithWarnings.length;
+    final int skippedWarningCount = skippedPackagesWithWarnings.length;
     final int runWarningCount =
         _packagesWithWarnings.length - skippedWarningCount;
 
diff --git a/script/tool/lib/src/native_test_command.dart b/script/tool/lib/src/native_test_command.dart
index 81b13cb..af5f4df 100644
--- a/script/tool/lib/src/native_test_command.dart
+++ b/script/tool/lib/src/native_test_command.dart
@@ -406,9 +406,9 @@
       );
 
       // The exit code from 'xcodebuild test' when there are no tests.
-      const int _xcodebuildNoTestExitCode = 66;
+      const int xcodebuildNoTestExitCode = 66;
       switch (exitCode) {
-        case _xcodebuildNoTestExitCode:
+        case xcodebuildNoTestExitCode:
           _printNoExampleTestsMessage(example, platform);
           break;
         case 0:
diff --git a/script/tool/test/dependabot_check_command_test.dart b/script/tool/test/dependabot_check_command_test.dart
index b0558c3..39dd8f4 100644
--- a/script/tool/test/dependabot_check_command_test.dart
+++ b/script/tool/test/dependabot_check_command_test.dart
@@ -36,7 +36,7 @@
     runner.addCommand(command);
   });
 
-  void _setDependabotCoverage({
+  void setDependabotCoverage({
     Iterable<String> gradleDirs = const <String>[],
   }) {
     final Iterable<String> gradleEntries =
@@ -57,7 +57,7 @@
   }
 
   test('skips with no supported ecosystems', () async {
-    _setDependabotCoverage();
+    setDependabotCoverage();
     createFakePackage('a_package', packagesDir);
 
     final List<String> output =
@@ -71,7 +71,7 @@
   });
 
   test('fails for app missing Gradle coverage', () async {
-    _setDependabotCoverage();
+    setDependabotCoverage();
     final RepositoryPackage package =
         createFakePackage('a_package', packagesDir);
     package.directory
@@ -97,7 +97,7 @@
   });
 
   test('fails for plugin missing Gradle coverage', () async {
-    _setDependabotCoverage();
+    setDependabotCoverage();
     final RepositoryPackage plugin = createFakePlugin('a_plugin', packagesDir);
     plugin.directory.childDirectory('android').createSync(recursive: true);
 
@@ -118,7 +118,7 @@
   });
 
   test('passes for correct Gradle coverage', () async {
-    _setDependabotCoverage(gradleDirs: <String>[
+    setDependabotCoverage(gradleDirs: <String>[
       'packages/a_plugin/android',
       'packages/a_plugin/example/android/app',
     ]);
diff --git a/script/tool/test/firebase_test_lab_command_test.dart b/script/tool/test/firebase_test_lab_command_test.dart
index 2d3175e..68ea62b 100644
--- a/script/tool/test/firebase_test_lab_command_test.dart
+++ b/script/tool/test/firebase_test_lab_command_test.dart
@@ -40,7 +40,7 @@
       runner.addCommand(command);
     });
 
-    void _writeJavaTestFile(RepositoryPackage plugin, String relativeFilePath,
+    void writeJavaTestFile(RepositoryPackage plugin, String relativeFilePath,
         {String runnerClass = 'FlutterTestRunner'}) {
       childFileWithSubcomponents(
               plugin.directory, p.posix.split(relativeFilePath))
@@ -67,7 +67,7 @@
         'example/android/gradlew',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin, javaTestFileRelativePath);
+      writeJavaTestFile(plugin, javaTestFileRelativePath);
 
       Error? commandError;
       final List<String> output = await runCapturingPrint(
@@ -97,7 +97,7 @@
         'example/android/gradlew',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin, javaTestFileRelativePath);
+      writeJavaTestFile(plugin, javaTestFileRelativePath);
 
       final List<String> output =
           await runCapturingPrint(runner, <String>['firebase-test-lab']);
@@ -120,7 +120,7 @@
         'example/android/gradlew',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin1, javaTestFileRelativePath);
+      writeJavaTestFile(plugin1, javaTestFileRelativePath);
       final RepositoryPackage plugin2 =
           createFakePlugin('plugin2', packagesDir, extraFiles: <String>[
         'test/plugin_test.dart',
@@ -128,7 +128,7 @@
         'example/android/gradlew',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin2, javaTestFileRelativePath);
+      writeJavaTestFile(plugin2, javaTestFileRelativePath);
 
       final List<String> output = await runCapturingPrint(runner, <String>[
         'firebase-test-lab',
@@ -207,7 +207,7 @@
         'example/android/gradlew',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin, javaTestFileRelativePath);
+      writeJavaTestFile(plugin, javaTestFileRelativePath);
 
       final List<String> output = await runCapturingPrint(runner, <String>[
         'firebase-test-lab',
@@ -286,7 +286,7 @@
             ],
           ]);
       for (final String example in examples) {
-        _writeJavaTestFile(
+        writeJavaTestFile(
             plugin, 'example/$example/$javaTestFileExampleRelativePath');
       }
 
@@ -347,7 +347,7 @@
         'example/android/gradlew',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin, javaTestFileRelativePath);
+      writeJavaTestFile(plugin, javaTestFileRelativePath);
 
       processRunner.mockProcessesForExecutable['gcloud'] = <Process>[
         MockProcess(), // auth
@@ -393,7 +393,7 @@
         'example/android/gradlew',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin, javaTestFileRelativePath);
+      writeJavaTestFile(plugin, javaTestFileRelativePath);
 
       processRunner.mockProcessesForExecutable['gcloud'] = <Process>[
         MockProcess(), // auth
@@ -460,7 +460,7 @@
         'example/android/gradlew',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin, javaTestFileRelativePath);
+      writeJavaTestFile(plugin, javaTestFileRelativePath);
 
       Error? commandError;
       final List<String> output = await runCapturingPrint(
@@ -501,7 +501,7 @@
         javaTestFileRelativePath,
       ]);
       // Use the wrong @RunWith annotation.
-      _writeJavaTestFile(plugin, javaTestFileRelativePath,
+      writeJavaTestFile(plugin, javaTestFileRelativePath,
           runnerClass: 'AndroidJUnit4.class');
 
       Error? commandError;
@@ -565,7 +565,7 @@
         'example/integration_test/foo_test.dart',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin, javaTestFileRelativePath);
+      writeJavaTestFile(plugin, javaTestFileRelativePath);
 
       final List<String> output = await runCapturingPrint(runner, <String>[
         'firebase-test-lab',
@@ -628,7 +628,7 @@
         'example/integration_test/foo_test.dart',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin, javaTestFileRelativePath);
+      writeJavaTestFile(plugin, javaTestFileRelativePath);
 
       processRunner.mockProcessesForExecutable['flutter'] = <Process>[
         MockProcess(exitCode: 1) // flutter build
@@ -663,7 +663,7 @@
         'example/integration_test/foo_test.dart',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin, javaTestFileRelativePath);
+      writeJavaTestFile(plugin, javaTestFileRelativePath);
 
       final String gradlewPath = plugin
           .getExamples()
@@ -704,7 +704,7 @@
         'example/integration_test/foo_test.dart',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin, javaTestFileRelativePath);
+      writeJavaTestFile(plugin, javaTestFileRelativePath);
 
       final String gradlewPath = plugin
           .getExamples()
@@ -750,7 +750,7 @@
         'example/android/gradlew',
         javaTestFileRelativePath,
       ]);
-      _writeJavaTestFile(plugin, javaTestFileRelativePath);
+      writeJavaTestFile(plugin, javaTestFileRelativePath);
 
       await runCapturingPrint(runner, <String>[
         'firebase-test-lab',
diff --git a/script/tool/test/format_command_test.dart b/script/tool/test/format_command_test.dart
index c1c4a21..9a86505 100644
--- a/script/tool/test/format_command_test.dart
+++ b/script/tool/test/format_command_test.dart
@@ -49,7 +49,7 @@
 
   /// Returns a modified version of a list of [relativePaths] that are relative
   /// to [package] to instead be relative to [packagesDir].
-  List<String> _getPackagesDirRelativePaths(
+  List<String> getPackagesDirRelativePaths(
       RepositoryPackage package, List<String> relativePaths) {
     final p.Context path = analyzeCommand.path;
     final String relativeBase =
@@ -65,7 +65,7 @@
   ///
   /// This is for each of testing batching, since it means each file will
   /// consume 100 characters of the batch length.
-  List<String> _get99CharacterPathExtraFiles(String packageName, int count) {
+  List<String> get99CharacterPathExtraFiles(String packageName, int count) {
     final int padding = 99 -
         packageName.length -
         1 - // the path separator after the package name
@@ -99,10 +99,7 @@
         orderedEquals(<ProcessCall>[
           ProcessCall(
               getFlutterCommand(mockPlatform),
-              <String>[
-                'format',
-                ..._getPackagesDirRelativePaths(plugin, files)
-              ],
+              <String>['format', ...getPackagesDirRelativePaths(plugin, files)],
               packagesDir.path),
         ]));
   });
@@ -138,7 +135,7 @@
               getFlutterCommand(mockPlatform),
               <String>[
                 'format',
-                ..._getPackagesDirRelativePaths(plugin, formattedFiles)
+                ...getPackagesDirRelativePaths(plugin, formattedFiles)
               ],
               packagesDir.path),
         ]));
@@ -191,7 +188,7 @@
                 '-jar',
                 javaFormatPath,
                 '--replace',
-                ..._getPackagesDirRelativePaths(plugin, files)
+                ...getPackagesDirRelativePaths(plugin, files)
               ],
               packagesDir.path),
         ]));
@@ -271,7 +268,7 @@
                 '-jar',
                 javaFormatPath,
                 '--replace',
-                ..._getPackagesDirRelativePaths(plugin, files)
+                ...getPackagesDirRelativePaths(plugin, files)
               ],
               packagesDir.path),
         ]));
@@ -303,7 +300,7 @@
               <String>[
                 '-i',
                 '--style=file',
-                ..._getPackagesDirRelativePaths(plugin, files)
+                ...getPackagesDirRelativePaths(plugin, files)
               ],
               packagesDir.path),
         ]));
@@ -358,7 +355,7 @@
               <String>[
                 '-i',
                 '--style=file',
-                ..._getPackagesDirRelativePaths(plugin, files)
+                ...getPackagesDirRelativePaths(plugin, files)
               ],
               packagesDir.path),
         ]));
@@ -426,14 +423,14 @@
               <String>[
                 '-i',
                 '--style=file',
-                ..._getPackagesDirRelativePaths(plugin, clangFiles)
+                ...getPackagesDirRelativePaths(plugin, clangFiles)
               ],
               packagesDir.path),
           ProcessCall(
               getFlutterCommand(mockPlatform),
               <String>[
                 'format',
-                ..._getPackagesDirRelativePaths(plugin, dartFiles)
+                ...getPackagesDirRelativePaths(plugin, dartFiles)
               ],
               packagesDir.path),
           ProcessCall(
@@ -442,7 +439,7 @@
                 '-jar',
                 javaFormatPath,
                 '--replace',
-                ..._getPackagesDirRelativePaths(plugin, javaFiles)
+                ...getPackagesDirRelativePaths(plugin, javaFiles)
               ],
               packagesDir.path),
         ]));
@@ -541,7 +538,7 @@
 
     // Make the file list one file longer than would fit in the batch.
     final List<String> batch1 =
-        _get99CharacterPathExtraFiles(pluginName, batchSize + 1);
+        get99CharacterPathExtraFiles(pluginName, batchSize + 1);
     final String extraFile = batch1.removeLast();
 
     createFakePlugin(
@@ -578,7 +575,7 @@
 
     // Make the file list one file longer than would fit in a Windows batch.
     final List<String> batch =
-        _get99CharacterPathExtraFiles(pluginName, batchSize + 1);
+        get99CharacterPathExtraFiles(pluginName, batchSize + 1);
 
     createFakePlugin(
       pluginName,
@@ -598,7 +595,7 @@
 
     // Make the file list one file longer than would fit in the batch.
     final List<String> batch1 =
-        _get99CharacterPathExtraFiles(pluginName, batchSize + 1);
+        get99CharacterPathExtraFiles(pluginName, batchSize + 1);
     final String extraFile = batch1.removeLast();
 
     createFakePlugin(
diff --git a/script/tool/test/license_check_command_test.dart b/script/tool/test/license_check_command_test.dart
index 005b77d..09841df 100644
--- a/script/tool/test/license_check_command_test.dart
+++ b/script/tool/test/license_check_command_test.dart
@@ -48,7 +48,7 @@
     /// [commentString] is added to the start of each line.
     /// [prefix] is added to the start of the entire block.
     /// [suffix] is added to the end of the entire block.
-    void _writeLicense(
+    void writeLicense(
       File file, {
       String comment = '// ',
       String prefix = '',
@@ -164,7 +164,7 @@
     test('passes if all checked files have license blocks', () async {
       final File checked = root.childFile('checked.cc');
       checked.createSync();
-      _writeLicense(checked);
+      writeLicense(checked);
       final File notChecked = root.childFile('not_checked.md');
       notChecked.createSync();
 
@@ -183,7 +183,7 @@
     test('passes correct license blocks on Windows', () async {
       final File checked = root.childFile('checked.cc');
       checked.createSync();
-      _writeLicense(checked, useCrlf: true);
+      writeLicense(checked, useCrlf: true);
 
       final List<String> output =
           await runCapturingPrint(runner, <String>['license-check']);
@@ -200,13 +200,13 @@
     test('handles the comment styles for all supported languages', () async {
       final File fileA = root.childFile('file_a.cc');
       fileA.createSync();
-      _writeLicense(fileA);
+      writeLicense(fileA);
       final File fileB = root.childFile('file_b.sh');
       fileB.createSync();
-      _writeLicense(fileB, comment: '# ');
+      writeLicense(fileB, comment: '# ');
       final File fileC = root.childFile('file_c.html');
       fileC.createSync();
-      _writeLicense(fileC, comment: '', prefix: '<!-- ', suffix: ' -->');
+      writeLicense(fileC, comment: '', prefix: '<!-- ', suffix: ' -->');
 
       final List<String> output =
           await runCapturingPrint(runner, <String>['license-check']);
@@ -225,10 +225,10 @@
     test('fails if any checked files are missing license blocks', () async {
       final File goodA = root.childFile('good.cc');
       goodA.createSync();
-      _writeLicense(goodA);
+      writeLicense(goodA);
       final File goodB = root.childFile('good.h');
       goodB.createSync();
-      _writeLicense(goodB);
+      writeLicense(goodB);
       root.childFile('bad.cc').createSync();
       root.childFile('bad.h').createSync();
 
@@ -255,10 +255,10 @@
     test('fails if any checked files are missing just the copyright', () async {
       final File good = root.childFile('good.cc');
       good.createSync();
-      _writeLicense(good);
+      writeLicense(good);
       final File bad = root.childFile('bad.cc');
       bad.createSync();
-      _writeLicense(bad, copyright: '');
+      writeLicense(bad, copyright: '');
 
       Error? commandError;
       final List<String> output = await runCapturingPrint(
@@ -282,10 +282,10 @@
     test('fails if any checked files are missing just the license', () async {
       final File good = root.childFile('good.cc');
       good.createSync();
-      _writeLicense(good);
+      writeLicense(good);
       final File bad = root.childFile('bad.cc');
       bad.createSync();
-      _writeLicense(bad, license: <String>[]);
+      writeLicense(bad, license: <String>[]);
 
       Error? commandError;
       final List<String> output = await runCapturingPrint(
@@ -310,7 +310,7 @@
         () async {
       final File thirdPartyFile = root.childFile('third_party.cc');
       thirdPartyFile.createSync();
-      _writeLicense(thirdPartyFile, copyright: 'Copyright 2017 Someone Else');
+      writeLicense(thirdPartyFile, copyright: 'Copyright 2017 Someone Else');
 
       Error? commandError;
       final List<String> output = await runCapturingPrint(
@@ -339,7 +339,7 @@
           .childDirectory('third_party')
           .childFile('file.cc');
       thirdPartyFile.createSync(recursive: true);
-      _writeLicense(thirdPartyFile,
+      writeLicense(thirdPartyFile,
           copyright: 'Copyright 2017 Workiva Inc.',
           license: <String>[
             'Licensed under the Apache License, Version 2.0 (the "License");',
@@ -366,7 +366,7 @@
           .childDirectory('third_party')
           .childFile('first_party.cc');
       firstPartyFileInThirdParty.createSync(recursive: true);
-      _writeLicense(firstPartyFileInThirdParty);
+      writeLicense(firstPartyFileInThirdParty);
 
       final List<String> output =
           await runCapturingPrint(runner, <String>['license-check']);
@@ -383,10 +383,10 @@
     test('fails for licenses that the tool does not expect', () async {
       final File good = root.childFile('good.cc');
       good.createSync();
-      _writeLicense(good);
+      writeLicense(good);
       final File bad = root.childDirectory('third_party').childFile('bad.cc');
       bad.createSync(recursive: true);
-      _writeLicense(bad, license: <String>[
+      writeLicense(bad, license: <String>[
         'This program is free software: you can redistribute it and/or modify',
         'it under the terms of the GNU General Public License',
       ]);
@@ -414,10 +414,10 @@
         () async {
       final File good = root.childFile('good.cc');
       good.createSync();
-      _writeLicense(good);
+      writeLicense(good);
       final File bad = root.childDirectory('third_party').childFile('bad.cc');
       bad.createSync(recursive: true);
-      _writeLicense(
+      writeLicense(
         bad,
         copyright: 'Copyright 2017 Some New Authors.',
         license: <String>[
diff --git a/script/tool/test/make_deps_path_based_command_test.dart b/script/tool/test/make_deps_path_based_command_test.dart
index 36753e8..e846a63 100644
--- a/script/tool/test/make_deps_path_based_command_test.dart
+++ b/script/tool/test/make_deps_path_based_command_test.dart
@@ -49,7 +49,7 @@
 
   /// Adds dummy 'dependencies:' entries for each package in [dependencies]
   /// to [package].
-  void _addDependencies(
+  void addDependencies(
       RepositoryPackage package, Iterable<String> dependencies) {
     final List<String> lines = package.pubspecFile.readAsLinesSync();
     final int dependenciesStartIndex = lines.indexOf('dependencies:');
@@ -62,7 +62,7 @@
 
   /// Adds a 'dev_dependencies:' section with entries for each package in
   /// [dependencies] to [package].
-  void _addDevDependenciesSection(
+  void addDevDependenciesSection(
       RepositoryPackage package, Iterable<String> devDependencies) {
     final String originalContent = package.pubspecFile.readAsStringSync();
     package.pubspecFile.writeAsStringSync('''
@@ -77,7 +77,7 @@
     createFakePackage('foo', packagesDir, isFlutter: true);
     final RepositoryPackage packageBar =
         createFakePackage('bar', packagesDir, isFlutter: true);
-    _addDependencies(packageBar, <String>['foo']);
+    addDependencies(packageBar, <String>['foo']);
     final String originalPubspecContents =
         packageBar.pubspecFile.readAsStringSync();
 
@@ -105,16 +105,16 @@
     final RepositoryPackage pluginAppFacing =
         createFakePlugin('bar', pluginGroup);
 
-    _addDependencies(simplePackage, <String>[
+    addDependencies(simplePackage, <String>[
       'bar',
       'bar_android',
       'bar_platform_interface',
     ]);
-    _addDependencies(pluginAppFacing, <String>[
+    addDependencies(pluginAppFacing, <String>[
       'bar_platform_interface',
       'bar_android',
     ]);
-    _addDependencies(pluginImplementation, <String>[
+    addDependencies(pluginImplementation, <String>[
       'bar_platform_interface',
     ]);
 
@@ -160,7 +160,7 @@
     final RepositoryPackage builderPackage =
         createFakePackage('foo_builder', packagesDir);
 
-    _addDevDependenciesSection(builderPackage, <String>[
+    addDevDependenciesSection(builderPackage, <String>[
       'foo',
     ]);
 
@@ -193,8 +193,8 @@
     final RepositoryPackage targetPackage =
         createFakePackage('target', packagesDir);
 
-    _addDependencies(targetPackage, <String>['a', 'c']);
-    _addDevDependenciesSection(targetPackage, <String>['b']);
+    addDependencies(targetPackage, <String>['a', 'c']);
+    addDevDependenciesSection(targetPackage, <String>['b']);
 
     final List<String> output = await runCapturingPrint(runner,
         <String>['make-deps-path-based', '--target-dependencies=c,a,b']);
@@ -233,16 +233,16 @@
     final RepositoryPackage pluginAppFacing =
         createFakePlugin('bar', pluginGroup);
 
-    _addDependencies(simplePackage, <String>[
+    addDependencies(simplePackage, <String>[
       'bar',
       'bar_android',
       'bar_platform_interface',
     ]);
-    _addDependencies(pluginAppFacing, <String>[
+    addDependencies(pluginAppFacing, <String>[
       'bar_platform_interface',
       'bar_android',
     ]);
-    _addDependencies(pluginImplementation, <String>[
+    addDependencies(pluginImplementation, <String>[
       'bar_platform_interface',
     ]);
 
diff --git a/script/tool/test/native_test_command_test.dart b/script/tool/test/native_test_command_test.dart
index d420184..f24d014 100644
--- a/script/tool/test/native_test_command_test.dart
+++ b/script/tool/test/native_test_command_test.dart
@@ -68,7 +68,7 @@
 // TODO(stuartmorgan): Rework these tests to use a mock Xcode instead of
 // doing all the process mocking and validation.
 void main() {
-  const String _kDestination = '--ios-destination';
+  const String kDestination = '--ios-destination';
 
   group('test native_test_command on Posix', () {
     late FileSystem fileSystem;
@@ -95,7 +95,7 @@
 
     // Returns a MockProcess to provide for "xcrun xcodebuild -list" for a
     // project that contains [targets].
-    MockProcess _getMockXcodebuildListProcess(List<String> targets) {
+    MockProcess getMockXcodebuildListProcess(List<String> targets) {
       final Map<String, dynamic> projects = <String, dynamic>{
         'project': <String, dynamic>{
           'targets': targets,
@@ -106,7 +106,7 @@
 
     // Returns the ProcessCall to expect for checking the targets present in
     // the [package]'s [platform]/Runner.xcodeproj.
-    ProcessCall _getTargetCheckCall(Directory package, String platform) {
+    ProcessCall getTargetCheckCall(Directory package, String platform) {
       return ProcessCall(
           'xcrun',
           <String>[
@@ -124,7 +124,7 @@
 
     // Returns the ProcessCall to expect for running the tests in the
     // workspace [platform]/Runner.xcworkspace, with the given extra flags.
-    ProcessCall _getRunTestCall(
+    ProcessCall getRunTestCall(
       Directory package,
       String platform, {
       String? destination,
@@ -150,7 +150,7 @@
 
     // Returns the ProcessCall to expect for build the Linux unit tests for the
     // given plugin.
-    ProcessCall _getLinuxBuildCall(RepositoryPackage plugin) {
+    ProcessCall getLinuxBuildCall(RepositoryPackage plugin) {
       return ProcessCall(
           'cmake',
           <String>[
@@ -212,7 +212,7 @@
       final Directory pluginExampleDirectory = getExampleDir(plugin);
 
       processRunner.mockProcessesForExecutable['xcrun'] = <io.Process>[
-        _getMockXcodebuildListProcess(<String>['RunnerTests', 'RunnerUITests']),
+        getMockXcodebuildListProcess(<String>['RunnerTests', 'RunnerUITests']),
         // Exit code 66 from testing indicates no tests.
         MockProcess(exitCode: 66),
       ];
@@ -229,8 +229,8 @@
       expect(
           processRunner.recordedCalls,
           orderedEquals(<ProcessCall>[
-            _getTargetCheckCall(pluginExampleDirectory, 'macos'),
-            _getRunTestCall(pluginExampleDirectory, 'macos',
+            getTargetCheckCall(pluginExampleDirectory, 'macos'),
+            getRunTestCall(pluginExampleDirectory, 'macos',
                 extraFlags: <String>['-only-testing:RunnerUITests']),
           ]));
     });
@@ -243,7 +243,7 @@
             });
 
         final List<String> output = await runCapturingPrint(runner,
-            <String>['native-test', '--ios', _kDestination, 'foo_destination']);
+            <String>['native-test', '--ios', kDestination, 'foo_destination']);
         expect(
             output,
             containsAllInOrder(<Matcher>[
@@ -260,7 +260,7 @@
             });
 
         final List<String> output = await runCapturingPrint(runner,
-            <String>['native-test', '--ios', _kDestination, 'foo_destination']);
+            <String>['native-test', '--ios', kDestination, 'foo_destination']);
         expect(
             output,
             containsAllInOrder(<Matcher>[
@@ -279,14 +279,14 @@
         final Directory pluginExampleDirectory = getExampleDir(plugin);
 
         processRunner.mockProcessesForExecutable['xcrun'] = <io.Process>[
-          _getMockXcodebuildListProcess(
+          getMockXcodebuildListProcess(
               <String>['RunnerTests', 'RunnerUITests']),
         ];
 
         final List<String> output = await runCapturingPrint(runner, <String>[
           'native-test',
           '--ios',
-          _kDestination,
+          kDestination,
           'foo_destination',
         ]);
 
@@ -300,8 +300,8 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getTargetCheckCall(pluginExampleDirectory, 'ios'),
-              _getRunTestCall(pluginExampleDirectory, 'ios',
+              getTargetCheckCall(pluginExampleDirectory, 'ios'),
+              getRunTestCall(pluginExampleDirectory, 'ios',
                   destination: 'foo_destination'),
             ]));
       });
@@ -316,7 +316,7 @@
 
         processRunner.mockProcessesForExecutable['xcrun'] = <io.Process>[
           MockProcess(stdout: jsonEncode(_kDeviceListMap)), // simctl
-          _getMockXcodebuildListProcess(
+          getMockXcodebuildListProcess(
               <String>['RunnerTests', 'RunnerUITests']),
         ];
 
@@ -336,8 +336,8 @@
                     '--json',
                   ],
                   null),
-              _getTargetCheckCall(pluginExampleDirectory, 'ios'),
-              _getRunTestCall(pluginExampleDirectory, 'ios',
+              getTargetCheckCall(pluginExampleDirectory, 'ios'),
+              getRunTestCall(pluginExampleDirectory, 'ios',
                   destination: 'id=1E76A0FD-38AC-4537-A989-EA639D7D012A'),
             ]));
       });
@@ -386,7 +386,7 @@
         final Directory pluginExampleDirectory = getExampleDir(plugin);
 
         processRunner.mockProcessesForExecutable['xcrun'] = <io.Process>[
-          _getMockXcodebuildListProcess(
+          getMockXcodebuildListProcess(
               <String>['RunnerTests', 'RunnerUITests']),
         ];
 
@@ -403,8 +403,8 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getTargetCheckCall(pluginExampleDirectory, 'macos'),
-              _getRunTestCall(pluginExampleDirectory, 'macos'),
+              getTargetCheckCall(pluginExampleDirectory, 'macos'),
+              getRunTestCall(pluginExampleDirectory, 'macos'),
             ]));
       });
     });
@@ -918,7 +918,7 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getLinuxBuildCall(plugin),
+              getLinuxBuildCall(plugin),
               ProcessCall(testBinary.path, const <String>[], null),
             ]));
       });
@@ -958,7 +958,7 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getLinuxBuildCall(plugin),
+              getLinuxBuildCall(plugin),
               ProcessCall(releaseTestBinary.path, const <String>[], null),
             ]));
       });
@@ -1017,7 +1017,7 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getLinuxBuildCall(plugin),
+              getLinuxBuildCall(plugin),
             ]));
       });
 
@@ -1058,7 +1058,7 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getLinuxBuildCall(plugin),
+              getLinuxBuildCall(plugin),
               ProcessCall(testBinary.path, const <String>[], null),
             ]));
       });
@@ -1102,7 +1102,7 @@
         final Directory pluginExampleDirectory = getExampleDir(plugin);
 
         processRunner.mockProcessesForExecutable['xcrun'] = <io.Process>[
-          _getMockXcodebuildListProcess(
+          getMockXcodebuildListProcess(
               <String>['RunnerTests', 'RunnerUITests']),
         ];
 
@@ -1121,8 +1121,8 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getTargetCheckCall(pluginExampleDirectory, 'macos'),
-              _getRunTestCall(pluginExampleDirectory, 'macos',
+              getTargetCheckCall(pluginExampleDirectory, 'macos'),
+              getRunTestCall(pluginExampleDirectory, 'macos',
                   extraFlags: <String>['-only-testing:RunnerTests']),
             ]));
       });
@@ -1137,7 +1137,7 @@
         final Directory pluginExampleDirectory = getExampleDir(plugin1);
 
         processRunner.mockProcessesForExecutable['xcrun'] = <io.Process>[
-          _getMockXcodebuildListProcess(
+          getMockXcodebuildListProcess(
               <String>['RunnerTests', 'RunnerUITests']),
         ];
 
@@ -1156,8 +1156,8 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getTargetCheckCall(pluginExampleDirectory, 'macos'),
-              _getRunTestCall(pluginExampleDirectory, 'macos',
+              getTargetCheckCall(pluginExampleDirectory, 'macos'),
+              getRunTestCall(pluginExampleDirectory, 'macos',
                   extraFlags: <String>['-only-testing:RunnerUITests']),
             ]));
       });
@@ -1173,7 +1173,7 @@
 
         // Simulate a project with unit tests but no integration tests...
         processRunner.mockProcessesForExecutable['xcrun'] = <io.Process>[
-          _getMockXcodebuildListProcess(<String>['RunnerTests']),
+          getMockXcodebuildListProcess(<String>['RunnerTests']),
         ];
 
         // ... then try to run only integration tests.
@@ -1193,7 +1193,7 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getTargetCheckCall(pluginExampleDirectory, 'macos'),
+              getTargetCheckCall(pluginExampleDirectory, 'macos'),
             ]));
       });
 
@@ -1207,7 +1207,7 @@
         final Directory pluginExampleDirectory = getExampleDir(plugin1);
 
         processRunner.mockProcessesForExecutable['xcrun'] = <io.Process>[
-          _getMockXcodebuildListProcess(<String>['RunnerUITests']),
+          getMockXcodebuildListProcess(<String>['RunnerUITests']),
         ];
 
         Error? commandError;
@@ -1232,7 +1232,7 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getTargetCheckCall(pluginExampleDirectory, 'macos'),
+              getTargetCheckCall(pluginExampleDirectory, 'macos'),
             ]));
       });
 
@@ -1269,7 +1269,7 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getTargetCheckCall(pluginExampleDirectory, 'macos'),
+              getTargetCheckCall(pluginExampleDirectory, 'macos'),
             ]));
       });
     });
@@ -1295,10 +1295,10 @@
             pluginExampleDirectory.childDirectory('android');
 
         processRunner.mockProcessesForExecutable['xcrun'] = <io.Process>[
-          _getMockXcodebuildListProcess(
+          getMockXcodebuildListProcess(
               <String>['RunnerTests', 'RunnerUITests']), // iOS list
           MockProcess(), // iOS run
-          _getMockXcodebuildListProcess(
+          getMockXcodebuildListProcess(
               <String>['RunnerTests', 'RunnerUITests']), // macOS list
           MockProcess(), // macOS run
         ];
@@ -1308,7 +1308,7 @@
           '--android',
           '--ios',
           '--macos',
-          _kDestination,
+          kDestination,
           'foo_destination',
         ]);
 
@@ -1325,11 +1325,11 @@
             orderedEquals(<ProcessCall>[
               ProcessCall(androidFolder.childFile('gradlew').path,
                   const <String>['testDebugUnitTest'], androidFolder.path),
-              _getTargetCheckCall(pluginExampleDirectory, 'ios'),
-              _getRunTestCall(pluginExampleDirectory, 'ios',
+              getTargetCheckCall(pluginExampleDirectory, 'ios'),
+              getRunTestCall(pluginExampleDirectory, 'ios',
                   destination: 'foo_destination'),
-              _getTargetCheckCall(pluginExampleDirectory, 'macos'),
-              _getRunTestCall(pluginExampleDirectory, 'macos'),
+              getTargetCheckCall(pluginExampleDirectory, 'macos'),
+              getRunTestCall(pluginExampleDirectory, 'macos'),
             ]));
       });
 
@@ -1342,7 +1342,7 @@
         final Directory pluginExampleDirectory = getExampleDir(plugin);
 
         processRunner.mockProcessesForExecutable['xcrun'] = <io.Process>[
-          _getMockXcodebuildListProcess(
+          getMockXcodebuildListProcess(
               <String>['RunnerTests', 'RunnerUITests']),
         ];
 
@@ -1350,7 +1350,7 @@
           'native-test',
           '--ios',
           '--macos',
-          _kDestination,
+          kDestination,
           'foo_destination',
         ]);
 
@@ -1364,8 +1364,8 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getTargetCheckCall(pluginExampleDirectory, 'macos'),
-              _getRunTestCall(pluginExampleDirectory, 'macos'),
+              getTargetCheckCall(pluginExampleDirectory, 'macos'),
+              getRunTestCall(pluginExampleDirectory, 'macos'),
             ]));
       });
 
@@ -1378,7 +1378,7 @@
         final Directory pluginExampleDirectory = getExampleDir(plugin);
 
         processRunner.mockProcessesForExecutable['xcrun'] = <io.Process>[
-          _getMockXcodebuildListProcess(
+          getMockXcodebuildListProcess(
               <String>['RunnerTests', 'RunnerUITests']),
         ];
 
@@ -1386,7 +1386,7 @@
           'native-test',
           '--ios',
           '--macos',
-          _kDestination,
+          kDestination,
           'foo_destination',
         ]);
 
@@ -1400,8 +1400,8 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getTargetCheckCall(pluginExampleDirectory, 'ios'),
-              _getRunTestCall(pluginExampleDirectory, 'ios',
+              getTargetCheckCall(pluginExampleDirectory, 'ios'),
+              getRunTestCall(pluginExampleDirectory, 'ios',
                   destination: 'foo_destination'),
             ]));
       });
@@ -1415,7 +1415,7 @@
           '--ios',
           '--macos',
           '--windows',
-          _kDestination,
+          kDestination,
           'foo_destination',
         ]);
 
@@ -1447,7 +1447,7 @@
           'native-test',
           '--macos',
           '--windows',
-          _kDestination,
+          kDestination,
           'foo_destination',
         ]);
 
@@ -1477,7 +1477,7 @@
         );
 
         processRunner.mockProcessesForExecutable['xcrun'] = <io.Process>[
-          _getMockXcodebuildListProcess(
+          getMockXcodebuildListProcess(
               <String>['RunnerTests', 'RunnerUITests']),
         ];
 
@@ -1598,7 +1598,7 @@
 
     // Returns the ProcessCall to expect for build the Windows unit tests for
     // the given plugin.
-    ProcessCall _getWindowsBuildCall(RepositoryPackage plugin) {
+    ProcessCall getWindowsBuildCall(RepositoryPackage plugin) {
       return ProcessCall(
           _fakeCmakeCommand,
           <String>[
@@ -1647,7 +1647,7 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getWindowsBuildCall(plugin),
+              getWindowsBuildCall(plugin),
               ProcessCall(testBinary.path, const <String>[], null),
             ]));
       });
@@ -1687,7 +1687,7 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getWindowsBuildCall(plugin),
+              getWindowsBuildCall(plugin),
               ProcessCall(debugTestBinary.path, const <String>[], null),
             ]));
       });
@@ -1746,7 +1746,7 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getWindowsBuildCall(plugin),
+              getWindowsBuildCall(plugin),
             ]));
       });
 
@@ -1787,7 +1787,7 @@
         expect(
             processRunner.recordedCalls,
             orderedEquals(<ProcessCall>[
-              _getWindowsBuildCall(plugin),
+              getWindowsBuildCall(plugin),
               ProcessCall(testBinary.path, const <String>[], null),
             ]));
       });
diff --git a/script/tool/test/publish_command_test.dart b/script/tool/test/publish_command_test.dart
index 19e8bdd..da5f9c8 100644
--- a/script/tool/test/publish_command_test.dart
+++ b/script/tool/test/publish_command_test.dart
@@ -33,7 +33,7 @@
   // Map of package name to mock response.
   late Map<String, Map<String, dynamic>> mockHttpResponses;
 
-  void _createMockCredentialFile() {
+  void createMockCredentialFile() {
     final String credentialPath = PublishCommand.getCredentialPath();
     fileSystem.file(credentialPath)
       ..createSync(recursive: true)
@@ -204,7 +204,7 @@
     test(
         '--skip-confirmation flag automatically adds --force to --pub-publish-flags',
         () async {
-      _createMockCredentialFile();
+      createMockCredentialFile();
       final RepositoryPackage plugin =
           createFakePlugin('foo', packagesDir, examples: <String>[]);
 
@@ -225,7 +225,7 @@
     });
 
     test('--force is only added once, regardless of plugin count', () async {
-      _createMockCredentialFile();
+      createMockCredentialFile();
       final RepositoryPackage plugin1 =
           createFakePlugin('plugin_a', packagesDir, examples: <String>[]);
       final RepositoryPackage plugin2 =
@@ -393,7 +393,7 @@
 
     test('does not ask for user input if the --skip-confirmation flag is on',
         () async {
-      _createMockCredentialFile();
+      createMockCredentialFile();
       createFakePlugin('foo', packagesDir, examples: <String>[]);
 
       final List<String> output =
diff --git a/script/tool/test/remove_dev_dependencies_test.dart b/script/tool/test/remove_dev_dependencies_test.dart
index 6b21287..776cbf1 100644
--- a/script/tool/test/remove_dev_dependencies_test.dart
+++ b/script/tool/test/remove_dev_dependencies_test.dart
@@ -27,7 +27,7 @@
     runner.addCommand(command);
   });
 
-  void _addToPubspec(RepositoryPackage package, String addition) {
+  void addToPubspec(RepositoryPackage package, String addition) {
     final String originalContent = package.pubspecFile.readAsStringSync();
     package.pubspecFile.writeAsStringSync('''
 $originalContent
@@ -53,7 +53,7 @@
     final RepositoryPackage package =
         createFakePackage('a_package', packagesDir, version: '1.0.0');
 
-    _addToPubspec(package, '''
+    addToPubspec(package, '''
 dev_dependencies:
   some_dependency: ^2.1.8
   another_dependency: ^1.0.0
@@ -79,7 +79,7 @@
         createFakePackage('a_package', packagesDir, version: '1.0.0');
 
     final RepositoryPackage example = package.getExamples().first;
-    _addToPubspec(example, '''
+    addToPubspec(example, '''
 dev_dependencies:
   some_dependency: ^2.1.8
   another_dependency: ^1.0.0
diff --git a/script/tool/test/version_check_command_test.dart b/script/tool/test/version_check_command_test.dart
index 598176b..d485d81 100644
--- a/script/tool/test/version_check_command_test.dart
+++ b/script/tool/test/version_check_command_test.dart
@@ -681,8 +681,7 @@
     });
 
     group('missing change detection', () {
-      Future<List<String>> _runWithMissingChangeDetection(
-          List<String> extraArgs,
+      Future<List<String>> runWithMissingChangeDetection(List<String> extraArgs,
           {void Function(Error error)? errorHandler}) async {
         return runCapturingPrint(
             runner,
@@ -712,7 +711,7 @@
         ];
 
         final List<String> output =
-            await _runWithMissingChangeDetection(<String>[]);
+            await runWithMissingChangeDetection(<String>[]);
 
         expect(
           output,
@@ -743,7 +742,7 @@
         ];
 
         Error? commandError;
-        final List<String> output = await _runWithMissingChangeDetection(
+        final List<String> output = await runWithMissingChangeDetection(
             <String>[], errorHandler: (Error e) {
           commandError = e;
         });
@@ -780,7 +779,7 @@
         ];
 
         final List<String> output =
-            await _runWithMissingChangeDetection(<String>[]);
+            await runWithMissingChangeDetection(<String>[]);
 
         expect(
           output,
@@ -810,7 +809,7 @@
         ];
 
         final List<String> output =
-            await _runWithMissingChangeDetection(<String>[]);
+            await runWithMissingChangeDetection(<String>[]);
 
         expect(
           output,
@@ -843,7 +842,7 @@
         ];
 
         final List<String> output =
-            await _runWithMissingChangeDetection(<String>[]);
+            await runWithMissingChangeDetection(<String>[]);
 
         expect(
           output,
@@ -874,7 +873,7 @@
         ];
 
         final List<String> output =
-            await _runWithMissingChangeDetection(<String>[
+            await runWithMissingChangeDetection(<String>[
           '--pr-labels=some label,override: no versioning needed,another-label'
         ]);
 
@@ -906,7 +905,7 @@
         ];
 
         Error? commandError;
-        final List<String> output = await _runWithMissingChangeDetection(
+        final List<String> output = await runWithMissingChangeDetection(
             <String>[], errorHandler: (Error e) {
           commandError = e;
         });
@@ -942,7 +941,7 @@
         ];
 
         final List<String> output =
-            await _runWithMissingChangeDetection(<String>[]);
+            await runWithMissingChangeDetection(<String>[]);
 
         expect(
           output,
@@ -973,7 +972,7 @@
         ];
 
         Error? commandError;
-        final List<String> output = await _runWithMissingChangeDetection(
+        final List<String> output = await runWithMissingChangeDetection(
             <String>[], errorHandler: (Error e) {
           commandError = e;
         });
@@ -1006,7 +1005,7 @@
         ];
 
         final List<String> output =
-            await _runWithMissingChangeDetection(<String>[
+            await runWithMissingChangeDetection(<String>[
           '--pr-labels=some label,override: no changelog needed,another-label'
         ]);
 
@@ -1050,7 +1049,7 @@
         ];
 
         final List<String> output =
-            await _runWithMissingChangeDetection(<String>[]);
+            await runWithMissingChangeDetection(<String>[]);
 
         expect(
           output,
@@ -1082,7 +1081,7 @@
         ];
 
         final List<String> output =
-            await _runWithMissingChangeDetection(<String>[]);
+            await runWithMissingChangeDetection(<String>[]);
 
         expect(
           output,