diff --git a/analysis_options.yaml b/analysis_options.yaml
index 87515a4..224ac68 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -83,7 +83,7 @@
     # - avoid_positional_boolean_parameters # would have been nice to enable this but by now there's too many places that break it
     # - avoid_print # LOCAL CHANGE - Needs to be enabled and violations fixed.
     # - avoid_private_typedef_functions # we prefer having typedef (discussion in https://github.com/flutter/flutter/pull/16356)
-    # - avoid_redundant_argument_values # LOCAL CHANGE - Needs to be enabled and violations fixed.
+    - avoid_redundant_argument_values
     - avoid_relative_lib_imports
     - avoid_renaming_method_parameters
     - avoid_return_types_on_setters
diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md
index 1dc9270..d112a43 100644
--- a/packages/camera/camera/CHANGELOG.md
+++ b/packages/camera/camera/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.10.0+1
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 0.10.0
 
 * **Breaking Change** Bumps default camera_web package version, which updates permission exception code from `cameraPermission` to `CameraAccessDenied`.
diff --git a/packages/camera/camera/example/lib/main.dart b/packages/camera/camera/example/lib/main.dart
index b90b003..c5804e7 100644
--- a/packages/camera/camera/example/lib/main.dart
+++ b/packages/camera/camera/example/lib/main.dart
@@ -159,7 +159,6 @@
           Padding(
             padding: const EdgeInsets.all(5.0),
             child: Row(
-              mainAxisAlignment: MainAxisAlignment.start,
               children: <Widget>[
                 _cameraTogglesRowWidget(),
                 _thumbnailWidget(),
@@ -271,7 +270,6 @@
       children: <Widget>[
         Row(
           mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-          mainAxisSize: MainAxisSize.max,
           children: <Widget>[
             IconButton(
               icon: const Icon(Icons.flash_on),
@@ -325,7 +323,6 @@
       child: ClipRect(
         child: Row(
           mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-          mainAxisSize: MainAxisSize.max,
           children: <Widget>[
             IconButton(
               icon: const Icon(Icons.flash_off),
@@ -397,7 +394,6 @@
               ),
               Row(
                 mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-                mainAxisSize: MainAxisSize.max,
                 children: <Widget>[
                   TextButton(
                     style: styleAuto,
@@ -435,7 +431,6 @@
               ),
               Row(
                 mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-                mainAxisSize: MainAxisSize.max,
                 children: <Widget>[
                   Text(_minAvailableExposureOffset.toString()),
                   Slider(
@@ -486,7 +481,6 @@
               ),
               Row(
                 mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-                mainAxisSize: MainAxisSize.max,
                 children: <Widget>[
                   TextButton(
                     style: styleAuto,
@@ -523,7 +517,6 @@
 
     return Row(
       mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-      mainAxisSize: MainAxisSize.max,
       children: <Widget>[
         IconButton(
           icon: const Icon(Icons.camera_alt),
diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml
index e9a07e6..5af8640 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
+version: 0.10.0+1
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/camera/camera/test/camera_preview_test.dart b/packages/camera/camera/test/camera_preview_test.dart
index fe2f4f4..bedb0ea 100644
--- a/packages/camera/camera/test/camera_preview_test.dart
+++ b/packages/camera/camera/test/camera_preview_test.dart
@@ -201,7 +201,6 @@
       controller.value = controller.value.copyWith(
         isInitialized: true,
         deviceOrientation: DeviceOrientation.portraitUp,
-        lockedCaptureOrientation: null,
         recordingOrientation: const Optional<DeviceOrientation>.fromNullable(
             DeviceOrientation.landscapeLeft),
         previewSize: const Size(480, 640),
diff --git a/packages/camera/camera/test/camera_test.dart b/packages/camera/camera/test/camera_test.dart
index 0d3195b..3c12648 100644
--- a/packages/camera/camera/test/camera_test.dart
+++ b/packages/camera/camera/test/camera_test.dart
@@ -697,7 +697,6 @@
         PlatformException(
           code: 'TEST_ERROR',
           message: 'This is a test error message',
-          details: null,
         ),
       );
 
@@ -742,7 +741,6 @@
         PlatformException(
           code: 'TEST_ERROR',
           message: 'This is a test error message',
-          details: null,
         ),
       );
 
@@ -787,7 +785,6 @@
         PlatformException(
           code: 'TEST_ERROR',
           message: 'This is a test error message',
-          details: null,
         ),
       );
 
@@ -1219,7 +1216,6 @@
         PlatformException(
           code: 'TEST_ERROR',
           message: 'This is a test error message',
-          details: null,
         ),
       );
 
@@ -1285,7 +1281,6 @@
         PlatformException(
           code: 'TEST_ERROR',
           message: 'This is a test error message',
-          details: null,
         ),
       );
 
@@ -1339,7 +1334,6 @@
         PlatformException(
           code: 'TEST_ERROR',
           message: 'This is a test error message',
-          details: null,
         ),
       );
 
@@ -1385,7 +1379,6 @@
         PlatformException(
           code: 'TEST_ERROR',
           message: 'This is a test error message',
-          details: null,
         ),
       );
 
diff --git a/packages/camera/camera/test/camera_value_test.dart b/packages/camera/camera/test/camera_value_test.dart
index e70f2ce..37168db 100644
--- a/packages/camera/camera/test/camera_value_test.dart
+++ b/packages/camera/camera/test/camera_value_test.dart
@@ -18,7 +18,6 @@
     test('Can be created', () {
       const CameraValue cameraValue = CameraValue(
         isInitialized: false,
-        errorDescription: null,
         previewSize: Size(10, 10),
         isRecordingPaused: false,
         isRecordingVideo: false,
@@ -32,7 +31,6 @@
         lockedCaptureOrientation: DeviceOrientation.portraitUp,
         recordingOrientation: DeviceOrientation.portraitUp,
         focusPointSupported: true,
-        isPreviewPaused: false,
         previewPauseOrientation: DeviceOrientation.portraitUp,
       );
 
@@ -129,7 +127,6 @@
     test('toString() works as expected', () {
       const CameraValue cameraValue = CameraValue(
           isInitialized: false,
-          errorDescription: null,
           previewSize: Size(10, 10),
           isRecordingPaused: false,
           isRecordingVideo: false,
diff --git a/packages/camera/camera_android/CHANGELOG.md b/packages/camera/camera_android/CHANGELOG.md
index 3a74334..2ae809f 100644
--- a/packages/camera/camera_android/CHANGELOG.md
+++ b/packages/camera/camera_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.10.0+1
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 0.10.0
 
 * **Breaking Change** Updates Android camera access permission error codes to be consistent with other platforms. If your app still handles the legacy `cameraPermission` exception, please update it to handle the new permission exception codes that are noted in the README.
diff --git a/packages/camera/camera_android/example/lib/main.dart b/packages/camera/camera_android/example/lib/main.dart
index 1dbdabb..9ebc27e 100644
--- a/packages/camera/camera_android/example/lib/main.dart
+++ b/packages/camera/camera_android/example/lib/main.dart
@@ -161,7 +161,6 @@
           Padding(
             padding: const EdgeInsets.all(5.0),
             child: Row(
-              mainAxisAlignment: MainAxisAlignment.start,
               children: <Widget>[
                 _cameraTogglesRowWidget(),
                 _thumbnailWidget(),
@@ -274,7 +273,6 @@
       children: <Widget>[
         Row(
           mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-          mainAxisSize: MainAxisSize.max,
           children: <Widget>[
             IconButton(
               icon: const Icon(Icons.flash_on),
@@ -328,7 +326,6 @@
       child: ClipRect(
         child: Row(
           mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-          mainAxisSize: MainAxisSize.max,
           children: <Widget>[
             IconButton(
               icon: const Icon(Icons.flash_off),
@@ -400,7 +397,6 @@
               ),
               Row(
                 mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-                mainAxisSize: MainAxisSize.max,
                 children: <Widget>[
                   TextButton(
                     style: styleAuto,
@@ -439,7 +435,6 @@
               ),
               Row(
                 mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-                mainAxisSize: MainAxisSize.max,
                 children: <Widget>[
                   Text(_minAvailableExposureOffset.toString()),
                   Slider(
@@ -490,7 +485,6 @@
               ),
               Row(
                 mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-                mainAxisSize: MainAxisSize.max,
                 children: <Widget>[
                   TextButton(
                     style: styleAuto,
@@ -528,7 +522,6 @@
 
     return Row(
       mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-      mainAxisSize: MainAxisSize.max,
       children: <Widget>[
         IconButton(
           icon: const Icon(Icons.camera_alt),
diff --git a/packages/camera/camera_android/pubspec.yaml b/packages/camera/camera_android/pubspec.yaml
index 581780f..e7d6aeb 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
+version: 0.10.0+1
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/camera/camera_android/test/android_camera_test.dart b/packages/camera/camera_android/test/android_camera_test.dart
index ca1f245..3e50e69 100644
--- a/packages/camera/camera_android/test/android_camera_test.dart
+++ b/packages/camera/camera_android/test/android_camera_test.dart
@@ -961,7 +961,6 @@
           'setZoomLevel': PlatformException(
             code: 'ZOOM_ERROR',
             message: 'Illegal zoom error',
-            details: null,
           )
         },
       );
diff --git a/packages/camera/camera_avfoundation/CHANGELOG.md b/packages/camera/camera_avfoundation/CHANGELOG.md
index 9bab2ec..2726309 100644
--- a/packages/camera/camera_avfoundation/CHANGELOG.md
+++ b/packages/camera/camera_avfoundation/CHANGELOG.md
@@ -1,5 +1,6 @@
-## NEXT
+## 0.9.8+3
 
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
 * Ignores missing return warnings in preparation for [upcoming analysis changes](https://github.com/flutter/flutter/issues/105750).
 
 ## 0.9.8+2
diff --git a/packages/camera/camera_avfoundation/example/lib/main.dart b/packages/camera/camera_avfoundation/example/lib/main.dart
index 1dbdabb..9ebc27e 100644
--- a/packages/camera/camera_avfoundation/example/lib/main.dart
+++ b/packages/camera/camera_avfoundation/example/lib/main.dart
@@ -161,7 +161,6 @@
           Padding(
             padding: const EdgeInsets.all(5.0),
             child: Row(
-              mainAxisAlignment: MainAxisAlignment.start,
               children: <Widget>[
                 _cameraTogglesRowWidget(),
                 _thumbnailWidget(),
@@ -274,7 +273,6 @@
       children: <Widget>[
         Row(
           mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-          mainAxisSize: MainAxisSize.max,
           children: <Widget>[
             IconButton(
               icon: const Icon(Icons.flash_on),
@@ -328,7 +326,6 @@
       child: ClipRect(
         child: Row(
           mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-          mainAxisSize: MainAxisSize.max,
           children: <Widget>[
             IconButton(
               icon: const Icon(Icons.flash_off),
@@ -400,7 +397,6 @@
               ),
               Row(
                 mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-                mainAxisSize: MainAxisSize.max,
                 children: <Widget>[
                   TextButton(
                     style: styleAuto,
@@ -439,7 +435,6 @@
               ),
               Row(
                 mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-                mainAxisSize: MainAxisSize.max,
                 children: <Widget>[
                   Text(_minAvailableExposureOffset.toString()),
                   Slider(
@@ -490,7 +485,6 @@
               ),
               Row(
                 mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-                mainAxisSize: MainAxisSize.max,
                 children: <Widget>[
                   TextButton(
                     style: styleAuto,
@@ -528,7 +522,6 @@
 
     return Row(
       mainAxisAlignment: MainAxisAlignment.spaceEvenly,
-      mainAxisSize: MainAxisSize.max,
       children: <Widget>[
         IconButton(
           icon: const Icon(Icons.camera_alt),
diff --git a/packages/camera/camera_avfoundation/pubspec.yaml b/packages/camera/camera_avfoundation/pubspec.yaml
index adb0bf8..c2b9dcb 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+2
+version: 0.9.8+3
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/camera/camera_avfoundation/test/avfoundation_camera_test.dart b/packages/camera/camera_avfoundation/test/avfoundation_camera_test.dart
index 67adcfa..60109a4 100644
--- a/packages/camera/camera_avfoundation/test/avfoundation_camera_test.dart
+++ b/packages/camera/camera_avfoundation/test/avfoundation_camera_test.dart
@@ -961,7 +961,6 @@
           'setZoomLevel': PlatformException(
             code: 'ZOOM_ERROR',
             message: 'Illegal zoom error',
-            details: null,
           )
         },
       );
diff --git a/packages/camera/camera_platform_interface/CHANGELOG.md b/packages/camera/camera_platform_interface/CHANGELOG.md
index 9cc0b14..383fc73 100644
--- a/packages/camera/camera_platform_interface/CHANGELOG.md
+++ b/packages/camera/camera_platform_interface/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* 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).
 * Ignores missing return warnings in preparation for [upcoming analysis changes](https://github.com/flutter/flutter/issues/105750).
 
diff --git a/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart b/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart
index d096f00..60f42fd 100644
--- a/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart
+++ b/packages/camera/camera_platform_interface/test/method_channel/method_channel_camera_test.dart
@@ -954,7 +954,6 @@
             'setZoomLevel': PlatformException(
               code: 'ZOOM_ERROR',
               message: 'Illegal zoom error',
-              details: null,
             )
           },
         );
diff --git a/packages/camera/camera_web/CHANGELOG.md b/packages/camera/camera_web/CHANGELOG.md
index a3522cf..f867ae6 100644
--- a/packages/camera/camera_web/CHANGELOG.md
+++ b/packages/camera/camera_web/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* 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/106316).
 
 ## 0.3.0
diff --git a/packages/camera/camera_web/example/integration_test/camera_options_test.dart b/packages/camera/camera_web/example/integration_test/camera_options_test.dart
index ee63d87..6619ff4 100644
--- a/packages/camera/camera_web/example/integration_test/camera_options_test.dart
+++ b/packages/camera/camera_web/example/integration_test/camera_options_test.dart
@@ -30,7 +30,7 @@
     testWidgets('supports value equality', (WidgetTester tester) async {
       expect(
         CameraOptions(
-          audio: const AudioConstraints(enabled: false),
+          audio: const AudioConstraints(),
           video: VideoConstraints(
             facingMode: FacingModeConstraint(CameraType.environment),
             width:
@@ -42,7 +42,7 @@
         ),
         equals(
           CameraOptions(
-            audio: const AudioConstraints(enabled: false),
+            audio: const AudioConstraints(),
             video: VideoConstraints(
               facingMode: FacingModeConstraint(CameraType.environment),
               width: const VideoSizeConstraint(
diff --git a/packages/camera/camera_web/example/integration_test/camera_service_test.dart b/packages/camera/camera_web/example/integration_test/camera_service_test.dart
index 96debbf..2719932 100644
--- a/packages/camera/camera_web/example/integration_test/camera_service_test.dart
+++ b/packages/camera/camera_web/example/integration_test/camera_service_test.dart
@@ -24,7 +24,7 @@
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
 
   group('CameraService', () {
-    const int cameraId = 0;
+    const int cameraId = 1;
 
     late Window window;
     late Navigator navigator;
diff --git a/packages/camera/camera_web/example/integration_test/camera_web_test.dart b/packages/camera/camera_web/example/integration_test/camera_web_test.dart
index 7fe6266..e3f1138 100644
--- a/packages/camera/camera_web/example/integration_test/camera_web_test.dart
+++ b/packages/camera/camera_web/example/integration_test/camera_web_test.dart
@@ -26,7 +26,7 @@
   IntegrationTestWidgetsFlutterBinding.ensureInitialized();
 
   group('CameraPlugin', () {
-    const int cameraId = 0;
+    const int cameraId = 1;
 
     late Window window;
     late Navigator navigator;
@@ -593,7 +593,7 @@
               (Camera camera) => camera.options,
               'options',
               CameraOptions(
-                audio: const AudioConstraints(enabled: false),
+                audio: const AudioConstraints(),
                 video: VideoConstraints(
                   facingMode: FacingModeConstraint(CameraType.user),
                   width: VideoSizeConstraint(
diff --git a/packages/camera/camera_windows/CHANGELOG.md b/packages/camera/camera_windows/CHANGELOG.md
index 16ce26a..2b27fb4 100644
--- a/packages/camera/camera_windows/CHANGELOG.md
+++ b/packages/camera/camera_windows/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.2.1+1
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 0.2.1
 
 * Adds a check for string size before Win32 MultiByte <-> WideChar conversions
diff --git a/packages/camera/camera_windows/example/lib/main.dart b/packages/camera/camera_windows/example/lib/main.dart
index 5758b0f..3106304 100644
--- a/packages/camera/camera_windows/example/lib/main.dart
+++ b/packages/camera/camera_windows/example/lib/main.dart
@@ -114,7 +114,6 @@
 
       await CameraPlatform.instance.initializeCamera(
         cameraId,
-        imageFormatGroup: ImageFormatGroup.unknown,
       );
 
       final CameraInitializedEvent event = await initialized;
@@ -429,7 +428,6 @@
                   vertical: 10,
                 ),
                 child: Align(
-                  alignment: Alignment.center,
                   child: Container(
                     constraints: const BoxConstraints(
                       maxHeight: 500,
diff --git a/packages/camera/camera_windows/pubspec.yaml b/packages/camera/camera_windows/pubspec.yaml
index 540a445..513ca2d 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
+version: 0.2.1+1
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/file_selector/file_selector_web/CHANGELOG.md b/packages/file_selector/file_selector_web/CHANGELOG.md
index 8a8a53a..c4a6ca2 100644
--- a/packages/file_selector/file_selector_web/CHANGELOG.md
+++ b/packages/file_selector/file_selector_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 0.9.0
 
 * **BREAKING CHANGE**: Methods that take `XTypeGroup`s now throw an
diff --git a/packages/file_selector/file_selector_web/example/integration_test/file_selector_web_test.dart b/packages/file_selector/file_selector_web/example/integration_test/file_selector_web_test.dart
index 43c88a2..d3d0581 100644
--- a/packages/file_selector/file_selector_web/example/integration_test/file_selector_web_test.dart
+++ b/packages/file_selector/file_selector_web/example/integration_test/file_selector_web_test.dart
@@ -21,8 +21,7 @@
 
         final MockDomHelper mockDomHelper = MockDomHelper(
             files: <XFile>[mockFile],
-            expectAccept: '.jpg,.jpeg,image/png,image/*',
-            expectMultiple: false);
+            expectAccept: '.jpg,.jpeg,image/png,image/*');
 
         final FileSelectorWeb plugin =
             FileSelectorWeb(domHelper: mockDomHelper);
diff --git a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md
index 86cefdd..91eb91b 100644
--- a/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md
+++ b/packages/google_maps_flutter/google_maps_flutter/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
 * Moves Android and iOS implementations to federated packages.
 
 ## 2.1.10
diff --git a/packages/google_maps_flutter/google_maps_flutter/example/integration_test/google_maps_test.dart b/packages/google_maps_flutter/google_maps_flutter/example/integration_test/google_maps_test.dart
index 1d7494c..7db14fc 100644
--- a/packages/google_maps_flutter/google_maps_flutter/example/integration_test/google_maps_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/example/integration_test/google_maps_test.dart
@@ -48,7 +48,6 @@
       child: GoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        compassEnabled: true,
         onMapCreated: (GoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -86,7 +85,6 @@
       child: GoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        mapToolbarEnabled: true,
         onMapCreated: (GoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -204,7 +202,6 @@
       child: GoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        zoomGesturesEnabled: true,
         onMapCreated: (GoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -266,7 +263,6 @@
       child: GoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        liteModeEnabled: false,
         onMapCreated: (GoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -323,7 +319,6 @@
       child: GoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        rotateGesturesEnabled: true,
         onMapCreated: (GoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -363,7 +358,6 @@
       child: GoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        tiltGesturesEnabled: true,
         onMapCreated: (GoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -402,7 +396,6 @@
       child: GoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        scrollGesturesEnabled: true,
         onMapCreated: (GoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -560,7 +553,6 @@
       child: GoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        trafficEnabled: false,
         onMapCreated: (GoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -580,7 +572,6 @@
       child: GoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        buildingsEnabled: true,
         onMapCreated: (GoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -605,8 +596,6 @@
       child: GoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        myLocationButtonEnabled: true,
-        myLocationEnabled: false,
         onMapCreated: (GoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -626,7 +615,6 @@
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
         myLocationButtonEnabled: false,
-        myLocationEnabled: false,
         onMapCreated: (GoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -649,7 +637,6 @@
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
         myLocationButtonEnabled: false,
-        myLocationEnabled: false,
         onMapCreated: (GoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -674,8 +661,6 @@
       child: GoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        myLocationButtonEnabled: true,
-        myLocationEnabled: false,
         onMapCreated: (GoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -976,9 +961,7 @@
         tileOverlayId: const TileOverlayId('tile_overlay_1'),
         tileProvider: _DebugTileProvider(),
         zIndex: 2,
-        visible: true,
         transparency: 0.2,
-        fadeIn: true,
       );
 
       final TileOverlay tileOverlay2 = TileOverlay(
@@ -1035,18 +1018,14 @@
         tileOverlayId: const TileOverlayId('tile_overlay_1'),
         tileProvider: _DebugTileProvider(),
         zIndex: 2,
-        visible: true,
         transparency: 0.2,
-        fadeIn: true,
       );
 
       final TileOverlay tileOverlay2 = TileOverlay(
         tileOverlayId: const TileOverlayId('tile_overlay_2'),
         tileProvider: _DebugTileProvider(),
         zIndex: 3,
-        visible: true,
         transparency: 0.5,
-        fadeIn: true,
       );
       await tester.pumpWidget(
         Directionality(
@@ -1115,9 +1094,7 @@
         tileOverlayId: const TileOverlayId('tile_overlay_1'),
         tileProvider: _DebugTileProvider(),
         zIndex: 2,
-        visible: true,
         transparency: 0.2,
-        fadeIn: true,
       );
 
       await tester.pumpWidget(
@@ -1189,7 +1166,6 @@
       textDirection: TextDirection.ltr,
     );
     textPainter.layout(
-      minWidth: 0.0,
       maxWidth: width.toDouble(),
     );
     const Offset offset = Offset(0, 0);
diff --git a/packages/google_maps_flutter/google_maps_flutter/example/lib/map_click.dart b/packages/google_maps_flutter/google_maps_flutter/example/lib/map_click.dart
index 9c96f25..ed25d47 100644
--- a/packages/google_maps_flutter/google_maps_flutter/example/lib/map_click.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/example/lib/map_click.dart
@@ -90,7 +90,6 @@
       )));
     }
     return Column(
-      mainAxisAlignment: MainAxisAlignment.start,
       crossAxisAlignment: CrossAxisAlignment.stretch,
       children: columnChildren,
     );
diff --git a/packages/google_maps_flutter/google_maps_flutter/example/lib/map_ui.dart b/packages/google_maps_flutter/google_maps_flutter/example/lib/map_ui.dart
index fbfeda5..3f56f40 100644
--- a/packages/google_maps_flutter/google_maps_flutter/example/lib/map_ui.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/example/lib/map_ui.dart
@@ -336,7 +336,6 @@
       );
     }
     return Column(
-      mainAxisAlignment: MainAxisAlignment.start,
       crossAxisAlignment: CrossAxisAlignment.stretch,
       children: columnChildren,
     );
diff --git a/packages/google_maps_flutter/google_maps_flutter/example/lib/padding.dart b/packages/google_maps_flutter/google_maps_flutter/example/lib/padding.dart
index a4bfa88..07359e9 100644
--- a/packages/google_maps_flutter/google_maps_flutter/example/lib/padding.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/example/lib/padding.dart
@@ -68,7 +68,6 @@
     columnChildren.addAll(<Widget>[_paddingInput(), _buttons()]);
 
     return Column(
-      mainAxisAlignment: MainAxisAlignment.start,
       crossAxisAlignment: CrossAxisAlignment.stretch,
       children: columnChildren,
     );
diff --git a/packages/google_maps_flutter/google_maps_flutter/example/lib/place_marker.dart b/packages/google_maps_flutter/google_maps_flutter/example/lib/place_marker.dart
index b8efc4e..fa49917 100644
--- a/packages/google_maps_flutter/google_maps_flutter/example/lib/place_marker.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/example/lib/place_marker.dart
@@ -402,7 +402,6 @@
           padding: const EdgeInsets.only(left: 12, right: 12),
           child: Row(
             mainAxisAlignment: MainAxisAlignment.spaceAround,
-            mainAxisSize: MainAxisSize.max,
             children: <Widget>[
               if (markerPosition == null)
                 Container()
diff --git a/packages/google_maps_flutter/google_maps_flutter/example/lib/tile_overlay.dart b/packages/google_maps_flutter/google_maps_flutter/example/lib/tile_overlay.dart
index d88e099..e73ca25 100644
--- a/packages/google_maps_flutter/google_maps_flutter/example/lib/tile_overlay.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/example/lib/tile_overlay.dart
@@ -137,7 +137,6 @@
       textDirection: TextDirection.ltr,
     );
     textPainter.layout(
-      minWidth: 0.0,
       maxWidth: width.toDouble(),
     );
     const Offset offset = Offset(0, 0);
diff --git a/packages/google_maps_flutter/google_maps_flutter/test/fake_maps_controllers.dart b/packages/google_maps_flutter/google_maps_flutter/test/fake_maps_controllers.dart
index bac3cea..9fe6923 100644
--- a/packages/google_maps_flutter/google_maps_flutter/test/fake_maps_controllers.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/test/fake_maps_controllers.dart
@@ -12,8 +12,7 @@
   FakePlatformGoogleMap(int id, Map<dynamic, dynamic> params)
       : cameraPosition =
             CameraPosition.fromMap(params['initialCameraPosition']),
-        channel = MethodChannel(
-            'plugins.flutter.io/google_maps_$id', const StandardMethodCodec()) {
+        channel = MethodChannel('plugins.flutter.io/google_maps_$id') {
     channel.setMockMethodCallHandler(onMethodCall);
     updateOptions(params['options'] as Map<dynamic, dynamic>);
     updateMarkers(params);
diff --git a/packages/google_maps_flutter/google_maps_flutter/test/google_map_test.dart b/packages/google_maps_flutter/google_maps_flutter/test/google_map_test.dart
index 2b754af..0fc5e77 100644
--- a/packages/google_maps_flutter/google_maps_flutter/test/google_map_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter/test/google_map_test.dart
@@ -89,7 +89,6 @@
         textDirection: TextDirection.ltr,
         child: GoogleMap(
           initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
-          compassEnabled: true,
         ),
       ),
     );
@@ -118,7 +117,6 @@
         textDirection: TextDirection.ltr,
         child: GoogleMap(
           initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
-          mapToolbarEnabled: true,
         ),
       ),
     );
@@ -232,7 +230,6 @@
         textDirection: TextDirection.ltr,
         child: GoogleMap(
           initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
-          minMaxZoomPreference: MinMaxZoomPreference.unbounded,
         ),
       ),
     );
@@ -262,7 +259,6 @@
         textDirection: TextDirection.ltr,
         child: GoogleMap(
           initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
-          rotateGesturesEnabled: true,
         ),
       ),
     );
@@ -291,7 +287,6 @@
         textDirection: TextDirection.ltr,
         child: GoogleMap(
           initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
-          scrollGesturesEnabled: true,
         ),
       ),
     );
@@ -320,7 +315,6 @@
         textDirection: TextDirection.ltr,
         child: GoogleMap(
           initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
-          tiltGesturesEnabled: true,
         ),
       ),
     );
@@ -378,7 +372,6 @@
         textDirection: TextDirection.ltr,
         child: GoogleMap(
           initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
-          zoomGesturesEnabled: true,
         ),
       ),
     );
@@ -407,7 +400,6 @@
         textDirection: TextDirection.ltr,
         child: GoogleMap(
           initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
-          zoomControlsEnabled: true,
         ),
       ),
     );
@@ -421,7 +413,6 @@
         textDirection: TextDirection.ltr,
         child: GoogleMap(
           initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
-          myLocationEnabled: false,
         ),
       ),
     );
@@ -451,7 +442,6 @@
         textDirection: TextDirection.ltr,
         child: GoogleMap(
           initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
-          myLocationEnabled: false,
         ),
       ),
     );
@@ -536,7 +526,6 @@
         textDirection: TextDirection.ltr,
         child: GoogleMap(
           initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
-          trafficEnabled: false,
         ),
       ),
     );
@@ -580,7 +569,6 @@
         textDirection: TextDirection.ltr,
         child: GoogleMap(
           initialCameraPosition: CameraPosition(target: LatLng(10.0, 15.0)),
-          buildingsEnabled: true,
         ),
       ),
     );
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 9cbba3a..a2dad92 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
@@ -200,8 +200,7 @@
   });
 
   testWidgets('Update non platform related attr', (WidgetTester tester) async {
-    Polyline p1 =
-        const Polyline(polylineId: PolylineId('polyline_1'), onTap: null);
+    Polyline p1 = const Polyline(polylineId: PolylineId('polyline_1'));
     final Set<Polyline> prev = <Polyline>{p1};
     p1 = Polyline(
         polylineId: const PolylineId('polyline_1'), onTap: () => print(2 + 2));
diff --git a/packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md
index bd2f99c..1ce9082 100644
--- a/packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md
+++ b/packages/google_maps_flutter/google_maps_flutter_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 2.1.10
 
 * Splits Android implementation out of `google_maps_flutter` as a federated
diff --git a/packages/google_maps_flutter/google_maps_flutter_android/example/integration_test/google_maps_test.dart b/packages/google_maps_flutter/google_maps_flutter_android/example/integration_test/google_maps_test.dart
index 00c51eb..ce79a06 100644
--- a/packages/google_maps_flutter/google_maps_flutter_android/example/integration_test/google_maps_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_android/example/integration_test/google_maps_test.dart
@@ -48,7 +48,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        compassEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -86,7 +85,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        mapToolbarEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -182,7 +180,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        zoomGesturesEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -240,7 +237,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        liteModeEnabled: false,
         onMapCreated: (ExampleGoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -297,7 +293,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        rotateGesturesEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -337,7 +332,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        tiltGesturesEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -376,7 +370,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        scrollGesturesEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -528,7 +521,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        trafficEnabled: false,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -548,7 +540,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        buildingsEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -572,8 +563,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        myLocationButtonEnabled: true,
-        myLocationEnabled: false,
         onMapCreated: (ExampleGoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -593,7 +582,6 @@
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
         myLocationButtonEnabled: false,
-        myLocationEnabled: false,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -618,7 +606,6 @@
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
         myLocationButtonEnabled: false,
-        myLocationEnabled: false,
         onMapCreated: (ExampleGoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -645,8 +632,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        myLocationButtonEnabled: true,
-        myLocationEnabled: false,
         onMapCreated: (ExampleGoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -958,9 +943,7 @@
         tileOverlayId: const TileOverlayId('tile_overlay_1'),
         tileProvider: _DebugTileProvider(),
         zIndex: 2,
-        visible: true,
         transparency: 0.2,
-        fadeIn: true,
       );
 
       final TileOverlay tileOverlay2 = TileOverlay(
@@ -1017,18 +1000,14 @@
         tileOverlayId: const TileOverlayId('tile_overlay_1'),
         tileProvider: _DebugTileProvider(),
         zIndex: 2,
-        visible: true,
         transparency: 0.2,
-        fadeIn: true,
       );
 
       final TileOverlay tileOverlay2 = TileOverlay(
         tileOverlayId: const TileOverlayId('tile_overlay_2'),
         tileProvider: _DebugTileProvider(),
         zIndex: 3,
-        visible: true,
         transparency: 0.5,
-        fadeIn: true,
       );
       await tester.pumpWidget(
         Directionality(
@@ -1097,9 +1076,7 @@
         tileOverlayId: const TileOverlayId('tile_overlay_1'),
         tileProvider: _DebugTileProvider(),
         zIndex: 2,
-        visible: true,
         transparency: 0.2,
-        fadeIn: true,
       );
 
       await tester.pumpWidget(
@@ -1171,7 +1148,6 @@
       textDirection: TextDirection.ltr,
     );
     textPainter.layout(
-      minWidth: 0.0,
       maxWidth: width.toDouble(),
     );
     const Offset offset = Offset(0, 0);
diff --git a/packages/google_maps_flutter/google_maps_flutter_android/example/lib/map_click.dart b/packages/google_maps_flutter/google_maps_flutter_android/example/lib/map_click.dart
index 20718d9..4017a9f 100644
--- a/packages/google_maps_flutter/google_maps_flutter_android/example/lib/map_click.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_android/example/lib/map_click.dart
@@ -92,7 +92,6 @@
       )));
     }
     return Column(
-      mainAxisAlignment: MainAxisAlignment.start,
       crossAxisAlignment: CrossAxisAlignment.stretch,
       children: columnChildren,
     );
diff --git a/packages/google_maps_flutter/google_maps_flutter_android/example/lib/map_ui.dart b/packages/google_maps_flutter/google_maps_flutter_android/example/lib/map_ui.dart
index 6c38e14..009ee71 100644
--- a/packages/google_maps_flutter/google_maps_flutter_android/example/lib/map_ui.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_android/example/lib/map_ui.dart
@@ -337,7 +337,6 @@
       );
     }
     return Column(
-      mainAxisAlignment: MainAxisAlignment.start,
       crossAxisAlignment: CrossAxisAlignment.stretch,
       children: columnChildren,
     );
diff --git a/packages/google_maps_flutter/google_maps_flutter_android/example/lib/padding.dart b/packages/google_maps_flutter/google_maps_flutter_android/example/lib/padding.dart
index d346549..67e7244 100644
--- a/packages/google_maps_flutter/google_maps_flutter_android/example/lib/padding.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_android/example/lib/padding.dart
@@ -70,7 +70,6 @@
     columnChildren.addAll(<Widget>[_paddingInput(), _buttons()]);
 
     return Column(
-      mainAxisAlignment: MainAxisAlignment.start,
       crossAxisAlignment: CrossAxisAlignment.stretch,
       children: columnChildren,
     );
diff --git a/packages/google_maps_flutter/google_maps_flutter_android/example/lib/place_marker.dart b/packages/google_maps_flutter/google_maps_flutter_android/example/lib/place_marker.dart
index b7d2a69..7d12f4c 100644
--- a/packages/google_maps_flutter/google_maps_flutter_android/example/lib/place_marker.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_android/example/lib/place_marker.dart
@@ -403,7 +403,6 @@
           padding: const EdgeInsets.only(left: 12, right: 12),
           child: Row(
             mainAxisAlignment: MainAxisAlignment.spaceAround,
-            mainAxisSize: MainAxisSize.max,
             children: <Widget>[
               if (markerPosition == null)
                 Container()
diff --git a/packages/google_maps_flutter/google_maps_flutter_android/example/lib/tile_overlay.dart b/packages/google_maps_flutter/google_maps_flutter_android/example/lib/tile_overlay.dart
index 555f037..c912870 100644
--- a/packages/google_maps_flutter/google_maps_flutter_android/example/lib/tile_overlay.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_android/example/lib/tile_overlay.dart
@@ -138,7 +138,6 @@
       textDirection: TextDirection.ltr,
     );
     textPainter.layout(
-      minWidth: 0.0,
       maxWidth: width.toDouble(),
     );
     const Offset offset = Offset(0, 0);
diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_ios/CHANGELOG.md
index 33d96e9..935cfd4 100644
--- a/packages/google_maps_flutter/google_maps_flutter_ios/CHANGELOG.md
+++ b/packages/google_maps_flutter/google_maps_flutter_ios/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 2.1.11
 
 * Precaches Google Maps services initialization and syncing.
diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/example/integration_test/google_maps_test.dart b/packages/google_maps_flutter/google_maps_flutter_ios/example/integration_test/google_maps_test.dart
index a2299e6..c9ad0ce 100644
--- a/packages/google_maps_flutter/google_maps_flutter_ios/example/integration_test/google_maps_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_ios/example/integration_test/google_maps_test.dart
@@ -47,7 +47,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        compassEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -67,7 +66,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        mapToolbarEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -156,7 +154,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        zoomGesturesEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -220,7 +217,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        rotateGesturesEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -260,7 +256,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        tiltGesturesEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -299,7 +294,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        scrollGesturesEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -443,7 +437,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        trafficEnabled: false,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -463,7 +456,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        buildingsEnabled: true,
         onMapCreated: (ExampleGoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -487,8 +479,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        myLocationButtonEnabled: true,
-        myLocationEnabled: false,
         onMapCreated: (ExampleGoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -508,7 +498,6 @@
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
         myLocationButtonEnabled: false,
-        myLocationEnabled: false,
         onMapCreated: (ExampleGoogleMapController controller) {
           fail('OnMapCreated should get called only once.');
         },
@@ -531,7 +520,6 @@
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
         myLocationButtonEnabled: false,
-        myLocationEnabled: false,
         onMapCreated: (ExampleGoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -556,8 +544,6 @@
       child: ExampleGoogleMap(
         key: key,
         initialCameraPosition: _kInitialCameraPosition,
-        myLocationButtonEnabled: true,
-        myLocationEnabled: false,
         onMapCreated: (ExampleGoogleMapController controller) {
           mapIdCompleter.complete(controller.mapId);
         },
@@ -864,9 +850,7 @@
         tileOverlayId: const TileOverlayId('tile_overlay_1'),
         tileProvider: _DebugTileProvider(),
         zIndex: 2,
-        visible: true,
         transparency: 0.2,
-        fadeIn: true,
       );
 
       final TileOverlay tileOverlay2 = TileOverlay(
@@ -923,18 +907,14 @@
         tileOverlayId: const TileOverlayId('tile_overlay_1'),
         tileProvider: _DebugTileProvider(),
         zIndex: 2,
-        visible: true,
         transparency: 0.2,
-        fadeIn: true,
       );
 
       final TileOverlay tileOverlay2 = TileOverlay(
         tileOverlayId: const TileOverlayId('tile_overlay_2'),
         tileProvider: _DebugTileProvider(),
         zIndex: 3,
-        visible: true,
         transparency: 0.5,
-        fadeIn: true,
       );
       await tester.pumpWidget(
         Directionality(
@@ -1003,9 +983,7 @@
         tileOverlayId: const TileOverlayId('tile_overlay_1'),
         tileProvider: _DebugTileProvider(),
         zIndex: 2,
-        visible: true,
         transparency: 0.2,
-        fadeIn: true,
       );
 
       await tester.pumpWidget(
@@ -1077,7 +1055,6 @@
       textDirection: TextDirection.ltr,
     );
     textPainter.layout(
-      minWidth: 0.0,
       maxWidth: width.toDouble(),
     );
     const Offset offset = Offset(0, 0);
diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/map_click.dart b/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/map_click.dart
index 20718d9..4017a9f 100644
--- a/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/map_click.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/map_click.dart
@@ -92,7 +92,6 @@
       )));
     }
     return Column(
-      mainAxisAlignment: MainAxisAlignment.start,
       crossAxisAlignment: CrossAxisAlignment.stretch,
       children: columnChildren,
     );
diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/map_ui.dart b/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/map_ui.dart
index 6c38e14..009ee71 100644
--- a/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/map_ui.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/map_ui.dart
@@ -337,7 +337,6 @@
       );
     }
     return Column(
-      mainAxisAlignment: MainAxisAlignment.start,
       crossAxisAlignment: CrossAxisAlignment.stretch,
       children: columnChildren,
     );
diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/padding.dart b/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/padding.dart
index d346549..67e7244 100644
--- a/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/padding.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/padding.dart
@@ -70,7 +70,6 @@
     columnChildren.addAll(<Widget>[_paddingInput(), _buttons()]);
 
     return Column(
-      mainAxisAlignment: MainAxisAlignment.start,
       crossAxisAlignment: CrossAxisAlignment.stretch,
       children: columnChildren,
     );
diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/place_marker.dart b/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/place_marker.dart
index b7d2a69..7d12f4c 100644
--- a/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/place_marker.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/place_marker.dart
@@ -403,7 +403,6 @@
           padding: const EdgeInsets.only(left: 12, right: 12),
           child: Row(
             mainAxisAlignment: MainAxisAlignment.spaceAround,
-            mainAxisSize: MainAxisSize.max,
             children: <Widget>[
               if (markerPosition == null)
                 Container()
diff --git a/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/tile_overlay.dart b/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/tile_overlay.dart
index 555f037..c912870 100644
--- a/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/tile_overlay.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_ios/example/lib/tile_overlay.dart
@@ -138,7 +138,6 @@
       textDirection: TextDirection.ltr,
     );
     textPainter.layout(
-      minWidth: 0.0,
       maxWidth: width.toDouble(),
     );
     const Offset offset = Offset(0, 0);
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 e8da5f3..695a1b8 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 @@
+## NEXT
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 2.2.1
 
 * Adds a new interface for inspecting the platform map state in tests.
diff --git a/packages/google_maps_flutter/google_maps_flutter_platform_interface/test/types/tile_overlay_test.dart b/packages/google_maps_flutter/google_maps_flutter_platform_interface/test/types/tile_overlay_test.dart
index 1a9a9d4..fe5d863 100644
--- a/packages/google_maps_flutter/google_maps_flutter_platform_interface/test/types/tile_overlay_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_platform_interface/test/types/tile_overlay_test.dart
@@ -35,7 +35,6 @@
       const TileOverlay tileOverlay = TileOverlay(
           tileOverlayId: TileOverlayId('id'),
           fadeIn: false,
-          tileProvider: null,
           transparency: 0.1,
           zIndex: 1,
           visible: false,
@@ -91,7 +90,6 @@
       const TileOverlay tileOverlayDifferentProvider = TileOverlay(
           tileOverlayId: TileOverlayId('id1'),
           fadeIn: false,
-          tileProvider: null,
           transparency: 0.1,
           zIndex: 1,
           visible: false,
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 d866429..d766e0d 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
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 0.4.0+1
 
 * Updates `README.md` to describe a hit-testing issue when Flutter widgets are overlaid on top of the Map widget.
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 b44853a..4294f87 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
@@ -450,8 +450,6 @@
             initialCameraPosition: const CameraPosition(
               target: LatLng(43.308, -5.6910),
               zoom: 12,
-              bearing: 0,
-              tilt: 0,
             ),
           );
 
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/projection_test.dart b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/projection_test.dart
index 14e4156..a595a94 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/projection_test.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/projection_test.dart
@@ -211,13 +211,13 @@
 Future<void> pumpCenteredMap(
   WidgetTester tester, {
   required CameraPosition initialCamera,
-  Size size = const Size(320, 240),
+  Size? size,
   void Function(GoogleMapController)? onMapCreated,
 }) async {
   await tester.pumpWidget(
     CenteredMap(
       initialCamera: initialCamera,
-      size: size,
+      size: size ?? const Size(320, 240),
       onMapCreated: onMapCreated,
     ),
   );
diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md
index 7e433a7..d63f0a1 100644
--- a/packages/google_sign_in/google_sign_in/CHANGELOG.md
+++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 5.4.1
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 5.4.0
 
 * Adds support for configuring `serverClientId` through `GoogleSignIn` constructor.
diff --git a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart
index a1f8f7b..135c422 100644
--- a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart
+++ b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart
@@ -192,10 +192,7 @@
     List<String> scopes = const <String>[],
     String? hostedDomain,
   }) {
-    return GoogleSignIn(
-        signInOption: SignInOption.standard,
-        scopes: scopes,
-        hostedDomain: hostedDomain);
+    return GoogleSignIn(scopes: scopes, hostedDomain: hostedDomain);
   }
 
   /// Factory for creating sign in suitable for games. This option is only
diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml
index c7724ad..8286f6b 100644
--- a/packages/google_sign_in/google_sign_in/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in/pubspec.yaml
@@ -3,7 +3,7 @@
   for signing in with a Google account on Android and iOS.
 repository: https://github.com/flutter/plugins/tree/main/packages/google_sign_in/google_sign_in
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+google_sign_in%22
-version: 5.4.0
+version: 5.4.1
 
 
 environment:
diff --git a/packages/image_picker/image_picker/CHANGELOG.md b/packages/image_picker/image_picker/CHANGELOG.md
index 36a47b1..ececf68 100644
--- a/packages/image_picker/image_picker/CHANGELOG.md
+++ b/packages/image_picker/image_picker/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 0.8.5+3
 
 * Adds argument error assertions to the app-facing package, to ensure
diff --git a/packages/image_picker/image_picker/test/image_picker_deprecated_test.dart b/packages/image_picker/image_picker/test/image_picker_deprecated_test.dart
index b3db080..9ca4d9c 100644
--- a/packages/image_picker/image_picker/test/image_picker_deprecated_test.dart
+++ b/packages/image_picker/image_picker/test/image_picker_deprecated_test.dart
@@ -79,41 +79,30 @@
               imageQuality: 70);
 
           verifyInOrder(<Object>[
+            mockPlatform.pickImage(source: ImageSource.camera),
+            mockPlatform.pickImage(source: ImageSource.camera, maxWidth: 10.0),
+            mockPlatform.pickImage(source: ImageSource.camera, maxHeight: 10.0),
             mockPlatform.pickImage(
-                source: ImageSource.camera,
-                maxWidth: null,
-                maxHeight: null,
-                imageQuality: null),
+              source: ImageSource.camera,
+              maxWidth: 10.0,
+              maxHeight: 20.0,
+            ),
             mockPlatform.pickImage(
-                source: ImageSource.camera,
-                maxWidth: 10.0,
-                maxHeight: null,
-                imageQuality: null),
+              source: ImageSource.camera,
+              maxWidth: 10.0,
+              imageQuality: 70,
+            ),
             mockPlatform.pickImage(
-                source: ImageSource.camera,
-                maxWidth: null,
-                maxHeight: 10.0,
-                imageQuality: null),
+              source: ImageSource.camera,
+              maxHeight: 10.0,
+              imageQuality: 70,
+            ),
             mockPlatform.pickImage(
-                source: ImageSource.camera,
-                maxWidth: 10.0,
-                maxHeight: 20.0,
-                imageQuality: null),
-            mockPlatform.pickImage(
-                source: ImageSource.camera,
-                maxWidth: 10.0,
-                maxHeight: null,
-                imageQuality: 70),
-            mockPlatform.pickImage(
-                source: ImageSource.camera,
-                maxWidth: null,
-                maxHeight: 10.0,
-                imageQuality: 70),
-            mockPlatform.pickImage(
-                source: ImageSource.camera,
-                maxWidth: 10.0,
-                maxHeight: 20.0,
-                imageQuality: 70),
+              source: ImageSource.camera,
+              maxWidth: 10.0,
+              maxHeight: 20.0,
+              imageQuality: 70,
+            ),
           ]);
         });
 
@@ -128,9 +117,7 @@
           final ImagePicker picker = ImagePicker();
           await picker.getImage(source: ImageSource.camera);
 
-          verify(mockPlatform.pickImage(
-              source: ImageSource.camera,
-              preferredCameraDevice: CameraDevice.rear));
+          verify(mockPlatform.pickImage(source: ImageSource.camera));
         });
 
         test('camera position can set to front', () async {
@@ -173,14 +160,11 @@
               maxDuration: const Duration(seconds: 10));
 
           verifyInOrder(<Object>[
+            mockPlatform.pickVideo(source: ImageSource.camera),
             mockPlatform.pickVideo(
-                source: ImageSource.camera,
-                preferredCameraDevice: CameraDevice.rear,
-                maxDuration: null),
-            mockPlatform.pickVideo(
-                source: ImageSource.camera,
-                preferredCameraDevice: CameraDevice.rear,
-                maxDuration: const Duration(seconds: 10)),
+              source: ImageSource.camera,
+              maxDuration: const Duration(seconds: 10),
+            ),
           ]);
         });
 
@@ -195,9 +179,7 @@
           final ImagePicker picker = ImagePicker();
           await picker.getVideo(source: ImageSource.camera);
 
-          verify(mockPlatform.pickVideo(
-              source: ImageSource.camera,
-              preferredCameraDevice: CameraDevice.rear));
+          verify(mockPlatform.pickVideo(source: ImageSource.camera));
         });
 
         test('camera position can set to front', () async {
@@ -277,20 +259,17 @@
               maxWidth: 10.0, maxHeight: 20.0, imageQuality: 70);
 
           verifyInOrder(<Object>[
+            mockPlatform.pickMultiImage(),
+            mockPlatform.pickMultiImage(maxWidth: 10.0),
+            mockPlatform.pickMultiImage(maxHeight: 10.0),
+            mockPlatform.pickMultiImage(maxWidth: 10.0, maxHeight: 20.0),
+            mockPlatform.pickMultiImage(maxWidth: 10.0, imageQuality: 70),
+            mockPlatform.pickMultiImage(maxHeight: 10.0, imageQuality: 70),
             mockPlatform.pickMultiImage(
-                maxWidth: null, maxHeight: null, imageQuality: null),
-            mockPlatform.pickMultiImage(
-                maxWidth: 10.0, maxHeight: null, imageQuality: null),
-            mockPlatform.pickMultiImage(
-                maxWidth: null, maxHeight: 10.0, imageQuality: null),
-            mockPlatform.pickMultiImage(
-                maxWidth: 10.0, maxHeight: 20.0, imageQuality: null),
-            mockPlatform.pickMultiImage(
-                maxWidth: 10.0, maxHeight: null, imageQuality: 70),
-            mockPlatform.pickMultiImage(
-                maxWidth: null, maxHeight: 10.0, imageQuality: 70),
-            mockPlatform.pickMultiImage(
-                maxWidth: 10.0, maxHeight: 20.0, imageQuality: 70),
+              maxWidth: 10.0,
+              maxHeight: 20.0,
+              imageQuality: 70,
+            ),
           ]);
         });
 
diff --git a/packages/image_picker/image_picker/test/image_picker_test.dart b/packages/image_picker/image_picker/test/image_picker_test.dart
index f981195..10b5ac1 100644
--- a/packages/image_picker/image_picker/test/image_picker_test.dart
+++ b/packages/image_picker/image_picker/test/image_picker_test.dart
@@ -76,36 +76,15 @@
               imageQuality: 70);
 
           verifyInOrder(<Object>[
+            mockPlatform.getImage(source: ImageSource.camera),
+            mockPlatform.getImage(source: ImageSource.camera, maxWidth: 10.0),
+            mockPlatform.getImage(source: ImageSource.camera, maxHeight: 10.0),
             mockPlatform.getImage(
-                source: ImageSource.camera,
-                maxWidth: null,
-                maxHeight: null,
-                imageQuality: null),
+                source: ImageSource.camera, maxWidth: 10.0, maxHeight: 20.0),
             mockPlatform.getImage(
-                source: ImageSource.camera,
-                maxWidth: 10.0,
-                maxHeight: null,
-                imageQuality: null),
+                source: ImageSource.camera, maxWidth: 10.0, imageQuality: 70),
             mockPlatform.getImage(
-                source: ImageSource.camera,
-                maxWidth: null,
-                maxHeight: 10.0,
-                imageQuality: null),
-            mockPlatform.getImage(
-                source: ImageSource.camera,
-                maxWidth: 10.0,
-                maxHeight: 20.0,
-                imageQuality: null),
-            mockPlatform.getImage(
-                source: ImageSource.camera,
-                maxWidth: 10.0,
-                maxHeight: null,
-                imageQuality: 70),
-            mockPlatform.getImage(
-                source: ImageSource.camera,
-                maxWidth: null,
-                maxHeight: 10.0,
-                imageQuality: 70),
+                source: ImageSource.camera, maxHeight: 10.0, imageQuality: 70),
             mockPlatform.getImage(
                 source: ImageSource.camera,
                 maxWidth: 10.0,
@@ -138,9 +117,7 @@
           final ImagePicker picker = ImagePicker();
           await picker.pickImage(source: ImageSource.camera);
 
-          verify(mockPlatform.getImage(
-              source: ImageSource.camera,
-              preferredCameraDevice: CameraDevice.rear));
+          verify(mockPlatform.getImage(source: ImageSource.camera));
         });
 
         test('camera position can set to front', () async {
@@ -183,13 +160,9 @@
               maxDuration: const Duration(seconds: 10));
 
           verifyInOrder(<Object>[
+            mockPlatform.getVideo(source: ImageSource.camera),
             mockPlatform.getVideo(
                 source: ImageSource.camera,
-                preferredCameraDevice: CameraDevice.rear,
-                maxDuration: null),
-            mockPlatform.getVideo(
-                source: ImageSource.camera,
-                preferredCameraDevice: CameraDevice.rear,
                 maxDuration: const Duration(seconds: 10)),
           ]);
         });
@@ -205,9 +178,7 @@
           final ImagePicker picker = ImagePicker();
           await picker.pickVideo(source: ImageSource.camera);
 
-          verify(mockPlatform.getVideo(
-              source: ImageSource.camera,
-              preferredCameraDevice: CameraDevice.rear));
+          verify(mockPlatform.getVideo(source: ImageSource.camera));
         });
 
         test('camera position can set to front', () async {
@@ -312,18 +283,12 @@
               maxWidth: 10.0, maxHeight: 20.0, imageQuality: 70);
 
           verifyInOrder(<Object>[
-            mockPlatform.getMultiImage(
-                maxWidth: null, maxHeight: null, imageQuality: null),
-            mockPlatform.getMultiImage(
-                maxWidth: 10.0, maxHeight: null, imageQuality: null),
-            mockPlatform.getMultiImage(
-                maxWidth: null, maxHeight: 10.0, imageQuality: null),
-            mockPlatform.getMultiImage(
-                maxWidth: 10.0, maxHeight: 20.0, imageQuality: null),
-            mockPlatform.getMultiImage(
-                maxWidth: 10.0, maxHeight: null, imageQuality: 70),
-            mockPlatform.getMultiImage(
-                maxWidth: null, maxHeight: 10.0, imageQuality: 70),
+            mockPlatform.getMultiImage(),
+            mockPlatform.getMultiImage(maxWidth: 10.0),
+            mockPlatform.getMultiImage(maxHeight: 10.0),
+            mockPlatform.getMultiImage(maxWidth: 10.0, maxHeight: 20.0),
+            mockPlatform.getMultiImage(maxWidth: 10.0, imageQuality: 70),
+            mockPlatform.getMultiImage(maxHeight: 10.0, imageQuality: 70),
             mockPlatform.getMultiImage(
                 maxWidth: 10.0, maxHeight: 20.0, imageQuality: 70),
           ]);
diff --git a/packages/image_picker/image_picker_platform_interface/CHANGELOG.md b/packages/image_picker/image_picker_platform_interface/CHANGELOG.md
index fda959a..ae4a0a3 100644
--- a/packages/image_picker/image_picker_platform_interface/CHANGELOG.md
+++ b/packages/image_picker/image_picker_platform_interface/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 2.6.1
 
 * Exports new types added for `getMultiImageWithOptions` in 2.6.0.
diff --git a/packages/image_picker/image_picker_platform_interface/test/new_method_channel_image_picker_test.dart b/packages/image_picker/image_picker_platform_interface/test/new_method_channel_image_picker_test.dart
index 1ddddee..4498010 100644
--- a/packages/image_picker/image_picker_platform_interface/test/new_method_channel_image_picker_test.dart
+++ b/packages/image_picker/image_picker_platform_interface/test/new_method_channel_image_picker_test.dart
@@ -1440,9 +1440,7 @@
 
       test('Request full metadata argument defaults to true', () async {
         returnValue = <dynamic>['0', '1'];
-        await picker.getMultiImageWithOptions(
-          options: const MultiImagePickerOptions(),
-        );
+        await picker.getMultiImageWithOptions();
 
         expect(
           log,
diff --git a/packages/in_app_purchase/in_app_purchase/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase/CHANGELOG.md
index 08ba6dd..1d4407e 100644
--- a/packages/in_app_purchase/in_app_purchase/CHANGELOG.md
+++ b/packages/in_app_purchase/in_app_purchase/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 3.0.7
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 3.0.6
 
 * Ignores deprecation warnings for upcoming styleFrom button API changes.
diff --git a/packages/in_app_purchase/in_app_purchase/example/lib/main.dart b/packages/in_app_purchase/in_app_purchase/example/lib/main.dart
index 017b72e..98a24d1 100644
--- a/packages/in_app_purchase/in_app_purchase/example/lib/main.dart
+++ b/packages/in_app_purchase/in_app_purchase/example/lib/main.dart
@@ -18,7 +18,9 @@
   runApp(_MyApp());
 }
 
-const bool _kAutoConsume = true;
+// Auto-consume must be true on iOS.
+// To try without auto-consume on another platform, change `true` to `false` here.
+final bool _kAutoConsume = Platform.isIOS || true;
 
 const String _kConsumableId = 'consumable';
 const String _kUpgradeId = 'upgrade';
@@ -277,7 +279,6 @@
 
                       purchaseParam = GooglePlayPurchaseParam(
                           productDetails: productDetails,
-                          applicationUserName: null,
                           changeSubscriptionParam: (oldSubscription != null)
                               ? ChangeSubscriptionParam(
                                   oldPurchaseDetails: oldSubscription,
@@ -288,14 +289,13 @@
                     } else {
                       purchaseParam = PurchaseParam(
                         productDetails: productDetails,
-                        applicationUserName: null,
                       );
                     }
 
                     if (productDetails.id == _kConsumableId) {
                       _inAppPurchase.buyConsumable(
                           purchaseParam: purchaseParam,
-                          autoConsume: _kAutoConsume || Platform.isIOS);
+                          autoConsume: _kAutoConsume);
                     } else {
                       _inAppPurchase.buyNonConsumable(
                           purchaseParam: purchaseParam);
@@ -358,7 +358,6 @@
     return Padding(
       padding: const EdgeInsets.all(4.0),
       child: Row(
-        mainAxisSize: MainAxisSize.max,
         mainAxisAlignment: MainAxisAlignment.end,
         children: <Widget>[
           TextButton(
diff --git a/packages/in_app_purchase/in_app_purchase/pubspec.yaml b/packages/in_app_purchase/in_app_purchase/pubspec.yaml
index 8fb6920..887910e 100644
--- a/packages/in_app_purchase/in_app_purchase/pubspec.yaml
+++ b/packages/in_app_purchase/in_app_purchase/pubspec.yaml
@@ -2,7 +2,7 @@
 description: A Flutter plugin for in-app purchases. Exposes APIs for making in-app purchases through the App Store and Google Play.
 repository: https://github.com/flutter/plugins/tree/main/packages/in_app_purchase/in_app_purchase
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22
-version: 3.0.6
+version: 3.0.7
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/in_app_purchase/in_app_purchase/test/in_app_purchase_test.dart b/packages/in_app_purchase/in_app_purchase/test/in_app_purchase_test.dart
index 644d26e..58f7398 100644
--- a/packages/in_app_purchase/in_app_purchase/test/in_app_purchase_test.dart
+++ b/packages/in_app_purchase/in_app_purchase/test/in_app_purchase_test.dart
@@ -184,12 +184,12 @@
   @override
   Future<void> completePurchase(PurchaseDetails purchase) {
     log.add(const MethodCall('completePurchase'));
-    return Future<void>.value(null);
+    return Future<void>.value();
   }
 
   @override
   Future<void> restorePurchases({String? applicationUserName}) {
     log.add(const MethodCall('restorePurchases'));
-    return Future<void>.value(null);
+    return Future<void>.value();
   }
 }
diff --git a/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md
index c369b8f..daa4874 100644
--- a/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md
+++ b/packages/in_app_purchase/in_app_purchase_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.2.3+3
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 0.2.3+2
 
 * Fixes incorrect json key in `queryPurchasesAsync` that fixes restore purchases functionality.
diff --git a/packages/in_app_purchase/in_app_purchase_android/example/lib/main.dart b/packages/in_app_purchase/in_app_purchase_android/example/lib/main.dart
index 337811a..6c0d967 100644
--- a/packages/in_app_purchase/in_app_purchase_android/example/lib/main.dart
+++ b/packages/in_app_purchase/in_app_purchase_android/example/lib/main.dart
@@ -3,7 +3,6 @@
 // found in the LICENSE file.
 
 import 'dart:async';
-import 'dart:io';
 
 import 'package:flutter/material.dart';
 import 'package:in_app_purchase_android/billing_client_wrappers.dart';
@@ -22,6 +21,7 @@
   runApp(_MyApp());
 }
 
+// To try without auto-consume, change `true` to `false` here.
 const bool _kAutoConsume = true;
 
 const String _kConsumableId = 'consumable';
@@ -282,7 +282,6 @@
                       final GooglePlayPurchaseParam purchaseParam =
                           GooglePlayPurchaseParam(
                               productDetails: productDetails,
-                              applicationUserName: null,
                               changeSubscriptionParam: oldSubscription != null
                                   ? ChangeSubscriptionParam(
                                       oldPurchaseDetails: oldSubscription,
@@ -292,7 +291,8 @@
                       if (productDetails.id == _kConsumableId) {
                         _inAppPurchasePlatform.buyConsumable(
                             purchaseParam: purchaseParam,
-                            autoConsume: _kAutoConsume || Platform.isIOS);
+                            // ignore: avoid_redundant_argument_values
+                            autoConsume: _kAutoConsume);
                       } else {
                         _inAppPurchasePlatform.buyNonConsumable(
                             purchaseParam: purchaseParam);
diff --git a/packages/in_app_purchase/in_app_purchase_android/lib/src/billing_client_wrappers/billing_client_wrapper.dart b/packages/in_app_purchase/in_app_purchase_android/lib/src/billing_client_wrappers/billing_client_wrapper.dart
index 70343fc..4c64a99 100644
--- a/packages/in_app_purchase/in_app_purchase_android/lib/src/billing_client_wrappers/billing_client_wrapper.dart
+++ b/packages/in_app_purchase/in_app_purchase_android/lib/src/billing_client_wrappers/billing_client_wrapper.dart
@@ -124,7 +124,7 @@
   ///
   /// This triggers the destruction of the `BillingClient` instance in Java.
   Future<void> endConnection() async {
-    return channel.invokeMethod<void>('BillingClient#endConnection()', null);
+    return channel.invokeMethod<void>('BillingClient#endConnection()');
   }
 
   /// Returns a list of [SkuDetailsWrapper]s that have [SkuDetailsWrapper.sku]
diff --git a/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml b/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml
index 3b334a6..8116de3 100644
--- a/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml
+++ b/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml
@@ -2,7 +2,7 @@
 description: An implementation for the Android platform of the Flutter `in_app_purchase` plugin. This uses the Android BillingClient APIs.
 repository: https://github.com/flutter/plugins/tree/main/packages/in_app_purchase/in_app_purchase_android
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22
-version: 0.2.3+2
+version: 0.2.3+3
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/in_app_purchase/in_app_purchase_android/test/billing_client_wrappers/billing_client_wrapper_test.dart b/packages/in_app_purchase/in_app_purchase_android/test/billing_client_wrappers/billing_client_wrapper_test.dart
index 1e30ce4..e803e81 100644
--- a/packages/in_app_purchase/in_app_purchase_android/test/billing_client_wrappers/billing_client_wrapper_test.dart
+++ b/packages/in_app_purchase/in_app_purchase_android/test/billing_client_wrappers/billing_client_wrapper_test.dart
@@ -95,7 +95,6 @@
     test('handles method channel returning null', () async {
       stubPlatform.addResponse(
         name: methodName,
-        value: null,
       );
 
       expect(
@@ -110,7 +109,7 @@
   test('endConnection', () async {
     const String endConnectionName = 'BillingClient#endConnection()';
     expect(stubPlatform.countPreviousCalls(endConnectionName), equals(0));
-    stubPlatform.addResponse(name: endConnectionName, value: null);
+    stubPlatform.addResponse(name: endConnectionName);
     await billingClient.endConnection();
     expect(stubPlatform.countPreviousCalls(endConnectionName), equals(1));
   });
@@ -162,7 +161,7 @@
     });
 
     test('handles null method channel response', () async {
-      stubPlatform.addResponse(name: queryMethodName, value: null);
+      stubPlatform.addResponse(name: queryMethodName);
 
       final SkuDetailsResponseWrapper response = await billingClient
           .querySkuDetails(
@@ -227,8 +226,7 @@
               sku: skuDetails.sku,
               accountId: accountId,
               obfuscatedProfileId: profileId,
-              oldSku: dummyOldPurchase.sku,
-              purchaseToken: null),
+              oldSku: dummyOldPurchase.sku),
           throwsAssertionError);
 
       expect(
@@ -236,7 +234,6 @@
               sku: skuDetails.sku,
               accountId: accountId,
               obfuscatedProfileId: profileId,
-              oldSku: null,
               purchaseToken: dummyOldPurchase.purchaseToken),
           throwsAssertionError);
     });
@@ -337,7 +334,6 @@
     test('handles method channel returning null', () async {
       stubPlatform.addResponse(
         name: launchMethodName,
-        value: null,
       );
       const SkuDetailsWrapper skuDetails = dummySkuDetails;
       expect(
@@ -400,7 +396,6 @@
     test('handles method channel returning null', () async {
       stubPlatform.addResponse(
         name: queryPurchasesMethodName,
-        value: null,
       );
       final PurchasesResultWrapper response =
           await billingClient.queryPurchases(SkuType.inapp);
@@ -466,7 +461,6 @@
     test('handles method channel returning null', () async {
       stubPlatform.addResponse(
         name: queryPurchaseHistoryMethodName,
-        value: null,
       );
       final PurchasesHistoryResult response =
           await billingClient.queryPurchaseHistory(SkuType.inapp);
@@ -501,7 +495,6 @@
     test('handles method channel returning null', () async {
       stubPlatform.addResponse(
         name: consumeMethodName,
-        value: null,
       );
       final BillingResultWrapper billingResult =
           await billingClient.consumeAsync('dummy token');
@@ -534,7 +527,6 @@
     test('handles method channel returning null', () async {
       stubPlatform.addResponse(
         name: acknowledgeMethodName,
-        value: null,
       );
       final BillingResultWrapper billingResult =
           await billingClient.acknowledgePurchase('dummy token');
diff --git a/packages/in_app_purchase/in_app_purchase_android/test/in_app_purchase_android_platform_addition_test.dart b/packages/in_app_purchase/in_app_purchase_android/test/in_app_purchase_android_platform_addition_test.dart
index c87d0e3..9737282 100644
--- a/packages/in_app_purchase/in_app_purchase_android/test/in_app_purchase_android_platform_addition_test.dart
+++ b/packages/in_app_purchase/in_app_purchase_android/test/in_app_purchase_android_platform_addition_test.dart
@@ -35,7 +35,7 @@
     stubPlatform.addResponse(
         name: startConnectionCall,
         value: buildBillingResultMap(expectedBillingResult));
-    stubPlatform.addResponse(name: endConnectionCall, value: null);
+    stubPlatform.addResponse(name: endConnectionCall);
     iapAndroidPlatformAddition =
         InAppPurchaseAndroidPlatformAddition(BillingClient((_) {}));
   });
diff --git a/packages/in_app_purchase/in_app_purchase_android/test/in_app_purchase_android_platform_test.dart b/packages/in_app_purchase/in_app_purchase_android/test/in_app_purchase_android_platform_test.dart
index 4f90dcc..b6055cc 100644
--- a/packages/in_app_purchase/in_app_purchase_android/test/in_app_purchase_android_platform_test.dart
+++ b/packages/in_app_purchase/in_app_purchase_android/test/in_app_purchase_android_platform_test.dart
@@ -39,7 +39,7 @@
     stubPlatform.addResponse(
         name: startConnectionCall,
         value: buildBillingResultMap(expectedBillingResult));
-    stubPlatform.addResponse(name: endConnectionCall, value: null);
+    stubPlatform.addResponse(name: endConnectionCall);
 
     InAppPurchaseAndroidPlatform.registerPlatform();
     iapAndroidPlatform =
diff --git a/packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md
index 445fdb6..5aa6419 100644
--- a/packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md
+++ b/packages/in_app_purchase/in_app_purchase_storekit/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.1+1
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 0.3.1
 
 * Adds ability to purchase more than one of a product.
diff --git a/packages/in_app_purchase/in_app_purchase_storekit/example/lib/main.dart b/packages/in_app_purchase/in_app_purchase_storekit/example/lib/main.dart
index 5849b17..a4f9b26 100644
--- a/packages/in_app_purchase/in_app_purchase_storekit/example/lib/main.dart
+++ b/packages/in_app_purchase/in_app_purchase_storekit/example/lib/main.dart
@@ -3,7 +3,6 @@
 // found in the LICENSE file.
 
 import 'dart:async';
-import 'dart:io';
 
 import 'package:flutter/material.dart';
 import 'package:in_app_purchase_platform_interface/in_app_purchase_platform_interface.dart';
@@ -22,8 +21,6 @@
   runApp(_MyApp());
 }
 
-const bool _kAutoConsume = true;
-
 const String _kConsumableId = 'consumable';
 const String _kUpgradeId = 'upgrade';
 const String _kSilverSubscriptionId = 'subscription_silver';
@@ -268,12 +265,10 @@
                     onPressed: () {
                       final PurchaseParam purchaseParam = PurchaseParam(
                         productDetails: productDetails,
-                        applicationUserName: null,
                       );
                       if (productDetails.id == _kConsumableId) {
                         _iapStoreKitPlatform.buyConsumable(
-                            purchaseParam: purchaseParam,
-                            autoConsume: _kAutoConsume || Platform.isIOS);
+                            purchaseParam: purchaseParam);
                       } else {
                         _iapStoreKitPlatform.buyNonConsumable(
                             purchaseParam: purchaseParam);
@@ -335,7 +330,6 @@
     return Padding(
       padding: const EdgeInsets.all(4.0),
       child: Row(
-        mainAxisSize: MainAxisSize.max,
         mainAxisAlignment: MainAxisAlignment.end,
         children: <Widget>[
           TextButton(
diff --git a/packages/in_app_purchase/in_app_purchase_storekit/lib/src/in_app_purchase_storekit_platform.dart b/packages/in_app_purchase/in_app_purchase_storekit/lib/src/in_app_purchase_storekit_platform.dart
index f81b366..c03f15f 100644
--- a/packages/in_app_purchase/in_app_purchase_storekit/lib/src/in_app_purchase_storekit_platform.dart
+++ b/packages/in_app_purchase/in_app_purchase_storekit/lib/src/in_app_purchase_storekit_platform.dart
@@ -75,8 +75,7 @@
             purchaseParam is AppStorePurchaseParam ? purchaseParam.quantity : 1,
         applicationUsername: purchaseParam.applicationUserName,
         simulatesAskToBuyInSandbox: purchaseParam is AppStorePurchaseParam &&
-            purchaseParam.simulatesAskToBuyInSandbox,
-        requestData: null));
+            purchaseParam.simulatesAskToBuyInSandbox));
 
     return true; // There's no error feedback from iOS here to return.
   }
diff --git a/packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml b/packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml
index dd65b25..c037cdd 100644
--- a/packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml
+++ b/packages/in_app_purchase/in_app_purchase_storekit/pubspec.yaml
@@ -2,7 +2,7 @@
 description: An implementation for the iOS platform of the Flutter `in_app_purchase` plugin. This uses the StoreKit Framework.
 repository: https://github.com/flutter/plugins/tree/main/packages/in_app_purchase/in_app_purchase_storekit
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22
-version: 0.3.1
+version: 0.3.1+1
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/in_app_purchase/in_app_purchase_storekit/test/fakes/fake_storekit_platform.dart b/packages/in_app_purchase/in_app_purchase_storekit/test/fakes/fake_storekit_platform.dart
index e987a5c..08b9c85 100644
--- a/packages/in_app_purchase/in_app_purchase_storekit/test/fakes/fake_storekit_platform.dart
+++ b/packages/in_app_purchase/in_app_purchase_storekit/test/fakes/fake_storekit_platform.dart
@@ -63,8 +63,6 @@
       payment: SKPaymentWrapper(productIdentifier: id, quantity: quantity),
       transactionState: SKPaymentTransactionStateWrapper.purchasing,
       transactionTimeStamp: 123123.121,
-      error: null,
-      originalTransaction: null,
     );
   }
 
@@ -76,9 +74,7 @@
             SKPaymentWrapper(productIdentifier: productId, quantity: quantity),
         transactionState: SKPaymentTransactionStateWrapper.purchased,
         transactionTimeStamp: 123123.121,
-        transactionIdentifier: transactionId,
-        error: null,
-        originalTransaction: null);
+        transactionIdentifier: transactionId);
   }
 
   SKPaymentTransactionWrapper createFailedTransaction(String productId,
@@ -92,8 +88,7 @@
         error: const SKError(
             code: 0,
             domain: 'ios_domain',
-            userInfo: <String, Object>{'message': 'an error message'}),
-        originalTransaction: null);
+            userInfo: <String, Object>{'message': 'an error message'}));
   }
 
   SKPaymentTransactionWrapper createCanceledTransaction(
@@ -108,8 +103,7 @@
         error: SKError(
             code: errorCode,
             domain: 'ios_domain',
-            userInfo: const <String, Object>{'message': 'an error message'}),
-        originalTransaction: null);
+            userInfo: const <String, Object>{'message': 'an error message'}));
   }
 
   SKPaymentTransactionWrapper createRestoredTransaction(
@@ -120,9 +114,7 @@
             SKPaymentWrapper(productIdentifier: productId, quantity: quantity),
         transactionState: SKPaymentTransactionStateWrapper.restored,
         transactionTimeStamp: 123123.121,
-        transactionIdentifier: transactionId,
-        error: null,
-        originalTransaction: null);
+        transactionIdentifier: transactionId);
   }
 
   Future<dynamic> onMethodCall(MethodCall call) {
diff --git a/packages/in_app_purchase/in_app_purchase_storekit/test/store_kit_wrappers/sk_methodchannel_apis_test.dart b/packages/in_app_purchase/in_app_purchase_storekit/test/store_kit_wrappers/sk_methodchannel_apis_test.dart
index 2baf208..ff059ff 100644
--- a/packages/in_app_purchase/in_app_purchase_storekit/test/store_kit_wrappers/sk_methodchannel_apis_test.dart
+++ b/packages/in_app_purchase/in_app_purchase_storekit/test/store_kit_wrappers/sk_methodchannel_apis_test.dart
@@ -222,7 +222,7 @@
       case '-[InAppPurchasePlugin startProductRequest:result:]':
         startProductRequestParam = call.arguments as List<dynamic>;
         if (getProductRequestFailTest) {
-          return Future<dynamic>.value(null);
+          return Future<dynamic>.value();
         }
         return Future<Map<String, dynamic>>.value(
             buildProductResponseMap(dummyProductResponseWrapper));
@@ -240,7 +240,7 @@
       // payment queue
       case '-[SKPaymentQueue canMakePayments:]':
         if (testReturnNull) {
-          return Future<dynamic>.value(null);
+          return Future<dynamic>.value();
         }
         return Future<bool>.value(true);
       case '-[SKPaymentQueue transactions]':
diff --git a/packages/in_app_purchase/in_app_purchase_storekit/test/store_kit_wrappers/sk_test_stub_objects.dart b/packages/in_app_purchase/in_app_purchase_storekit/test/store_kit_wrappers/sk_test_stub_objects.dart
index 51d851c..e4ef2e3 100644
--- a/packages/in_app_purchase/in_app_purchase_storekit/test/store_kit_wrappers/sk_test_stub_objects.dart
+++ b/packages/in_app_purchase/in_app_purchase_storekit/test/store_kit_wrappers/sk_test_stub_objects.dart
@@ -19,7 +19,6 @@
     SKPaymentTransactionWrapper(
   transactionState: SKPaymentTransactionStateWrapper.purchased,
   payment: dummyPayment,
-  originalTransaction: null,
   transactionTimeStamp: 1231231231.00,
   transactionIdentifier: '123123',
   error: dummyError,
diff --git a/packages/local_auth/local_auth/CHANGELOG.md b/packages/local_auth/local_auth/CHANGELOG.md
index 975d171..5e637d1 100644
--- a/packages/local_auth/local_auth/CHANGELOG.md
+++ b/packages/local_auth/local_auth/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.1.2
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 2.1.1
 
 * Replaces `USE_FINGERPRINT` permission with `USE_BIOMETRIC` in README and example project.
diff --git a/packages/local_auth/local_auth/example/lib/main.dart b/packages/local_auth/local_auth/example/lib/main.dart
index cc687f5..1330012 100644
--- a/packages/local_auth/local_auth/example/lib/main.dart
+++ b/packages/local_auth/local_auth/example/lib/main.dart
@@ -83,7 +83,6 @@
       authenticated = await auth.authenticate(
         localizedReason: 'Let OS determine authentication method',
         options: const AuthenticationOptions(
-          useErrorDialogs: true,
           stickyAuth: true,
         ),
       );
@@ -117,7 +116,6 @@
         localizedReason:
             'Scan your fingerprint (or face or whatever) to authenticate',
         options: const AuthenticationOptions(
-          useErrorDialogs: true,
           stickyAuth: true,
           biometricOnly: true,
         ),
diff --git a/packages/local_auth/local_auth/pubspec.yaml b/packages/local_auth/local_auth/pubspec.yaml
index c6315c5..f2598bf 100644
--- a/packages/local_auth/local_auth/pubspec.yaml
+++ b/packages/local_auth/local_auth/pubspec.yaml
@@ -3,7 +3,7 @@
   authentication via fingerprint, touch ID, face ID, passcode, pin, or pattern.
 repository: https://github.com/flutter/plugins/tree/main/packages/local_auth/local_auth
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+local_auth%22
-version: 2.1.1
+version: 2.1.2
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/local_auth/local_auth/test/local_auth_test.dart b/packages/local_auth/local_auth/test/local_auth_test.dart
index 844c981..00196a8 100644
--- a/packages/local_auth/local_auth/test/local_auth_test.dart
+++ b/packages/local_auth/local_auth/test/local_auth_test.dart
@@ -37,7 +37,6 @@
         const AndroidAuthMessages(),
         const WindowsAuthMessages(),
       ],
-      options: const AuthenticationOptions(),
     )).called(1);
   });
 
diff --git a/packages/local_auth/local_auth_android/CHANGELOG.md b/packages/local_auth/local_auth_android/CHANGELOG.md
index 97f4f7f..2d9e277 100644
--- a/packages/local_auth/local_auth_android/CHANGELOG.md
+++ b/packages/local_auth/local_auth_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.11
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 1.0.10
 
 * Updates `local_auth_platform_interface` constraint to the correct minimum
diff --git a/packages/local_auth/local_auth_android/example/lib/main.dart b/packages/local_auth/local_auth_android/example/lib/main.dart
index 016d955..9909853 100644
--- a/packages/local_auth/local_auth_android/example/lib/main.dart
+++ b/packages/local_auth/local_auth_android/example/lib/main.dart
@@ -86,7 +86,6 @@
         localizedReason: 'Let OS determine authentication method',
         authMessages: <AuthMessages>[const AndroidAuthMessages()],
         options: const AuthenticationOptions(
-          useErrorDialogs: true,
           stickyAuth: true,
         ),
       );
@@ -121,7 +120,6 @@
             'Scan your fingerprint (or face or whatever) to authenticate',
         authMessages: <AuthMessages>[const AndroidAuthMessages()],
         options: const AuthenticationOptions(
-          useErrorDialogs: true,
           stickyAuth: true,
           biometricOnly: true,
         ),
diff --git a/packages/local_auth/local_auth_android/pubspec.yaml b/packages/local_auth/local_auth_android/pubspec.yaml
index af1ec51..81ee7b4 100644
--- a/packages/local_auth/local_auth_android/pubspec.yaml
+++ b/packages/local_auth/local_auth_android/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Android implementation of the local_auth plugin.
 repository: https://github.com/flutter/plugins/tree/main/packages/local_auth/local_auth_android
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+local_auth%22
-version: 1.0.10
+version: 1.0.11
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/local_auth/local_auth_ios/CHANGELOG.md b/packages/local_auth/local_auth_ios/CHANGELOG.md
index 7892bbc..5972772 100644
--- a/packages/local_auth/local_auth_ios/CHANGELOG.md
+++ b/packages/local_auth/local_auth_ios/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.9
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 1.0.8
 
 * Updates `local_auth_platform_interface` constraint to the correct minimum
diff --git a/packages/local_auth/local_auth_ios/example/lib/main.dart b/packages/local_auth/local_auth_ios/example/lib/main.dart
index 479a96b..fdbf11f 100644
--- a/packages/local_auth/local_auth_ios/example/lib/main.dart
+++ b/packages/local_auth/local_auth_ios/example/lib/main.dart
@@ -86,7 +86,6 @@
         localizedReason: 'Let OS determine authentication method',
         authMessages: <AuthMessages>[const IOSAuthMessages()],
         options: const AuthenticationOptions(
-          useErrorDialogs: true,
           stickyAuth: true,
         ),
       );
@@ -121,7 +120,6 @@
             'Scan your fingerprint (or face or whatever) to authenticate',
         authMessages: <AuthMessages>[const IOSAuthMessages()],
         options: const AuthenticationOptions(
-          useErrorDialogs: true,
           stickyAuth: true,
           biometricOnly: true,
         ),
diff --git a/packages/local_auth/local_auth_ios/pubspec.yaml b/packages/local_auth/local_auth_ios/pubspec.yaml
index e38e303..0d1b9ae 100644
--- a/packages/local_auth/local_auth_ios/pubspec.yaml
+++ b/packages/local_auth/local_auth_ios/pubspec.yaml
@@ -2,7 +2,7 @@
 description: iOS implementation of the local_auth plugin.
 repository: https://github.com/flutter/plugins/tree/main/packages/local_auth/local_auth_ios
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+local_auth%22
-version: 1.0.8
+version: 1.0.9
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/local_auth/local_auth_windows/CHANGELOG.md b/packages/local_auth/local_auth_windows/CHANGELOG.md
index 14ac67d..63ce49d 100644
--- a/packages/local_auth/local_auth_windows/CHANGELOG.md
+++ b/packages/local_auth/local_auth_windows/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.0.3
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 1.0.2
 
 * Updates `local_auth_platform_interface` constraint to the correct minimum
diff --git a/packages/local_auth/local_auth_windows/example/lib/main.dart b/packages/local_auth/local_auth_windows/example/lib/main.dart
index ef26ec5..c7b3fd9 100644
--- a/packages/local_auth/local_auth_windows/example/lib/main.dart
+++ b/packages/local_auth/local_auth_windows/example/lib/main.dart
@@ -86,7 +86,6 @@
         localizedReason: 'Let OS determine authentication method',
         authMessages: <AuthMessages>[const WindowsAuthMessages()],
         options: const AuthenticationOptions(
-          useErrorDialogs: true,
           stickyAuth: true,
         ),
       );
@@ -121,7 +120,6 @@
             'Scan your fingerprint (or face or whatever) to authenticate',
         authMessages: <AuthMessages>[const WindowsAuthMessages()],
         options: const AuthenticationOptions(
-          useErrorDialogs: true,
           stickyAuth: true,
           biometricOnly: true,
         ),
diff --git a/packages/local_auth/local_auth_windows/pubspec.yaml b/packages/local_auth/local_auth_windows/pubspec.yaml
index 99af0cc..3fec734 100644
--- a/packages/local_auth/local_auth_windows/pubspec.yaml
+++ b/packages/local_auth/local_auth_windows/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Windows implementation of the local_auth plugin.
 repository: https://github.com/flutter/plugins/tree/main/packages/local_auth/local_auth_windows
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+local_auth%22
-version: 1.0.2
+version: 1.0.3
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
diff --git a/packages/path_provider/path_provider/CHANGELOG.md b/packages/path_provider/path_provider/CHANGELOG.md
index 6f345f8..0877609 100644
--- a/packages/path_provider/path_provider/CHANGELOG.md
+++ b/packages/path_provider/path_provider/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 2.0.11
 
 * Updates references to the obsolete master branch.
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 6b3dd65..1fe31df 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
@@ -73,8 +73,7 @@
     testWidgets('getExternalStorageDirectories (type: $type)',
         (WidgetTester tester) async {
       if (Platform.isIOS) {
-        final Future<List<Directory>?> result =
-            getExternalStorageDirectories(type: null);
+        final Future<List<Directory>?> result = getExternalStorageDirectories();
         expect(result, throwsA(isInstanceOf<UnsupportedError>()));
       } else if (Platform.isAndroid) {
         final List<Directory>? directories =
diff --git a/packages/path_provider/path_provider_windows/CHANGELOG.md b/packages/path_provider/path_provider_windows/CHANGELOG.md
index dfae107..ebf42b7 100644
--- a/packages/path_provider/path_provider_windows/CHANGELOG.md
+++ b/packages/path_provider/path_provider_windows/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.1.2
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 2.1.1
 
 * Updates dependency version of `package:win32` to 2.1.0.
diff --git a/packages/path_provider/path_provider_windows/lib/src/path_provider_windows_real.dart b/packages/path_provider/path_provider_windows/lib/src/path_provider_windows_real.dart
index 6a9c138..691d7a2 100644
--- a/packages/path_provider/path_provider_windows/lib/src/path_provider_windows_real.dart
+++ b/packages/path_provider/path_provider_windows/lib/src/path_provider_windows_real.dart
@@ -161,7 +161,7 @@
         if (hr == E_INVALIDARG || hr == E_FAIL) {
           throw WindowsException(hr);
         }
-        return Future<String?>.value(null);
+        return Future<String?>.value();
       }
 
       final String path = pathPtrPtr.value.toDartString();
diff --git a/packages/path_provider/path_provider_windows/pubspec.yaml b/packages/path_provider/path_provider_windows/pubspec.yaml
index 7ed0117..421a095 100644
--- a/packages/path_provider/path_provider_windows/pubspec.yaml
+++ b/packages/path_provider/path_provider_windows/pubspec.yaml
@@ -2,7 +2,7 @@
 description: Windows implementation of the path_provider plugin
 repository: https://github.com/flutter/plugins/tree/main/packages/path_provider/path_provider_windows
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+path_provider%22
-version: 2.1.1
+version: 2.1.2
 
 environment:
   sdk: ">=2.17.0 <3.0.0"
diff --git a/packages/path_provider/path_provider_windows/test/path_provider_windows_test.dart b/packages/path_provider/path_provider_windows/test/path_provider_windows_test.dart
index 571c314..48e5640 100644
--- a/packages/path_provider/path_provider_windows/test/path_provider_windows_test.dart
+++ b/packages/path_provider/path_provider_windows/test/path_provider_windows_test.dart
@@ -63,7 +63,7 @@
     pathProvider.versionInfoQuerier = FakeVersionInfoQuerier(<String, String>{
       'CompanyName': 'A Company',
       'ProductName': 'Amazing App',
-    }, language: languageEn, encoding: encodingCP1252);
+    }, encoding: encodingCP1252);
     final String? path = await pathProvider.getApplicationSupportPath();
     expect(path, isNotNull);
     if (path != null) {
@@ -77,7 +77,7 @@
     pathProvider.versionInfoQuerier = FakeVersionInfoQuerier(<String, String>{
       'CompanyName': 'A Company',
       'ProductName': 'Amazing App',
-    }, language: languageEn, encoding: encodingUnicode);
+    });
     final String? path = await pathProvider.getApplicationSupportPath();
     expect(path, isNotNull);
     if (path != null) {
diff --git a/packages/url_launcher/url_launcher/CHANGELOG.md b/packages/url_launcher/url_launcher/CHANGELOG.md
index c6e4b9a..39b2e66 100644
--- a/packages/url_launcher/url_launcher/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 6.1.5
 
 * Migrates `README.md` examples to the [`code-excerpt` system](https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#readme-code).
diff --git a/packages/url_launcher/url_launcher/test/src/url_launcher_string_test.dart b/packages/url_launcher/url_launcher/test/src/url_launcher_string_test.dart
index 02c0b22..0dcbc34 100644
--- a/packages/url_launcher/url_launcher/test/src/url_launcher_string_test.dart
+++ b/packages/url_launcher/url_launcher/test/src/url_launcher_string_test.dart
@@ -83,8 +83,7 @@
           webOnlyWindowName: null,
         )
         ..setResponse(true);
-      expect(await launchUrlString(urlString, mode: LaunchMode.platformDefault),
-          isTrue);
+      expect(await launchUrlString(urlString), isTrue);
     });
 
     test('explicit default launch mode with non-web URL', () async {
@@ -100,8 +99,7 @@
           webOnlyWindowName: null,
         )
         ..setResponse(true);
-      expect(await launchUrlString(urlString, mode: LaunchMode.platformDefault),
-          isTrue);
+      expect(await launchUrlString(urlString), isTrue);
     });
 
     test('in-app webview', () async {
@@ -246,7 +244,7 @@
       expect(await launchUrlString(emailLaunchUrlString), isTrue);
     });
 
-    test('allows non-parseable url', () async {
+    test('allows non-parsable url', () async {
       // Not a valid Dart [Uri], but a valid URL on at least some platforms.
       const String urlString =
           'rdp://full%20address=s:mypc:3389&audiomode=i:2&disable%20themes=i:1';
diff --git a/packages/url_launcher/url_launcher/test/src/url_launcher_uri_test.dart b/packages/url_launcher/url_launcher/test/src/url_launcher_uri_test.dart
index e226e59..7685aef 100644
--- a/packages/url_launcher/url_launcher/test/src/url_launcher_uri_test.dart
+++ b/packages/url_launcher/url_launcher/test/src/url_launcher_uri_test.dart
@@ -88,7 +88,7 @@
           webOnlyWindowName: null,
         )
         ..setResponse(true);
-      expect(await launchUrl(url, mode: LaunchMode.platformDefault), isTrue);
+      expect(await launchUrl(url), isTrue);
     });
 
     test('explicit default launch mode with non-web URL', () async {
@@ -104,7 +104,7 @@
           webOnlyWindowName: null,
         )
         ..setResponse(true);
-      expect(await launchUrl(url, mode: LaunchMode.platformDefault), isTrue);
+      expect(await launchUrl(url), isTrue);
     });
 
     test('in-app webview', () async {
diff --git a/packages/video_player/video_player/CHANGELOG.md b/packages/video_player/video_player/CHANGELOG.md
index 2b0ffad..7a667da 100644
--- a/packages/video_player/video_player/CHANGELOG.md
+++ b/packages/video_player/video_player/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.4.6
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 2.4.5
 
 * Ignores unnecessary import warnings in preparation for [upcoming Flutter changes](https://github.com/flutter/flutter/pull/104231).
diff --git a/packages/video_player/video_player/example/integration_test/controller_swap_test.dart b/packages/video_player/video_player/example/integration_test/controller_swap_test.dart
index f80e600..50c81da 100644
--- a/packages/video_player/video_player/example/integration_test/controller_swap_test.dart
+++ b/packages/video_player/video_player/example/integration_test/controller_swap_test.dart
@@ -65,7 +65,7 @@
 
       // Expect that `another` played.
       expect(another.value.position,
-          (Duration position) => position > const Duration(seconds: 0));
+          (Duration position) => position > const Duration());
 
       await expectLater(started.future, completes);
       await expectLater(ended.future, completes);
@@ -76,7 +76,6 @@
 
 Widget renderVideoWidget(VideoPlayerController controller) {
   return Material(
-    elevation: 0,
     child: Directionality(
       textDirection: TextDirection.ltr,
       child: Center(
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 d20f47f..c5e0f3b 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
@@ -49,7 +49,7 @@
       await _controller.initialize();
 
       expect(_controller.value.isInitialized, true);
-      expect(_controller.value.position, const Duration(seconds: 0));
+      expect(_controller.value.position, const Duration());
       expect(_controller.value.isPlaying, false);
       // The WebM version has a slightly different duration than the MP4.
       expect(_controller.value.duration,
@@ -87,7 +87,7 @@
 
         expect(_controller.value.isPlaying, true);
         expect(_controller.value.position,
-            (Duration position) => position > const Duration(seconds: 0));
+            (Duration position) => position > const Duration());
       },
     );
 
@@ -177,7 +177,6 @@
       }
 
       await tester.pumpWidget(Material(
-        elevation: 0,
         child: Directionality(
           textDirection: TextDirection.ltr,
           child: Center(
@@ -265,7 +264,7 @@
 
         expect(_controller.value.isPlaying, false);
         expect(_controller.value.position,
-            (Duration position) => position > const Duration(seconds: 0));
+            (Duration position) => position > const Duration());
 
         await expectLater(started.future, completes);
         await expectLater(ended.future, completes);
@@ -285,9 +284,9 @@
       await _controller.initialize();
 
       expect(_controller.value.isInitialized, true);
-      expect(_controller.value.position, const Duration(seconds: 0));
+      expect(_controller.value.position, const Duration());
       expect(_controller.value.isPlaying, false);
-      // Due to the duration calculation accurancy between platforms,
+      // 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(
@@ -308,7 +307,7 @@
       expect(_controller.value.isPlaying, true);
       expect(
         _controller.value.position,
-        (Duration position) => position > const Duration(milliseconds: 0),
+        (Duration position) => position > const Duration(),
       );
     });
 
diff --git a/packages/video_player/video_player/example/lib/main.dart b/packages/video_player/video_player/example/lib/main.dart
index 63afc4a..c3bed94 100644
--- a/packages/video_player/video_player/example/lib/main.dart
+++ b/packages/video_player/video_player/example/lib/main.dart
@@ -273,7 +273,7 @@
     Duration(seconds: -3),
     Duration(seconds: -1, milliseconds: -500),
     Duration(milliseconds: -250),
-    Duration(milliseconds: 0),
+    Duration(),
     Duration(milliseconds: 250),
     Duration(seconds: 1, milliseconds: 500),
     Duration(seconds: 3),
@@ -419,7 +419,6 @@
   @override
   Widget build(BuildContext context) {
     return Material(
-      elevation: 0,
       child: Center(
         child: FutureBuilder<bool>(
           future: started(),
diff --git a/packages/video_player/video_player/lib/video_player.dart b/packages/video_player/video_player/lib/video_player.dart
index 96aa881..fdda3dc 100644
--- a/packages/video_player/video_player/lib/video_player.dart
+++ b/packages/video_player/video_player/lib/video_player.dart
@@ -799,7 +799,7 @@
 /// Used to configure the [VideoProgressIndicator] widget's colors for how it
 /// describes the video's status.
 ///
-/// The widget uses default colors that are customizeable through this class.
+/// The widget uses default colors that are customizable through this class.
 class VideoProgressColors {
   /// Any property can be set to any color. They each have defaults.
   ///
@@ -1005,7 +1005,6 @@
       );
     } else {
       progressIndicator = LinearProgressIndicator(
-        value: null,
         valueColor: AlwaysStoppedAnimation<Color>(colors.playedColor),
         backgroundColor: colors.backgroundColor,
       );
diff --git a/packages/video_player/video_player/pubspec.yaml b/packages/video_player/video_player/pubspec.yaml
index bb0e8a8..c9d5fc5 100644
--- a/packages/video_player/video_player/pubspec.yaml
+++ b/packages/video_player/video_player/pubspec.yaml
@@ -3,7 +3,7 @@
   widgets on Android, iOS, and web.
 repository: https://github.com/flutter/plugins/tree/main/packages/video_player/video_player
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22
-version: 2.4.5
+version: 2.4.6
 
 environment:
   sdk: ">=2.14.0 <3.0.0"
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 7837a0b..97f39af 100644
--- a/packages/video_player/video_player/test/video_player_test.dart
+++ b/packages/video_player/video_player/test/video_player_test.dart
@@ -175,8 +175,8 @@
 
   testWidgets('no transform when rotationCorrection is zero',
       (WidgetTester tester) async {
-    final FakeController controller = FakeController.value(
-        VideoPlayerValue(duration: Duration.zero, rotationCorrection: 0));
+    final FakeController controller =
+        FakeController.value(VideoPlayerValue(duration: Duration.zero));
     controller.textureId = 1;
     await tester.pumpWidget(VideoPlayer(controller));
     expect(find.byType(Transform), findsNothing);
@@ -209,8 +209,7 @@
     });
 
     testWidgets('handles null text', (WidgetTester tester) async {
-      await tester
-          .pumpWidget(const MaterialApp(home: ClosedCaption(text: null)));
+      await tester.pumpWidget(const MaterialApp(home: ClosedCaption()));
       expect(find.byType(Text), findsNothing);
     });
 
@@ -373,7 +372,7 @@
       );
       expect(
           controller.textureId, VideoPlayerController.kUninitializedTextureId);
-      expect(await controller.position, const Duration(seconds: 0));
+      expect(await controller.position, const Duration());
       await controller.initialize();
 
       await controller.dispose();
@@ -471,7 +470,7 @@
           'https://127.0.0.1',
         );
         await controller.initialize();
-        expect(await controller.position, const Duration(seconds: 0));
+        expect(await controller.position, const Duration());
 
         await controller.seekTo(const Duration(milliseconds: 500));
 
@@ -494,13 +493,13 @@
           'https://127.0.0.1',
         );
         await controller.initialize();
-        expect(await controller.position, const Duration(seconds: 0));
+        expect(await controller.position, const Duration());
 
         await controller.seekTo(const Duration(seconds: 100));
         expect(await controller.position, const Duration(seconds: 1));
 
         await controller.seekTo(const Duration(seconds: -100));
-        expect(await controller.position, const Duration(seconds: 0));
+        expect(await controller.position, const Duration());
       });
     });
 
@@ -720,7 +719,7 @@
         expect(controller.value.caption.text, 'one');
       });
 
-      test('setClosedCapitonFile loads caption file', () async {
+      test('setClosedCaptionFile loads caption file', () async {
         final VideoPlayerController controller = VideoPlayerController.network(
           'https://127.0.0.1',
         );
@@ -735,7 +734,7 @@
         );
       });
 
-      test('setClosedCapitonFile removes/changes caption file', () async {
+      test('setClosedCaptionFile removes/changes caption file', () async {
         final VideoPlayerController controller = VideoPlayerController.network(
           'https://127.0.0.1',
           closedCaptionFile: _loadClosedCaption(),
@@ -789,7 +788,7 @@
         await tester.pumpAndSettle();
         expect(controller.value.isBuffering, isTrue);
 
-        const Duration bufferStart = Duration(seconds: 0);
+        const Duration bufferStart = Duration();
         const Duration bufferEnd = Duration(milliseconds: 500);
         fakeVideoEventStream.add(VideoEvent(
             eventType: VideoEventType.bufferingUpdate,
@@ -884,7 +883,7 @@
           text: 'foo', number: 0, start: Duration.zero, end: Duration.zero);
       const Duration captionOffset = Duration(milliseconds: 250);
       final List<DurationRange> buffered = <DurationRange>[
-        DurationRange(const Duration(seconds: 0), const Duration(seconds: 4))
+        DurationRange(const Duration(), const Duration(seconds: 4))
       ];
       const bool isInitialized = true;
       const bool isPlaying = true;
@@ -1035,9 +1034,7 @@
     test('false allowBackgroundPlayback pauses playback', () async {
       final VideoPlayerController controller = VideoPlayerController.file(
         File(''),
-        videoPlayerOptions: VideoPlayerOptions(
-          allowBackgroundPlayback: false,
-        ),
+        videoPlayerOptions: VideoPlayerOptions(),
       );
       await controller.initialize();
       await controller.play();
@@ -1121,7 +1118,7 @@
   @override
   Future<Duration> getPosition(int textureId) async {
     calls.add('position');
-    return _positions[textureId] ?? const Duration(seconds: 0);
+    return _positions[textureId] ?? const Duration();
   }
 
   @override
diff --git a/packages/video_player/video_player/test/web_vtt_test.dart b/packages/video_player/video_player/test/web_vtt_test.dart
index bde6292..b7a7bb5 100644
--- a/packages/video_player/video_player/test/web_vtt_test.dart
+++ b/packages/video_player/video_player/test/web_vtt_test.dart
@@ -38,8 +38,7 @@
 
       expect(parsedFile.captions[0].start,
           const Duration(seconds: 5, milliseconds: 200));
-      expect(parsedFile.captions[0].end,
-          const Duration(seconds: 6, milliseconds: 000));
+      expect(parsedFile.captions[0].end, const Duration(seconds: 6));
       expect(parsedFile.captions[0].text,
           "You know I'm so excited my glasses are falling off here.");
     });
@@ -106,7 +105,7 @@
     final Caption firstCaption = parsedFile.captions.single;
     expect(firstCaption.number, 1);
     expect(firstCaption.start, const Duration(seconds: 13));
-    expect(firstCaption.end, const Duration(seconds: 16, milliseconds: 0));
+    expect(firstCaption.end, const Duration(seconds: 16));
     expect(firstCaption.text, 'Valid');
   });
 }
diff --git a/packages/video_player/video_player_android/CHANGELOG.md b/packages/video_player/video_player_android/CHANGELOG.md
index fb34655..8c26cf7 100644
--- a/packages/video_player/video_player_android/CHANGELOG.md
+++ b/packages/video_player/video_player_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 2.3.8
 
 * Updates ExoPlayer to 2.18.0.
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 77a618b..5cdab24 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
@@ -57,7 +57,7 @@
       await _controller.initialize();
 
       expect(_controller.value.isInitialized, true);
-      expect(await _controller.position, const Duration(seconds: 0));
+      expect(await _controller.position, const Duration());
       expect(_controller.value.duration,
           const Duration(seconds: 7, milliseconds: 540));
     });
@@ -68,8 +68,7 @@
       await _controller.play();
       await tester.pumpAndSettle(_playDuration);
 
-      expect(
-          await _controller.position, greaterThan(const Duration(seconds: 0)));
+      expect(await _controller.position, greaterThan(const Duration()));
     });
 
     testWidgets('can seek', (WidgetTester tester) async {
@@ -117,8 +116,7 @@
       await _controller.play();
       await tester.pumpAndSettle(_playDuration);
 
-      expect(
-          await _controller.position, greaterThan(const Duration(seconds: 0)));
+      expect(await _controller.position, greaterThan(const Duration()));
     });
   });
 
@@ -149,8 +147,7 @@
       await tester.pumpAndSettle(_playDuration);
       await _controller.pause();
 
-      expect(
-          await _controller.position, greaterThan(const Duration(seconds: 0)));
+      expect(await _controller.position, greaterThan(const Duration()));
 
       await expectLater(started.future, completes);
       await expectLater(ended.future, completes);
diff --git a/packages/video_player/video_player_android/example/lib/mini_controller.dart b/packages/video_player/video_player_android/example/lib/mini_controller.dart
index 5bce311..bba3fad 100644
--- a/packages/video_player/video_player_android/example/lib/mini_controller.dart
+++ b/packages/video_player/video_player_android/example/lib/mini_controller.dart
@@ -521,7 +521,6 @@
       );
     } else {
       progressIndicator = const LinearProgressIndicator(
-        value: null,
         valueColor: AlwaysStoppedAnimation<Color>(playedColor),
         backgroundColor: backgroundColor,
       );
diff --git a/packages/video_player/video_player_android/test/android_video_player_test.dart b/packages/video_player/video_player_android/test/android_video_player_test.dart
index a0512a1..e81c3e8 100644
--- a/packages/video_player/video_player_android/test/android_video_player_test.dart
+++ b/packages/video_player/video_player_android/test/android_video_player_test.dart
@@ -341,7 +341,7 @@
                 eventType: VideoEventType.bufferingUpdate,
                 buffered: <DurationRange>[
                   DurationRange(
-                    const Duration(milliseconds: 0),
+                    const Duration(),
                     const Duration(milliseconds: 1234),
                   ),
                   DurationRange(
diff --git a/packages/video_player/video_player_avfoundation/CHANGELOG.md b/packages/video_player/video_player_avfoundation/CHANGELOG.md
index bb5c940..0345913 100644
--- a/packages/video_player/video_player_avfoundation/CHANGELOG.md
+++ b/packages/video_player/video_player_avfoundation/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* 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/106316).
 
 ## 2.3.5
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 528723d..1de77a3 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
@@ -57,7 +57,7 @@
       await _controller.initialize();
 
       expect(_controller.value.isInitialized, true);
-      expect(await _controller.position, const Duration(seconds: 0));
+      expect(await _controller.position, const Duration());
       expect(_controller.value.duration,
           const Duration(seconds: 7, milliseconds: 540));
     });
@@ -68,8 +68,7 @@
       await _controller.play();
       await tester.pumpAndSettle(_playDuration);
 
-      expect(
-          await _controller.position, greaterThan(const Duration(seconds: 0)));
+      expect(await _controller.position, greaterThan(const Duration()));
     });
 
     testWidgets('can seek', (WidgetTester tester) async {
@@ -123,8 +122,7 @@
       await _controller.play();
       await tester.pumpAndSettle(_playDuration);
 
-      expect(
-          await _controller.position, greaterThan(const Duration(seconds: 0)));
+      expect(await _controller.position, greaterThan(const Duration()));
     });
   });
 
@@ -158,8 +156,7 @@
       // 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(const Duration(seconds: 0)));
+      expect(_controller.value.position, greaterThan(const Duration()));
 
       await expectLater(started.future, completes);
       await expectLater(ended.future, completes);
diff --git a/packages/video_player/video_player_avfoundation/example/lib/mini_controller.dart b/packages/video_player/video_player_avfoundation/example/lib/mini_controller.dart
index 5bce311..bba3fad 100644
--- a/packages/video_player/video_player_avfoundation/example/lib/mini_controller.dart
+++ b/packages/video_player/video_player_avfoundation/example/lib/mini_controller.dart
@@ -521,7 +521,6 @@
       );
     } else {
       progressIndicator = const LinearProgressIndicator(
-        value: null,
         valueColor: AlwaysStoppedAnimation<Color>(playedColor),
         backgroundColor: backgroundColor,
       );
diff --git a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart
index 1e6b024..e424aa7 100644
--- a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart
+++ b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart
@@ -320,7 +320,7 @@
                 eventType: VideoEventType.bufferingUpdate,
                 buffered: <DurationRange>[
                   DurationRange(
-                    const Duration(milliseconds: 0),
+                    const Duration(),
                     const Duration(milliseconds: 1234),
                   ),
                   DurationRange(
diff --git a/packages/video_player/video_player_platform_interface/CHANGELOG.md b/packages/video_player/video_player_platform_interface/CHANGELOG.md
index cf5d016..f7a670a 100644
--- a/packages/video_player/video_player_platform_interface/CHANGELOG.md
+++ b/packages/video_player/video_player_platform_interface/CHANGELOG.md
@@ -1,5 +1,6 @@
-## NEXT
+## 5.1.4
 
+* 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/106316).
 
 ## 5.1.3
diff --git a/packages/video_player/video_player_platform_interface/lib/messages.dart b/packages/video_player/video_player_platform_interface/lib/messages.g.dart
similarity index 100%
rename from packages/video_player/video_player_platform_interface/lib/messages.dart
rename to packages/video_player/video_player_platform_interface/lib/messages.g.dart
diff --git a/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart b/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart
index be264ca..0c2b4b8 100644
--- a/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart
+++ b/packages/video_player/video_player_platform_interface/lib/method_channel_video_player.dart
@@ -7,7 +7,7 @@
 import 'package:flutter/services.dart';
 import 'package:flutter/widgets.dart';
 
-import 'messages.dart';
+import 'messages.g.dart';
 import 'video_player_platform_interface.dart';
 
 /// An implementation of [VideoPlayerPlatform] that uses method channels.
diff --git a/packages/video_player/video_player_platform_interface/pigeons/messages.dart b/packages/video_player/video_player_platform_interface/pigeons/messages.dart
index 144edb6..7a3490a 100644
--- a/packages/video_player/video_player_platform_interface/pigeons/messages.dart
+++ b/packages/video_player/video_player_platform_interface/pigeons/messages.dart
@@ -58,6 +58,6 @@
 }
 
 void configurePigeon(PigeonOptions opts) {
-  opts.dartOut = 'lib/messages.dart';
+  opts.dartOut = 'lib/messages.g.dart';
   opts.dartTestOut = 'test/test.dart';
 }
diff --git a/packages/video_player/video_player_platform_interface/pubspec.yaml b/packages/video_player/video_player_platform_interface/pubspec.yaml
index 8644c45..365709a 100644
--- a/packages/video_player/video_player_platform_interface/pubspec.yaml
+++ b/packages/video_player/video_player_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+video_player%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: 5.1.3
+version: 5.1.4
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart b/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart
index 924dd08..b894144 100644
--- a/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart
+++ b/packages/video_player/video_player_platform_interface/test/method_channel_video_player_test.dart
@@ -8,7 +8,7 @@
 
 import 'package:flutter/services.dart';
 import 'package:flutter_test/flutter_test.dart';
-import 'package:video_player_platform_interface/messages.dart';
+import 'package:video_player_platform_interface/messages.g.dart';
 import 'package:video_player_platform_interface/method_channel_video_player.dart';
 import 'package:video_player_platform_interface/video_player_platform_interface.dart';
 
@@ -345,7 +345,7 @@
                 eventType: VideoEventType.bufferingUpdate,
                 buffered: <DurationRange>[
                   DurationRange(
-                    const Duration(milliseconds: 0),
+                    const Duration(),
                     const Duration(milliseconds: 1234),
                   ),
                   DurationRange(
diff --git a/packages/video_player/video_player_platform_interface/test/test.dart b/packages/video_player/video_player_platform_interface/test/test.dart
index a12ae45..c696434 100644
--- a/packages/video_player/video_player_platform_interface/test/test.dart
+++ b/packages/video_player/video_player_platform_interface/test/test.dart
@@ -10,7 +10,7 @@
 import 'dart:typed_data' show Uint8List, Int32List, Int64List, Float64List;
 import 'package:flutter/services.dart';
 import 'package:flutter_test/flutter_test.dart';
-import 'package:video_player_platform_interface/messages.dart';
+import 'package:video_player_platform_interface/messages.g.dart';
 
 abstract class TestHostVideoPlayerApi {
   void initialize();
diff --git a/packages/webview_flutter/webview_flutter/CHANGELOG.md b/packages/webview_flutter/webview_flutter/CHANGELOG.md
index 98ce9d2..50e3a05 100644
--- a/packages/webview_flutter/webview_flutter/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* 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).
 * Updates references to the obsolete master branch.
 
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 1754890..f080dae 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
@@ -401,8 +401,6 @@
             onPageFinished: (String url) {
               pageLoaded.complete(null);
             },
-            initialMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
           ),
         ),
       );
@@ -460,8 +458,6 @@
             onPageFinished: (String url) {
               pageLoaded.complete(null);
             },
-            initialMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
           ),
         ),
       );
@@ -558,7 +554,6 @@
               pageLoaded.complete(null);
             },
             initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
-            allowsInlineMediaPlayback: false,
           ),
         ),
       );
@@ -663,8 +658,6 @@
             onPageFinished: (String url) {
               pageLoaded.complete(null);
             },
-            initialMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
           ),
         ),
       );
@@ -677,7 +670,7 @@
       expect(isPaused, _webviewBool(true));
     });
 
-    testWidgets('Changes to initialMediaPlaybackPolocy are ignored',
+    testWidgets('Changes to initialMediaPlaybackPolicy are ignored',
         (WidgetTester tester) async {
       final Completer<WebViewController> controllerCompleter =
           Completer<WebViewController>();
@@ -732,8 +725,6 @@
             onPageFinished: (String url) {
               pageLoaded.complete(null);
             },
-            initialMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
           ),
         ),
       );
@@ -876,7 +867,7 @@
     }, skip: Platform.isAndroid && _skipDueToIssue86757);
   });
 
-  // Minimial end-to-end testing of the legacy Android implementation.
+  // Minimal end-to-end testing of the legacy Android implementation.
   group('AndroidWebView (virtual display)', () {
     setUpAll(() {
       WebView.platform = AndroidWebView();
diff --git a/packages/webview_flutter/webview_flutter/test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/test/webview_flutter_test.dart
index d718991..b10366c 100644
--- a/packages/webview_flutter/webview_flutter/test/webview_flutter_test.dart
+++ b/packages/webview_flutter/webview_flutter/test/webview_flutter_test.dart
@@ -85,9 +85,7 @@
       JavascriptMode.unrestricted,
     );
 
-    await tester.pumpWidget(const WebView(
-      javascriptMode: JavascriptMode.disabled,
-    ));
+    await tester.pumpWidget(const WebView());
 
     final CreationParams disabledparams = captureBuildArgs(
       mockWebViewPlatform,
@@ -455,7 +453,6 @@
     await tester.pumpWidget(
       WebView(
         initialUrl: 'https://flutter.io',
-        javascriptMode: JavascriptMode.disabled,
         onWebViewCreated: (WebViewController webViewController) {
           controller = webViewController;
         },
@@ -489,7 +486,6 @@
     await tester.pumpWidget(
       WebView(
         initialUrl: 'https://flutter.io',
-        javascriptMode: JavascriptMode.disabled,
         onWebViewCreated: (WebViewController webViewController) {
           controller = webViewController;
         },
@@ -527,7 +523,6 @@
     await tester.pumpWidget(
       WebView(
         initialUrl: 'https://flutter.io',
-        javascriptMode: JavascriptMode.disabled,
         onWebViewCreated: (WebViewController webViewController) {
           controller = webViewController;
         },
@@ -757,7 +752,6 @@
     testWidgets('onPageStarted is null', (WidgetTester tester) async {
       await tester.pumpWidget(const WebView(
         initialUrl: 'https://youtube.com',
-        onPageStarted: null,
       ));
 
       final WebViewPlatformCallbacksHandler handler = captureBuildArgs(
@@ -818,7 +812,6 @@
     testWidgets('onPageFinished is null', (WidgetTester tester) async {
       await tester.pumpWidget(const WebView(
         initialUrl: 'https://youtube.com',
-        onPageFinished: null,
       ));
 
       final WebViewPlatformCallbacksHandler handler = captureBuildArgs(
@@ -878,7 +871,6 @@
     testWidgets('onLoadingProgress is null', (WidgetTester tester) async {
       await tester.pumpWidget(const WebView(
         initialUrl: 'https://youtube.com',
-        onProgress: null,
       ));
 
       final WebViewPlatformCallbacksHandler handler = captureBuildArgs(
@@ -1033,7 +1025,6 @@
 
       await tester.pumpWidget(WebView(
         key: key,
-        debuggingEnabled: false,
       ));
 
       final WebSettings disabledSettings =
@@ -1046,9 +1037,7 @@
 
   group('zoomEnabled', () {
     testWidgets('Enable zoom', (WidgetTester tester) async {
-      await tester.pumpWidget(const WebView(
-        zoomEnabled: true,
-      ));
+      await tester.pumpWidget(const WebView());
 
       final CreationParams params = captureBuildArgs(
         mockWebViewPlatform,
@@ -1075,7 +1064,6 @@
 
       await tester.pumpWidget(WebView(
         key: key,
-        zoomEnabled: true,
       ));
 
       final WebSettings enabledSettings =
diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
index dc9850e..79231b0 100644
--- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 2.9.3
 
 * Updates the Dart InstanceManager to take a listener for when an object is garbage collected.
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 c5bf76d..8cad944 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
@@ -406,8 +406,6 @@
             onPageFinished: (String url) {
               pageLoaded.complete(null);
             },
-            initialMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
           ),
         ),
       );
@@ -465,8 +463,6 @@
             onPageFinished: (String url) {
               pageLoaded.complete(null);
             },
-            initialMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
           ),
         ),
       );
@@ -616,8 +612,6 @@
             onPageFinished: (String url) {
               pageLoaded.complete(null);
             },
-            initialMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
           ),
         ),
       );
@@ -630,7 +624,7 @@
       expect(isPaused, _webviewBool(true));
     });
 
-    testWidgets('Changes to initialMediaPlaybackPolocy are ignored',
+    testWidgets('Changes to initialMediaPlaybackPolicy are ignored',
         (WidgetTester tester) async {
       final Completer<WebViewController> controllerCompleter =
           Completer<WebViewController>();
@@ -685,8 +679,6 @@
             onPageFinished: (String url) {
               pageLoaded.complete(null);
             },
-            initialMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
           ),
         ),
       );
diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.dart
index 9d479e6..fdb98fc 100644
--- a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.dart
@@ -81,7 +81,7 @@
       });
 
       test('loadData with null values', () {
-        webView.loadData(data: 'hello', mimeType: null, encoding: null);
+        webView.loadData(data: 'hello');
         verify(mockPlatformHostApi.loadData(
           webViewInstanceId,
           'hello',
diff --git a/packages/webview_flutter/webview_flutter_android/test/webview_android_widget_test.dart b/packages/webview_flutter/webview_flutter_android/test/webview_android_widget_test.dart
index 2fa75af..73076d9 100644
--- a/packages/webview_flutter/webview_flutter_android/test/webview_android_widget_test.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/webview_android_widget_test.dart
@@ -165,8 +165,6 @@
         await buildWidget(
           tester,
           creationParams: CreationParams(
-            autoMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
             webSettings: WebSettings(
               userAgent: const WebSetting<String?>.absent(),
               hasNavigationDelegate: false,
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
index 565bfee..353e679 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* 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/106316).
 
 ## 1.9.1
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/src/method_channel/webview_method_channel_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/src/method_channel/webview_method_channel_test.dart
index 8b9a4ce..ea9eb92 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/src/method_channel/webview_method_channel_test.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/src/method_channel/webview_method_channel_test.dart
@@ -39,14 +39,11 @@
         case 'loadFile':
           if (methodCall.arguments == 'invalid file') {
             throw PlatformException(
-                code: 'loadFile_failed',
-                message: 'Failed loading file.',
-                details: null);
+                code: 'loadFile_failed', message: 'Failed loading file.');
           } else if (methodCall.arguments == 'some error') {
             throw PlatformException(
               code: 'some_error',
               message: 'Some error occurred.',
-              details: null,
             );
           }
           return null;
@@ -55,13 +52,11 @@
             throw PlatformException(
               code: 'loadFlutterAsset_invalidKey',
               message: 'Failed loading asset.',
-              details: null,
             );
           } else if (methodCall.arguments == 'some error') {
             throw PlatformException(
               code: 'some_error',
               message: 'Some error occurred.',
-              details: null,
             );
           }
           return null;
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
index a533ce6..fff0110 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Fixes avoid_redundant_argument_values lint warnings and minor typos.
+
 ## 2.9.3
 
 * Updates `webview_flutter_platform_interface` constraint to the correct minimum
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 1119f74..363d046 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
@@ -411,8 +411,6 @@
             onPageFinished: (String url) {
               pageLoaded.complete(null);
             },
-            initialMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
           ),
         ),
       );
@@ -470,8 +468,6 @@
             onPageFinished: (String url) {
               pageLoaded.complete(null);
             },
-            initialMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
           ),
         ),
       );
@@ -567,7 +563,6 @@
               pageLoaded.complete(null);
             },
             initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
-            allowsInlineMediaPlayback: false,
           ),
         ),
       );
@@ -672,8 +667,6 @@
             onPageFinished: (String url) {
               pageLoaded.complete(null);
             },
-            initialMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
           ),
         ),
       );
@@ -686,7 +679,7 @@
       expect(isPaused, _webviewBool(true));
     });
 
-    testWidgets('Changes to initialMediaPlaybackPolocy are ignored',
+    testWidgets('Changes to initialMediaPlaybackPolicy are ignored',
         (WidgetTester tester) async {
       final Completer<WebViewController> controllerCompleter =
           Completer<WebViewController>();
@@ -741,8 +734,6 @@
             onPageFinished: (String url) {
               pageLoaded.complete(null);
             },
-            initialMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
           ),
         ),
       );
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit_webview_widget_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit_webview_widget_test.dart
index c6d90d0..5e6186c 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit_webview_widget_test.dart
+++ b/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit_webview_widget_test.dart
@@ -212,8 +212,6 @@
         await buildWidget(
           tester,
           creationParams: CreationParams(
-            autoMediaPlaybackPolicy:
-                AutoMediaPlaybackPolicy.require_user_action_for_all_media_types,
             webSettings: WebSettings(
               userAgent: const WebSetting<String?>.absent(),
               hasNavigationDelegate: false,
@@ -737,7 +735,7 @@
         await buildWidget(tester);
 
         when(mockWebView.evaluateJavaScript('runJavaScript')).thenAnswer(
-          (_) => Future<String?>.value(null),
+          (_) => Future<String?>.value(),
         );
         expect(
           () => testController.runJavascriptReturningResult('runJavaScript'),
@@ -1217,7 +1215,7 @@
 
       testWidgets('progress observer is not removed without being set first',
           (WidgetTester tester) async {
-        await buildWidget(tester, hasProgressTracking: false);
+        await buildWidget(tester);
 
         verifyNever(mockWebView.removeObserver(
           mockWebView,
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/v4/webkit_webview_controller_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/v4/webkit_webview_controller_test.dart
index cf5da17..71bda57 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/test/v4/webkit_webview_controller_test.dart
+++ b/packages/webview_flutter/webview_flutter_wkwebview/test/v4/webkit_webview_controller_test.dart
@@ -346,7 +346,7 @@
       );
 
       when(mockWebView.evaluateJavaScript('runJavaScript')).thenAnswer(
-        (_) => Future<String?>.value(null),
+        (_) => Future<String?>.value(),
       );
       expect(
         () => controller.runJavaScriptReturningResult('runJavaScript'),
diff --git a/script/tool/lib/src/common/plugin_command.dart b/script/tool/lib/src/common/plugin_command.dart
index be9fb23..843768f 100644
--- a/script/tool/lib/src/common/plugin_command.dart
+++ b/script/tool/lib/src/common/plugin_command.dart
@@ -44,7 +44,6 @@
   }) : _gitDir = gitDir {
     argParser.addMultiOption(
       _packagesArg,
-      splitCommas: true,
       help:
           'Specifies which packages the command should run on (before sharding).\n',
       valueHelp: 'package1,package2,...',
diff --git a/script/tool/lib/src/firebase_test_lab_command.dart b/script/tool/lib/src/firebase_test_lab_command.dart
index 832870e..4fc19e3 100644
--- a/script/tool/lib/src/firebase_test_lab_command.dart
+++ b/script/tool/lib/src/firebase_test_lab_command.dart
@@ -335,7 +335,7 @@
     }
 
     yield* integrationTestDir
-        .listSync(recursive: true, followLinks: true)
+        .listSync(recursive: true)
         .where((FileSystemEntity file) =>
             file is File && file.basename.endsWith('_test.dart'))
         .cast<File>();
diff --git a/script/tool/lib/src/lint_android_command.dart b/script/tool/lib/src/lint_android_command.dart
index 8ba1d64..607674c 100644
--- a/script/tool/lib/src/lint_android_command.dart
+++ b/script/tool/lib/src/lint_android_command.dart
@@ -35,7 +35,7 @@
     if (!pluginSupportsPlatform(platformAndroid, package,
         requiredMode: PlatformSupport.inline)) {
       return PackageResult.skip(
-          'Plugin does not have an Android implemenatation.');
+          'Plugin does not have an Android implementation.');
     }
 
     bool failed = false;
diff --git a/script/tool/lib/src/publish_check_command.dart b/script/tool/lib/src/publish_check_command.dart
index af8eac2..d98a286 100644
--- a/script/tool/lib/src/publish_check_command.dart
+++ b/script/tool/lib/src/publish_check_command.dart
@@ -33,16 +33,13 @@
       help: 'Allows the pre-release SDK warning to pass.\n'
           'When enabled, a pub warning, which asks to publish the package as a pre-release version when '
           'the SDK constraint is a pre-release version, is ignored.',
-      defaultsTo: false,
     );
     argParser.addFlag(_machineFlag,
         help: 'Switch outputs to a machine readable JSON. \n'
             'The JSON contains a "status" field indicating the final status of the command, the possible values are:\n'
             '    $_statusNeedsPublish: There is at least one package need to be published. They also passed all publish checks.\n'
             '    $_statusMessageNoPublish: There are no packages needs to be published. Either no pubspec change detected or all versions have already been published.\n'
-            '    $_statusMessageError: Some error has occurred.',
-        defaultsTo: false,
-        negatable: true);
+            '    $_statusMessageError: Some error has occurred.');
   }
 
   static const String _allowPrereleaseFlag = 'allow-pre-release';
diff --git a/script/tool/lib/src/publish_plugin_command.dart b/script/tool/lib/src/publish_plugin_command.dart
index 7aa70bd..cae8eda 100644
--- a/script/tool/lib/src/publish_plugin_command.dart
+++ b/script/tool/lib/src/publish_plugin_command.dart
@@ -74,7 +74,6 @@
       help:
           'Release all packages that contains pubspec changes at the current commit compares to the base-sha.\n'
           'The --packages option is ignored if this is on.',
-      defaultsTo: false,
     );
     argParser.addFlag(
       _dryRunFlag,
@@ -82,14 +81,10 @@
           'Skips the real `pub publish` and `git tag` commands and assumes both commands are successful.\n'
           'This does not run `pub publish --dry-run`.\n'
           'If you want to run the command with `pub publish --dry-run`, use `pub-publish-flags=--dry-run`',
-      defaultsTo: false,
-      negatable: true,
     );
     argParser.addFlag(_skipConfirmationFlag,
         help: 'Run the command without asking for Y/N inputs.\n'
-            'This command will add a `--force` flag to the `pub publish` command if it is not added with $_pubFlagsOption\n',
-        defaultsTo: false,
-        negatable: true);
+            'This command will add a `--force` flag to the `pub publish` command if it is not added with $_pubFlagsOption\n');
   }
 
   static const String _pubFlagsOption = 'pub-publish-flags';
diff --git a/script/tool/lib/src/version_check_command.dart b/script/tool/lib/src/version_check_command.dart
index d5e9675..2e5f1ef 100644
--- a/script/tool/lib/src/version_check_command.dart
+++ b/script/tool/lib/src/version_check_command.dart
@@ -115,8 +115,6 @@
       help: 'Whether the version check should run against the version on pub.\n'
           'Defaults to false, which means the version check only run against '
           'the previous version in code.',
-      defaultsTo: false,
-      negatable: true,
     );
     argParser.addOption(_changeDescriptionFile,
         help: 'The path to a file containing the description of the change '
diff --git a/script/tool/test/build_examples_command_test.dart b/script/tool/test/build_examples_command_test.dart
index 420b3b1..a819e7a 100644
--- a/script/tool/test/build_examples_command_test.dart
+++ b/script/tool/test/build_examples_command_test.dart
@@ -504,7 +504,7 @@
       });
 
       test('skips non-Flutter examples', () async {
-        createFakePackage('package', packagesDir, isFlutter: false);
+        createFakePackage('package', packagesDir);
 
         final List<String> output = await runCapturingPrint(
             runner, <String>['build-examples', '--ios']);
diff --git a/script/tool/test/common/file_utils_test.dart b/script/tool/test/common/file_utils_test.dart
index e398684..79b804e 100644
--- a/script/tool/test/common/file_utils_test.dart
+++ b/script/tool/test/common/file_utils_test.dart
@@ -10,7 +10,7 @@
 void main() {
   test('works on Posix', () async {
     final FileSystem fileSystem =
-        MemoryFileSystem(style: FileSystemStyle.posix);
+        MemoryFileSystem();
 
     final Directory base = fileSystem.directory('/').childDirectory('base');
     final File file =
diff --git a/script/tool/test/common/package_looping_command_test.dart b/script/tool/test/common/package_looping_command_test.dart
index ec2b9b9..7e9f63c 100644
--- a/script/tool/test/common/package_looping_command_test.dart
+++ b/script/tool/test/common/package_looping_command_test.dart
@@ -373,11 +373,9 @@
 
     test('skips unsupported Dart versions when requested', () async {
       final RepositoryPackage excluded = createFakePackage(
-          'excluded_package', packagesDir,
-          isFlutter: false, dartConstraint: '>=2.17.0 <3.0.0');
+          'excluded_package', packagesDir, dartConstraint: '>=2.17.0 <3.0.0');
       final RepositoryPackage included = createFakePackage(
-          'a_package', packagesDir,
-          isFlutter: false, dartConstraint: '>=2.14.0 <3.0.0');
+          'a_package', packagesDir);
 
       final TestPackageLoopingCommand command = createTestCommand(
           packageLoopingType: PackageLoopingType.includeAllSubpackages,
@@ -409,7 +407,7 @@
       createFakePackage('package_b', packagesDir);
 
       final TestPackageLoopingCommand command =
-          createTestCommand(hasLongOutput: true);
+          createTestCommand();
       final List<String> output = await runCommand(command);
 
       const String separator =
@@ -443,7 +441,7 @@
       createFakePackage('package_b', packagesDir);
 
       final TestPackageLoopingCommand command =
-          createTestCommand(hasLongOutput: true);
+          createTestCommand();
       final List<String> output =
           await runCommand(command, arguments: <String>['--log-timing']);
 
@@ -595,7 +593,7 @@
       createFakePackage('package_b', packagesDir);
 
       final TestPackageLoopingCommand command =
-          createTestCommand(hasLongOutput: true, captureOutput: true);
+          createTestCommand(captureOutput: true);
       final List<String> output = await runCommand(command);
 
       expect(output, isEmpty);
@@ -786,7 +784,7 @@
       createFakePackage('package_f', packagesDir);
 
       final TestPackageLoopingCommand command =
-          createTestCommand(hasLongOutput: true);
+          createTestCommand();
       final List<String> output = await runCommand(command);
 
       expect(
@@ -812,7 +810,7 @@
       createFakePackage('package_a', packagesDir);
 
       final TestPackageLoopingCommand command =
-          createTestCommand(hasLongOutput: true);
+          createTestCommand();
       final List<String> output =
           await runCommand(command, arguments: <String>['--exclude=package_a']);
 
diff --git a/script/tool/test/common/plugin_utils_test.dart b/script/tool/test/common/plugin_utils_test.dart
index 9c5ddc3..415b1db 100644
--- a/script/tool/test/common/plugin_utils_test.dart
+++ b/script/tool/test/common/plugin_utils_test.dart
@@ -223,12 +223,9 @@
         'plugin',
         packagesDir,
         platformSupport: <String, PlatformDetails>{
-          platformLinux: const PlatformDetails(PlatformSupport.inline,
-              hasNativeCode: true, hasDartCode: true),
-          platformMacOS: const PlatformDetails(PlatformSupport.inline,
-              hasNativeCode: true, hasDartCode: true),
-          platformWindows: const PlatformDetails(PlatformSupport.inline,
-              hasNativeCode: true, hasDartCode: true),
+          platformLinux: const PlatformDetails(PlatformSupport.inline, hasDartCode: true),
+          platformMacOS: const PlatformDetails(PlatformSupport.inline, hasDartCode: true),
+          platformWindows: const PlatformDetails(PlatformSupport.inline, hasDartCode: true),
         },
       );
 
diff --git a/script/tool/test/common/repository_package_test.dart b/script/tool/test/common/repository_package_test.dart
index dadfc88..db519c0 100644
--- a/script/tool/test/common/repository_package_test.dart
+++ b/script/tool/test/common/repository_package_test.dart
@@ -213,7 +213,7 @@
 
     test('returns false for non-Flutter package', () async {
       final RepositoryPackage package =
-          createFakePackage('a_package', packagesDir, isFlutter: false);
+          createFakePackage('a_package', packagesDir);
       expect(package.requiresFlutter(), false);
     });
   });
diff --git a/script/tool/test/custom_test_command_test.dart b/script/tool/test/custom_test_command_test.dart
index 54a1acf..a28b475 100644
--- a/script/tool/test/custom_test_command_test.dart
+++ b/script/tool/test/custom_test_command_test.dart
@@ -146,7 +146,7 @@
       ]);
 
       processRunner.mockProcessesForExecutable['dart'] = <io.Process>[
-        MockProcess(exitCode: 0), // pub get
+        MockProcess(), // pub get
         MockProcess(exitCode: 1), // test script
       ];
 
@@ -306,7 +306,7 @@
       ]);
 
       processRunner.mockProcessesForExecutable['dart'] = <io.Process>[
-        MockProcess(exitCode: 0), // pub get
+        MockProcess(), // pub get
         MockProcess(exitCode: 1), // test script
       ];
 
diff --git a/script/tool/test/license_check_command_test.dart b/script/tool/test/license_check_command_test.dart
index efaf969..43fbd6b 100644
--- a/script/tool/test/license_check_command_test.dart
+++ b/script/tool/test/license_check_command_test.dart
@@ -200,7 +200,7 @@
     test('handles the comment styles for all supported languages', () async {
       final File fileA = root.childFile('file_a.cc');
       fileA.createSync();
-      _writeLicense(fileA, comment: '// ');
+      _writeLicense(fileA);
       final File fileB = root.childFile('file_b.sh');
       fileB.createSync();
       _writeLicense(fileB, comment: '# ');
diff --git a/script/tool/test/lint_android_command_test.dart b/script/tool/test/lint_android_command_test.dart
index b072946..e4a6c5c 100644
--- a/script/tool/test/lint_android_command_test.dart
+++ b/script/tool/test/lint_android_command_test.dart
@@ -24,7 +24,7 @@
     late RecordingProcessRunner processRunner;
 
     setUp(() {
-      fileSystem = MemoryFileSystem(style: FileSystemStyle.posix);
+      fileSystem = MemoryFileSystem();
       packagesDir = createPackagesDirectory(fileSystem: fileSystem);
       mockPlatform = MockPlatform();
       processRunner = RecordingProcessRunner();
@@ -178,7 +178,7 @@
           containsAllInOrder(
             <Matcher>[
               contains(
-                  'SKIPPING: Plugin does not have an Android implemenatation.')
+                  'SKIPPING: Plugin does not have an Android implementation.')
             ],
           ));
     });
@@ -197,7 +197,7 @@
           containsAllInOrder(
             <Matcher>[
               contains(
-                  'SKIPPING: Plugin does not have an Android implemenatation.')
+                  'SKIPPING: Plugin does not have an Android implementation.')
             ],
           ));
     });
diff --git a/script/tool/test/lint_podspecs_command_test.dart b/script/tool/test/lint_podspecs_command_test.dart
index 516a32f..097bcff 100644
--- a/script/tool/test/lint_podspecs_command_test.dart
+++ b/script/tool/test/lint_podspecs_command_test.dart
@@ -23,7 +23,7 @@
     late RecordingProcessRunner processRunner;
 
     setUp(() {
-      fileSystem = MemoryFileSystem(style: FileSystemStyle.posix);
+      fileSystem = MemoryFileSystem();
       packagesDir = createPackagesDirectory(fileSystem: fileSystem);
 
       mockPlatform = MockPlatform(isMacOS: true);
diff --git a/script/tool/test/update_excerpts_command_test.dart b/script/tool/test/update_excerpts_command_test.dart
index 5c1d744..dd4b64a 100644
--- a/script/tool/test/update_excerpts_command_test.dart
+++ b/script/tool/test/update_excerpts_command_test.dart
@@ -186,7 +186,7 @@
         extraFiles: <String>['example/build.excerpt.yaml']);
 
     processRunner.mockProcessesForExecutable['dart'] = <io.Process>[
-      MockProcess(exitCode: 0), // dart pub get
+      MockProcess(), // dart pub get
       MockProcess(exitCode: 1), // dart run build_runner ...
     ];
 
@@ -211,8 +211,8 @@
         extraFiles: <String>['example/build.excerpt.yaml']);
 
     processRunner.mockProcessesForExecutable['dart'] = <io.Process>[
-      MockProcess(exitCode: 0), // dart pub get
-      MockProcess(exitCode: 0), // dart run build_runner ...
+      MockProcess(), // dart pub get
+      MockProcess(), // dart run build_runner ...
       MockProcess(exitCode: 1), // dart run code_excerpt_updater ...
     ];
 
diff --git a/script/tool/test/util.dart b/script/tool/test/util.dart
index 041d933..2754f64 100644
--- a/script/tool/test/util.dart
+++ b/script/tool/test/util.dart
@@ -117,7 +117,6 @@
   createFakePubspec(
     package,
     name: name,
-    isFlutter: true,
     isPlugin: true,
     platformSupport: platformSupport,
     version: version,
@@ -399,10 +398,10 @@
     final io.Process? process = _getProcessToReturn(executable);
     final List<String>? processStdout =
         await process?.stdout.transform(stdoutEncoding.decoder).toList();
-    final String stdout = processStdout?.join('') ?? '';
+    final String stdout = processStdout?.join() ?? '';
     final List<String>? processStderr =
         await process?.stderr.transform(stderrEncoding.decoder).toList();
-    final String stderr = processStderr?.join('') ?? '';
+    final String stderr = processStderr?.join() ?? '';
 
     final io.ProcessResult result = process == null
         ? io.ProcessResult(1, 0, '', '')
