diff --git a/packages/camera/camera/CHANGELOG.md b/packages/camera/camera/CHANGELOG.md
index 5320774..f68d6e3 100644
--- a/packages/camera/camera/CHANGELOG.md
+++ b/packages/camera/camera/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 0.10.3+2
diff --git a/packages/camera/camera/example/pubspec.yaml b/packages/camera/camera/example/pubspec.yaml
index eaf2bd1..41ed519 100644
--- a/packages/camera/camera/example/pubspec.yaml
+++ b/packages/camera/camera/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   camera:
diff --git a/packages/camera/camera/pubspec.yaml b/packages/camera/camera/pubspec.yaml
index f623b88..f2196e7 100644
--- a/packages/camera/camera/pubspec.yaml
+++ b/packages/camera/camera/pubspec.yaml
@@ -7,8 +7,8 @@
 version: 0.10.3+2
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -35,6 +35,6 @@
     sdk: flutter
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   plugin_platform_interface: ^2.0.0
   video_player: ^2.0.0
diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md
index f163e83..cfe8bbc 100644
--- a/packages/camera/camera_android_camerax/CHANGELOG.md
+++ b/packages/camera/camera_android_camerax/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Creates camera_android_camerax plugin for development.
 * Adds CameraInfo class and removes unnecessary code from plugin.
 * Adds CameraSelector class.
diff --git a/packages/camera/camera_android_camerax/example/pubspec.yaml b/packages/camera/camera_android_camerax/example/pubspec.yaml
index d3ca746..1a055e7 100644
--- a/packages/camera/camera_android_camerax/example/pubspec.yaml
+++ b/packages/camera/camera_android_camerax/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: 'none'
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   camera_android_camerax:
diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml
index 764b057..35399a3 100644
--- a/packages/camera/camera_android_camerax/pubspec.yaml
+++ b/packages/camera/camera_android_camerax/pubspec.yaml
@@ -5,8 +5,8 @@
 publish_to: 'none'
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -30,5 +30,5 @@
   build_runner: ^2.1.4
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   pigeon: ^9.1.0
diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart
index 09a645a..59be665 100644
--- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart
+++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in camera_android_camerax/test/android_camera_camerax_test.dart.
 // Do not manually edit this file.
 
@@ -16,8 +16,7 @@
 import 'package:camera_android_camerax/src/use_case.dart' as _i13;
 import 'package:flutter/foundation.dart' as _i6;
 import 'package:flutter/services.dart' as _i5;
-import 'package:flutter/src/widgets/framework.dart' as _i4;
-import 'package:flutter/src/widgets/notification_listener.dart' as _i14;
+import 'package:flutter/widgets.dart' as _i4;
 import 'package:mockito/mockito.dart' as _i1;
 
 // ignore_for_file: type=lint
@@ -346,7 +345,7 @@
         returnValueForMissingStub: null,
       );
   @override
-  void dispatchNotification(_i14.Notification? notification) =>
+  void dispatchNotification(_i4.Notification? notification) =>
       super.noSuchMethod(
         Invocation.method(
           #dispatchNotification,
diff --git a/packages/camera/camera_android_camerax/test/camera_info_test.mocks.dart b/packages/camera/camera_android_camerax/test/camera_info_test.mocks.dart
index 896bbc4..3c15333 100644
--- a/packages/camera/camera_android_camerax/test/camera_info_test.mocks.dart
+++ b/packages/camera/camera_android_camerax/test/camera_info_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in camera_android_camerax/test/camera_info_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/camera/camera_android_camerax/test/camera_selector_test.mocks.dart b/packages/camera/camera_android_camerax/test/camera_selector_test.mocks.dart
index 627aba8..3b8bc4a 100644
--- a/packages/camera/camera_android_camerax/test/camera_selector_test.mocks.dart
+++ b/packages/camera/camera_android_camerax/test/camera_selector_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in camera_android_camerax/test/camera_selector_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/camera/camera_android_camerax/test/image_capture_test.mocks.dart b/packages/camera/camera_android_camerax/test/image_capture_test.mocks.dart
index 1dc8a28..63761d8 100644
--- a/packages/camera/camera_android_camerax/test/image_capture_test.mocks.dart
+++ b/packages/camera/camera_android_camerax/test/image_capture_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in camera_android_camerax/test/image_capture_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/camera/camera_android_camerax/test/preview_test.mocks.dart b/packages/camera/camera_android_camerax/test/preview_test.mocks.dart
index fe3bdb8..467f4dc 100644
--- a/packages/camera/camera_android_camerax/test/preview_test.mocks.dart
+++ b/packages/camera/camera_android_camerax/test/preview_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in camera_android_camerax/test/preview_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/camera/camera_android_camerax/test/process_camera_provider_test.mocks.dart b/packages/camera/camera_android_camerax/test/process_camera_provider_test.mocks.dart
index 68b0c0a..62d3de7 100644
--- a/packages/camera/camera_android_camerax/test/process_camera_provider_test.mocks.dart
+++ b/packages/camera/camera_android_camerax/test/process_camera_provider_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in camera_android_camerax/test/process_camera_provider_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/camera/camera_android_camerax/test/system_services_test.mocks.dart b/packages/camera/camera_android_camerax/test/system_services_test.mocks.dart
index 27d5b01..cb0acda 100644
--- a/packages/camera/camera_android_camerax/test/system_services_test.mocks.dart
+++ b/packages/camera/camera_android_camerax/test/system_services_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in camera_android_camerax/test/system_services_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/file_selector/file_selector_ios/CHANGELOG.md b/packages/file_selector/file_selector_ios/CHANGELOG.md
index 1404a74..9c80f0b 100644
--- a/packages/file_selector/file_selector_ios/CHANGELOG.md
+++ b/packages/file_selector/file_selector_ios/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 0.5.1+2
 
 * Updates to `pigeon` version 9.
diff --git a/packages/file_selector/file_selector_ios/example/pubspec.yaml b/packages/file_selector/file_selector_ios/example/pubspec.yaml
index d5ab574..44642b6 100644
--- a/packages/file_selector/file_selector_ios/example/pubspec.yaml
+++ b/packages/file_selector/file_selector_ios/example/pubspec.yaml
@@ -4,8 +4,8 @@
 version: 1.0.0
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   # The following adds the Cupertino Icons font to your application.
diff --git a/packages/file_selector/file_selector_ios/pubspec.yaml b/packages/file_selector/file_selector_ios/pubspec.yaml
index 7e452fe..eb9dd24 100644
--- a/packages/file_selector/file_selector_ios/pubspec.yaml
+++ b/packages/file_selector/file_selector_ios/pubspec.yaml
@@ -25,5 +25,5 @@
   build_runner: ^2.3.0
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   pigeon: ^9.1.0
diff --git a/packages/file_selector/file_selector_ios/test/file_selector_ios_test.mocks.dart b/packages/file_selector/file_selector_ios/test/file_selector_ios_test.mocks.dart
index 1d22ba7..c4186b0 100644
--- a/packages/file_selector/file_selector_ios/test/file_selector_ios_test.mocks.dart
+++ b/packages/file_selector/file_selector_ios/test/file_selector_ios_test.mocks.dart
@@ -1,5 +1,5 @@
-// Mocks generated by Mockito 5.3.0 from annotations
-// in file_selector_ios/example/ios/.symlinks/plugins/file_selector_ios/test/file_selector_ios_test.dart.
+// Mocks generated by Mockito 5.4.0 from annotations
+// in file_selector_ios/test/file_selector_ios_test.dart.
 // Do not manually edit this file.
 
 // ignore_for_file: no_leading_underscores_for_library_prefixes
@@ -32,7 +32,11 @@
 
   @override
   _i3.Future<List<String?>> openFile(_i4.FileSelectorConfig? config) =>
-      (super.noSuchMethod(Invocation.method(#openFile, [config]),
-              returnValue: _i3.Future<List<String?>>.value(<String?>[]))
-          as _i3.Future<List<String?>>);
+      (super.noSuchMethod(
+        Invocation.method(
+          #openFile,
+          [config],
+        ),
+        returnValue: _i3.Future<List<String?>>.value(<String?>[]),
+      ) as _i3.Future<List<String?>>);
 }
diff --git a/packages/file_selector/file_selector_macos/CHANGELOG.md b/packages/file_selector/file_selector_macos/CHANGELOG.md
index a02f6be..af29511 100644
--- a/packages/file_selector/file_selector_macos/CHANGELOG.md
+++ b/packages/file_selector/file_selector_macos/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 0.9.0+7
 
 * Updates to `pigeon` version 9.
diff --git a/packages/file_selector/file_selector_macos/example/pubspec.yaml b/packages/file_selector/file_selector_macos/example/pubspec.yaml
index 600f581..b8e38bd 100644
--- a/packages/file_selector/file_selector_macos/example/pubspec.yaml
+++ b/packages/file_selector/file_selector_macos/example/pubspec.yaml
@@ -4,8 +4,8 @@
 version: 1.0.0
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   file_selector_macos:
diff --git a/packages/file_selector/file_selector_macos/pubspec.yaml b/packages/file_selector/file_selector_macos/pubspec.yaml
index da99217..125b63c 100644
--- a/packages/file_selector/file_selector_macos/pubspec.yaml
+++ b/packages/file_selector/file_selector_macos/pubspec.yaml
@@ -5,8 +5,8 @@
 version: 0.9.0+7
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -26,5 +26,5 @@
   build_runner: ^2.3.2
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   pigeon: ^9.1.0
diff --git a/packages/file_selector/file_selector_macos/test/file_selector_macos_test.mocks.dart b/packages/file_selector/file_selector_macos/test/file_selector_macos_test.mocks.dart
index ddd563b..ff16017 100644
--- a/packages/file_selector/file_selector_macos/test/file_selector_macos_test.mocks.dart
+++ b/packages/file_selector/file_selector_macos/test/file_selector_macos_test.mocks.dart
@@ -1,5 +1,5 @@
-// Mocks generated by Mockito 5.3.2 from annotations
-// in file_selector_macos/example/macos/Flutter/ephemeral/.symlinks/plugins/file_selector_macos/test/file_selector_macos_test.dart.
+// Mocks generated by Mockito 5.4.0 from annotations
+// in file_selector_macos/test/file_selector_macos_test.dart.
 // Do not manually edit this file.
 
 // ignore_for_file: no_leading_underscores_for_library_prefixes
diff --git a/packages/file_selector/file_selector_windows/CHANGELOG.md b/packages/file_selector/file_selector_windows/CHANGELOG.md
index b3c41ba..d6e2b83 100644
--- a/packages/file_selector/file_selector_windows/CHANGELOG.md
+++ b/packages/file_selector/file_selector_windows/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 0.9.1+7
 
 * Updates to `pigeon` version 9.
diff --git a/packages/file_selector/file_selector_windows/example/pubspec.yaml b/packages/file_selector/file_selector_windows/example/pubspec.yaml
index 4d4ca6d..aa46b51 100644
--- a/packages/file_selector/file_selector_windows/example/pubspec.yaml
+++ b/packages/file_selector/file_selector_windows/example/pubspec.yaml
@@ -4,8 +4,8 @@
 version: 1.0.0
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   file_selector_platform_interface: ^2.2.0
diff --git a/packages/file_selector/file_selector_windows/pubspec.yaml b/packages/file_selector/file_selector_windows/pubspec.yaml
index faf4239..3d55f84 100644
--- a/packages/file_selector/file_selector_windows/pubspec.yaml
+++ b/packages/file_selector/file_selector_windows/pubspec.yaml
@@ -5,8 +5,8 @@
 version: 0.9.1+7
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -26,5 +26,5 @@
   build_runner: ^2.3.0
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   pigeon: ^9.1.0
diff --git a/packages/file_selector/file_selector_windows/test/file_selector_windows_test.mocks.dart b/packages/file_selector/file_selector_windows/test/file_selector_windows_test.mocks.dart
index f60c92e..ae55f2e 100644
--- a/packages/file_selector/file_selector_windows/test/file_selector_windows_test.mocks.dart
+++ b/packages/file_selector/file_selector_windows/test/file_selector_windows_test.mocks.dart
@@ -1,7 +1,8 @@
-// Mocks generated by Mockito 5.2.0 from annotations
-// in file_selector_windows/example/windows/flutter/ephemeral/.plugin_symlinks/file_selector_windows/test/file_selector_windows_test.dart.
+// Mocks generated by Mockito 5.4.0 from annotations
+// in file_selector_windows/test/file_selector_windows_test.dart.
 // Do not manually edit this file.
 
+// ignore_for_file: no_leading_underscores_for_library_prefixes
 import 'package:file_selector_windows/src/messages.g.dart' as _i3;
 import 'package:mockito/mockito.dart' as _i1;
 
@@ -16,6 +17,7 @@
 // ignore_for_file: prefer_const_constructors
 // ignore_for_file: unnecessary_parenthesis
 // ignore_for_file: camel_case_types
+// ignore_for_file: subtype_of_sealed_class
 
 /// A class which mocks [TestFileSelectorApi].
 ///
@@ -27,20 +29,39 @@
   }
 
   @override
-  List<String?> showOpenDialog(_i3.SelectionOptions? options,
-          String? initialDirectory, String? confirmButtonText) =>
+  List<String?> showOpenDialog(
+    _i3.SelectionOptions? options,
+    String? initialDirectory,
+    String? confirmButtonText,
+  ) =>
       (super.noSuchMethod(
-          Invocation.method(
-              #showOpenDialog, [options, initialDirectory, confirmButtonText]),
-          returnValue: <String?>[]) as List<String?>);
+        Invocation.method(
+          #showOpenDialog,
+          [
+            options,
+            initialDirectory,
+            confirmButtonText,
+          ],
+        ),
+        returnValue: <String?>[],
+      ) as List<String?>);
   @override
   List<String?> showSaveDialog(
-          _i3.SelectionOptions? options,
-          String? initialDirectory,
-          String? suggestedName,
-          String? confirmButtonText) =>
+    _i3.SelectionOptions? options,
+    String? initialDirectory,
+    String? suggestedName,
+    String? confirmButtonText,
+  ) =>
       (super.noSuchMethod(
-          Invocation.method(#showSaveDialog,
-              [options, initialDirectory, suggestedName, confirmButtonText]),
-          returnValue: <String?>[]) as List<String?>);
+        Invocation.method(
+          #showSaveDialog,
+          [
+            options,
+            initialDirectory,
+            suggestedName,
+            confirmButtonText,
+          ],
+        ),
+        returnValue: <String?>[],
+      ) as List<String?>);
 }
diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md
index 1ec37e2..c9376d8 100644
--- a/packages/flutter_markdown/CHANGELOG.md
+++ b/packages/flutter_markdown/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 0.6.14
diff --git a/packages/flutter_markdown/example/pubspec.yaml b/packages/flutter_markdown/example/pubspec.yaml
index 8d95cb9..61bbdc2 100644
--- a/packages/flutter_markdown/example/pubspec.yaml
+++ b/packages/flutter_markdown/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/flutter_markdown/pubspec.yaml b/packages/flutter_markdown/pubspec.yaml
index 49ed33e..dedd749 100644
--- a/packages/flutter_markdown/pubspec.yaml
+++ b/packages/flutter_markdown/pubspec.yaml
@@ -7,8 +7,8 @@
 version: 0.6.14
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -20,5 +20,5 @@
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   standard_message_codec: ^0.0.1+3
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 b31d7f2..0fb0375 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,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 2.2.6
diff --git a/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml
index fa8d6e7..8796049 100644
--- a/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml
+++ b/packages/google_maps_flutter/google_maps_flutter_platform_interface/pubspec.yaml
@@ -7,8 +7,8 @@
 version: 2.2.6
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   collection: ^1.15.0
@@ -21,4 +21,4 @@
   async: ^2.5.0
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md
index be97166..0a712b4 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md
+++ b/packages/google_maps_flutter/google_maps_flutter_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 0.4.0+7
 
 * Clarifies explanation of endorsement in README.
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/example/build.yaml b/packages/google_maps_flutter/google_maps_flutter_web/example/build.yaml
index db3104b..5a89bed 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/example/build.yaml
+++ b/packages/google_maps_flutter/google_maps_flutter_web/example/build.yaml
@@ -4,3 +4,7 @@
       - integration_test/*.dart
       - lib/$lib$
       - $package$
+    builders:
+      mockito|mockBuilder:
+        generate_for:
+          - integration_test/**
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_controller_test.mocks.dart b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_controller_test.mocks.dart
index efde664..db4130f 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_controller_test.mocks.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_controller_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in google_maps_flutter_web_integration_tests/integration_test/google_maps_controller_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_plugin_test.mocks.dart b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_plugin_test.mocks.dart
index a85bce3..f00ad0a 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_plugin_test.mocks.dart
+++ b/packages/google_maps_flutter/google_maps_flutter_web/example/integration_test/google_maps_plugin_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in google_maps_flutter_web_integration_tests/integration_test/google_maps_plugin_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/example/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_web/example/pubspec.yaml
index 26be976..787e397 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/example/pubspec.yaml
+++ b/packages/google_maps_flutter/google_maps_flutter_web/example/pubspec.yaml
@@ -3,8 +3,8 @@
 
 # Tests require flutter beta or greater to run.
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -25,4 +25,4 @@
   http: ^0.13.0
   integration_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
diff --git a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml
index ba9c7d3..83f4971 100644
--- a/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml
+++ b/packages/google_maps_flutter/google_maps_flutter_web/pubspec.yaml
@@ -5,8 +5,8 @@
 version: 0.4.0+7
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md
index 0723487..d37374a 100644
--- a/packages/google_sign_in/google_sign_in/CHANGELOG.md
+++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 6.0.2
diff --git a/packages/google_sign_in/google_sign_in/example/pubspec.yaml b/packages/google_sign_in/google_sign_in/example/pubspec.yaml
index ff09d94..f46a4df 100644
--- a/packages/google_sign_in/google_sign_in/example/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml
index d0b6b71..3fcabdf 100644
--- a/packages/google_sign_in/google_sign_in/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in/pubspec.yaml
@@ -6,8 +6,8 @@
 version: 6.0.2
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -36,7 +36,7 @@
   http: ^0.13.0
   integration_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
 
 # The example deliberately includes limited-use secrets.
 false_secrets:
diff --git a/packages/google_sign_in/google_sign_in/test/google_sign_in_test.mocks.dart b/packages/google_sign_in/google_sign_in/test/google_sign_in_test.mocks.dart
index 4e66962..b27e3ae 100644
--- a/packages/google_sign_in/google_sign_in/test/google_sign_in_test.mocks.dart
+++ b/packages/google_sign_in/google_sign_in/test/google_sign_in_test.mocks.dart
@@ -1,7 +1,8 @@
-// Mocks generated by Mockito 5.1.0 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in google_sign_in/test/google_sign_in_test.dart.
 // Do not manually edit this file.
 
+// ignore_for_file: no_leading_underscores_for_library_prefixes
 import 'dart:async' as _i4;
 
 import 'package:google_sign_in_platform_interface/google_sign_in_platform_interface.dart'
@@ -18,9 +19,18 @@
 // ignore_for_file: prefer_const_constructors
 // ignore_for_file: unnecessary_parenthesis
 // ignore_for_file: camel_case_types
+// ignore_for_file: subtype_of_sealed_class
 
-class _FakeGoogleSignInTokenData_0 extends _i1.Fake
-    implements _i2.GoogleSignInTokenData {}
+class _FakeGoogleSignInTokenData_0 extends _i1.SmartFake
+    implements _i2.GoogleSignInTokenData {
+  _FakeGoogleSignInTokenData_0(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
 /// A class which mocks [GoogleSignInPlatform].
 ///
@@ -32,69 +42,127 @@
   }
 
   @override
-  bool get isMock =>
-      (super.noSuchMethod(Invocation.getter(#isMock), returnValue: false)
-          as bool);
+  bool get isMock => (super.noSuchMethod(
+        Invocation.getter(#isMock),
+        returnValue: false,
+      ) as bool);
   @override
-  _i4.Future<void> init(
-          {List<String>? scopes = const [],
-          _i2.SignInOption? signInOption = _i2.SignInOption.standard,
-          String? hostedDomain,
-          String? clientId}) =>
+  _i4.Future<void> init({
+    List<String>? scopes = const [],
+    _i2.SignInOption? signInOption = _i2.SignInOption.standard,
+    String? hostedDomain,
+    String? clientId,
+  }) =>
       (super.noSuchMethod(
-          Invocation.method(#init, [], {
+        Invocation.method(
+          #init,
+          [],
+          {
             #scopes: scopes,
             #signInOption: signInOption,
             #hostedDomain: hostedDomain,
-            #clientId: clientId
-          }),
-          returnValue: Future<void>.value(),
-          returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+            #clientId: clientId,
+          },
+        ),
+        returnValue: _i4.Future<void>.value(),
+        returnValueForMissingStub: _i4.Future<void>.value(),
+      ) as _i4.Future<void>);
   @override
   _i4.Future<void> initWithParams(_i2.SignInInitParameters? params) =>
-      (super.noSuchMethod(Invocation.method(#initWithParams, [params]),
-          returnValue: Future<void>.value(),
-          returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
-  @override
-  _i4.Future<_i2.GoogleSignInUserData?> signInSilently() =>
-      (super.noSuchMethod(Invocation.method(#signInSilently, []),
-              returnValue: Future<_i2.GoogleSignInUserData?>.value())
-          as _i4.Future<_i2.GoogleSignInUserData?>);
-  @override
-  _i4.Future<_i2.GoogleSignInUserData?> signIn() =>
-      (super.noSuchMethod(Invocation.method(#signIn, []),
-              returnValue: Future<_i2.GoogleSignInUserData?>.value())
-          as _i4.Future<_i2.GoogleSignInUserData?>);
-  @override
-  _i4.Future<_i2.GoogleSignInTokenData> getTokens(
-          {String? email, bool? shouldRecoverAuth}) =>
       (super.noSuchMethod(
-              Invocation.method(#getTokens, [],
-                  {#email: email, #shouldRecoverAuth: shouldRecoverAuth}),
-              returnValue: Future<_i2.GoogleSignInTokenData>.value(
-                  _FakeGoogleSignInTokenData_0()))
-          as _i4.Future<_i2.GoogleSignInTokenData>);
+        Invocation.method(
+          #initWithParams,
+          [params],
+        ),
+        returnValue: _i4.Future<void>.value(),
+        returnValueForMissingStub: _i4.Future<void>.value(),
+      ) as _i4.Future<void>);
   @override
-  _i4.Future<void> signOut() =>
-      (super.noSuchMethod(Invocation.method(#signOut, []),
-          returnValue: Future<void>.value(),
-          returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+  _i4.Future<_i2.GoogleSignInUserData?> signInSilently() => (super.noSuchMethod(
+        Invocation.method(
+          #signInSilently,
+          [],
+        ),
+        returnValue: _i4.Future<_i2.GoogleSignInUserData?>.value(),
+      ) as _i4.Future<_i2.GoogleSignInUserData?>);
   @override
-  _i4.Future<void> disconnect() =>
-      (super.noSuchMethod(Invocation.method(#disconnect, []),
-          returnValue: Future<void>.value(),
-          returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+  _i4.Future<_i2.GoogleSignInUserData?> signIn() => (super.noSuchMethod(
+        Invocation.method(
+          #signIn,
+          [],
+        ),
+        returnValue: _i4.Future<_i2.GoogleSignInUserData?>.value(),
+      ) as _i4.Future<_i2.GoogleSignInUserData?>);
   @override
-  _i4.Future<bool> isSignedIn() =>
-      (super.noSuchMethod(Invocation.method(#isSignedIn, []),
-          returnValue: Future<bool>.value(false)) as _i4.Future<bool>);
+  _i4.Future<_i2.GoogleSignInTokenData> getTokens({
+    required String? email,
+    bool? shouldRecoverAuth,
+  }) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #getTokens,
+          [],
+          {
+            #email: email,
+            #shouldRecoverAuth: shouldRecoverAuth,
+          },
+        ),
+        returnValue: _i4.Future<_i2.GoogleSignInTokenData>.value(
+            _FakeGoogleSignInTokenData_0(
+          this,
+          Invocation.method(
+            #getTokens,
+            [],
+            {
+              #email: email,
+              #shouldRecoverAuth: shouldRecoverAuth,
+            },
+          ),
+        )),
+      ) as _i4.Future<_i2.GoogleSignInTokenData>);
   @override
-  _i4.Future<void> clearAuthCache({String? token}) => (super.noSuchMethod(
-      Invocation.method(#clearAuthCache, [], {#token: token}),
-      returnValue: Future<void>.value(),
-      returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+  _i4.Future<void> signOut() => (super.noSuchMethod(
+        Invocation.method(
+          #signOut,
+          [],
+        ),
+        returnValue: _i4.Future<void>.value(),
+        returnValueForMissingStub: _i4.Future<void>.value(),
+      ) as _i4.Future<void>);
   @override
-  _i4.Future<bool> requestScopes(List<String>? scopes) =>
-      (super.noSuchMethod(Invocation.method(#requestScopes, [scopes]),
-          returnValue: Future<bool>.value(false)) as _i4.Future<bool>);
+  _i4.Future<void> disconnect() => (super.noSuchMethod(
+        Invocation.method(
+          #disconnect,
+          [],
+        ),
+        returnValue: _i4.Future<void>.value(),
+        returnValueForMissingStub: _i4.Future<void>.value(),
+      ) as _i4.Future<void>);
+  @override
+  _i4.Future<bool> isSignedIn() => (super.noSuchMethod(
+        Invocation.method(
+          #isSignedIn,
+          [],
+        ),
+        returnValue: _i4.Future<bool>.value(false),
+      ) as _i4.Future<bool>);
+  @override
+  _i4.Future<void> clearAuthCache({required String? token}) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #clearAuthCache,
+          [],
+          {#token: token},
+        ),
+        returnValue: _i4.Future<void>.value(),
+        returnValueForMissingStub: _i4.Future<void>.value(),
+      ) as _i4.Future<void>);
+  @override
+  _i4.Future<bool> requestScopes(List<String>? scopes) => (super.noSuchMethod(
+        Invocation.method(
+          #requestScopes,
+          [scopes],
+        ),
+        returnValue: _i4.Future<bool>.value(false),
+      ) as _i4.Future<bool>);
 }
diff --git a/packages/google_sign_in/google_sign_in_platform_interface/CHANGELOG.md b/packages/google_sign_in/google_sign_in_platform_interface/CHANGELOG.md
index 751bf5b..c3a7366 100644
--- a/packages/google_sign_in/google_sign_in_platform_interface/CHANGELOG.md
+++ b/packages/google_sign_in/google_sign_in_platform_interface/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 2.3.1
diff --git a/packages/google_sign_in/google_sign_in_platform_interface/pubspec.yaml b/packages/google_sign_in/google_sign_in_platform_interface/pubspec.yaml
index 0a3f49f..17645aa 100644
--- a/packages/google_sign_in/google_sign_in_platform_interface/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in_platform_interface/pubspec.yaml
@@ -7,8 +7,8 @@
 version: 2.3.1
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -19,4 +19,4 @@
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
diff --git a/packages/google_sign_in/google_sign_in_web/CHANGELOG.md b/packages/google_sign_in/google_sign_in_web/CHANGELOG.md
index 2d02e63..f38290f 100644
--- a/packages/google_sign_in/google_sign_in_web/CHANGELOG.md
+++ b/packages/google_sign_in/google_sign_in_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 0.11.0+2
 
 * Clarifies explanation of endorsement in README.
diff --git a/packages/google_sign_in/google_sign_in_web/example/build.yaml b/packages/google_sign_in/google_sign_in_web/example/build.yaml
index db3104b..5a89bed 100644
--- a/packages/google_sign_in/google_sign_in_web/example/build.yaml
+++ b/packages/google_sign_in/google_sign_in_web/example/build.yaml
@@ -4,3 +4,7 @@
       - integration_test/*.dart
       - lib/$lib$
       - $package$
+    builders:
+      mockito|mockBuilder:
+        generate_for:
+          - integration_test/**
diff --git a/packages/google_sign_in/google_sign_in_web/example/integration_test/google_sign_in_web_test.mocks.dart b/packages/google_sign_in/google_sign_in_web/example/integration_test/google_sign_in_web_test.mocks.dart
index b60dac9..1134576 100644
--- a/packages/google_sign_in/google_sign_in_web/example/integration_test/google_sign_in_web_test.mocks.dart
+++ b/packages/google_sign_in/google_sign_in_web/example/integration_test/google_sign_in_web_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in google_sign_in_web_integration_tests/integration_test/google_sign_in_web_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/google_sign_in/google_sign_in_web/example/pubspec.yaml b/packages/google_sign_in/google_sign_in_web/example/pubspec.yaml
index bc61155..daac8ca 100644
--- a/packages/google_sign_in/google_sign_in_web/example/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in_web/example/pubspec.yaml
@@ -2,8 +2,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -23,4 +23,4 @@
   integration_test:
     sdk: flutter
   js: ^0.6.3
-  mockito: 5.3.2
+  mockito: 5.4.0
diff --git a/packages/google_sign_in/google_sign_in_web/pubspec.yaml b/packages/google_sign_in/google_sign_in_web/pubspec.yaml
index 92066ff..745c4e4 100644
--- a/packages/google_sign_in/google_sign_in_web/pubspec.yaml
+++ b/packages/google_sign_in/google_sign_in_web/pubspec.yaml
@@ -6,8 +6,8 @@
 version: 0.11.0+2
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
diff --git a/packages/image_picker/image_picker/CHANGELOG.md b/packages/image_picker/image_picker/CHANGELOG.md
index 140efae..242a0b0 100644
--- a/packages/image_picker/image_picker/CHANGELOG.md
+++ b/packages/image_picker/image_picker/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 0.8.7+1
 
 * Updates README to use code excerpts.
diff --git a/packages/image_picker/image_picker/example/pubspec.yaml b/packages/image_picker/image_picker/example/pubspec.yaml
index 462e582..6b38b56 100644
--- a/packages/image_picker/image_picker/example/pubspec.yaml
+++ b/packages/image_picker/image_picker/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/image_picker/image_picker/pubspec.yaml b/packages/image_picker/image_picker/pubspec.yaml
index 800738b..168adcb 100755
--- a/packages/image_picker/image_picker/pubspec.yaml
+++ b/packages/image_picker/image_picker/pubspec.yaml
@@ -6,8 +6,8 @@
 version: 0.8.7+1
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -32,5 +32,5 @@
   cross_file: ^0.3.1+1 # Mockito generates a direct include.
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   plugin_platform_interface: ^2.0.0
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 2d959bd..637ecf9 100644
--- a/packages/image_picker/image_picker/test/image_picker_test.dart
+++ b/packages/image_picker/image_picker/test/image_picker_test.dart
@@ -13,16 +13,17 @@
 import 'image_picker_test.mocks.dart' as base_mock;
 
 // Add the mixin to make the platform interface accept the mock.
-class MockImagePickerPlatform extends base_mock.MockImagePickerPlatform
+class _MockImagePickerPlatform extends base_mock.MockImagePickerPlatform
     with MockPlatformInterfaceMixin {}
 
-@GenerateMocks(<Type>[ImagePickerPlatform])
+@GenerateMocks(<Type>[],
+    customMocks: <MockSpec<dynamic>>[MockSpec<ImagePickerPlatform>()])
 void main() {
   group('ImagePicker', () {
-    late MockImagePickerPlatform mockPlatform;
+    late _MockImagePickerPlatform mockPlatform;
 
     setUp(() {
-      mockPlatform = MockImagePickerPlatform();
+      mockPlatform = _MockImagePickerPlatform();
       ImagePickerPlatform.instance = mockPlatform;
     });
 
diff --git a/packages/image_picker/image_picker/test/image_picker_test.mocks.dart b/packages/image_picker/image_picker/test/image_picker_test.mocks.dart
index f749b53..d1e1983 100644
--- a/packages/image_picker/image_picker/test/image_picker_test.mocks.dart
+++ b/packages/image_picker/image_picker/test/image_picker_test.mocks.dart
@@ -1,7 +1,8 @@
-// Mocks generated by Mockito 5.1.0 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in image_picker/test/image_picker_test.dart.
 // Do not manually edit this file.
 
+// ignore_for_file: no_leading_underscores_for_library_prefixes
 import 'dart:async' as _i4;
 
 import 'package:cross_file/cross_file.dart' as _i5;
@@ -19,11 +20,28 @@
 // ignore_for_file: prefer_const_constructors
 // ignore_for_file: unnecessary_parenthesis
 // ignore_for_file: camel_case_types
+// ignore_for_file: subtype_of_sealed_class
 
-class _FakeLostData_0 extends _i1.Fake implements _i2.LostData {}
+class _FakeLostData_0 extends _i1.SmartFake implements _i2.LostData {
+  _FakeLostData_0(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
-class _FakeLostDataResponse_1 extends _i1.Fake
-    implements _i2.LostDataResponse {}
+class _FakeLostDataResponse_1 extends _i1.SmartFake
+    implements _i2.LostDataResponse {
+  _FakeLostDataResponse_1(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
 /// A class which mocks [ImagePickerPlatform].
 ///
@@ -35,120 +53,176 @@
   }
 
   @override
-  _i4.Future<_i2.PickedFile?> pickImage(
-          {_i2.ImageSource? source,
-          double? maxWidth,
-          double? maxHeight,
-          int? imageQuality,
-          _i2.CameraDevice? preferredCameraDevice = _i2.CameraDevice.rear}) =>
+  _i4.Future<_i2.PickedFile?> pickImage({
+    required _i2.ImageSource? source,
+    double? maxWidth,
+    double? maxHeight,
+    int? imageQuality,
+    _i2.CameraDevice? preferredCameraDevice = _i2.CameraDevice.rear,
+  }) =>
       (super.noSuchMethod(
-              Invocation.method(#pickImage, [], {
-                #source: source,
-                #maxWidth: maxWidth,
-                #maxHeight: maxHeight,
-                #imageQuality: imageQuality,
-                #preferredCameraDevice: preferredCameraDevice
-              }),
-              returnValue: Future<_i2.PickedFile?>.value())
-          as _i4.Future<_i2.PickedFile?>);
-
-  @override
-  _i4.Future<List<_i2.PickedFile>?> pickMultiImage(
-          {double? maxWidth, double? maxHeight, int? imageQuality}) =>
-      (super.noSuchMethod(
-              Invocation.method(#pickMultiImage, [], {
-                #maxWidth: maxWidth,
-                #maxHeight: maxHeight,
-                #imageQuality: imageQuality
-              }),
-              returnValue: Future<List<_i2.PickedFile>?>.value())
-          as _i4.Future<List<_i2.PickedFile>?>);
-
-  @override
-  _i4.Future<_i2.PickedFile?> pickVideo(
-          {_i2.ImageSource? source,
-          _i2.CameraDevice? preferredCameraDevice = _i2.CameraDevice.rear,
-          Duration? maxDuration}) =>
-      (super.noSuchMethod(
-              Invocation.method(#pickVideo, [], {
-                #source: source,
-                #preferredCameraDevice: preferredCameraDevice,
-                #maxDuration: maxDuration
-              }),
-              returnValue: Future<_i2.PickedFile?>.value())
-          as _i4.Future<_i2.PickedFile?>);
-
-  @override
-  _i4.Future<_i2.LostData> retrieveLostData() =>
-      (super.noSuchMethod(Invocation.method(#retrieveLostData, []),
-              returnValue: Future<_i2.LostData>.value(_FakeLostData_0()))
-          as _i4.Future<_i2.LostData>);
-
-  @override
-  _i4.Future<_i5.XFile?> getImage(
-          {_i2.ImageSource? source,
-          double? maxWidth,
-          double? maxHeight,
-          int? imageQuality,
-          _i2.CameraDevice? preferredCameraDevice = _i2.CameraDevice.rear}) =>
-      (super.noSuchMethod(
-          Invocation.method(#getImage, [], {
+        Invocation.method(
+          #pickImage,
+          [],
+          {
             #source: source,
             #maxWidth: maxWidth,
             #maxHeight: maxHeight,
             #imageQuality: imageQuality,
-            #preferredCameraDevice: preferredCameraDevice
-          }),
-          returnValue: Future<_i5.XFile?>.value()) as _i4.Future<_i5.XFile?>);
-
+            #preferredCameraDevice: preferredCameraDevice,
+          },
+        ),
+        returnValue: _i4.Future<_i2.PickedFile?>.value(),
+      ) as _i4.Future<_i2.PickedFile?>);
   @override
-  _i4.Future<List<_i5.XFile>?> getMultiImage(
-          {double? maxWidth, double? maxHeight, int? imageQuality}) =>
+  _i4.Future<List<_i2.PickedFile>?> pickMultiImage({
+    double? maxWidth,
+    double? maxHeight,
+    int? imageQuality,
+  }) =>
       (super.noSuchMethod(
-              Invocation.method(#getMultiImage, [], {
-                #maxWidth: maxWidth,
-                #maxHeight: maxHeight,
-                #imageQuality: imageQuality
-              }),
-              returnValue: Future<List<_i5.XFile>?>.value())
-          as _i4.Future<List<_i5.XFile>?>);
-
+        Invocation.method(
+          #pickMultiImage,
+          [],
+          {
+            #maxWidth: maxWidth,
+            #maxHeight: maxHeight,
+            #imageQuality: imageQuality,
+          },
+        ),
+        returnValue: _i4.Future<List<_i2.PickedFile>?>.value(),
+      ) as _i4.Future<List<_i2.PickedFile>?>);
   @override
-  _i4.Future<_i5.XFile?> getVideo(
-          {_i2.ImageSource? source,
-          _i2.CameraDevice? preferredCameraDevice = _i2.CameraDevice.rear,
-          Duration? maxDuration}) =>
+  _i4.Future<_i2.PickedFile?> pickVideo({
+    required _i2.ImageSource? source,
+    _i2.CameraDevice? preferredCameraDevice = _i2.CameraDevice.rear,
+    Duration? maxDuration,
+  }) =>
       (super.noSuchMethod(
-          Invocation.method(#getVideo, [], {
+        Invocation.method(
+          #pickVideo,
+          [],
+          {
             #source: source,
             #preferredCameraDevice: preferredCameraDevice,
-            #maxDuration: maxDuration
-          }),
-          returnValue: Future<_i5.XFile?>.value()) as _i4.Future<_i5.XFile?>);
-
+            #maxDuration: maxDuration,
+          },
+        ),
+        returnValue: _i4.Future<_i2.PickedFile?>.value(),
+      ) as _i4.Future<_i2.PickedFile?>);
   @override
-  _i4.Future<_i2.LostDataResponse> getLostData() =>
-      (super.noSuchMethod(Invocation.method(#getLostData, []),
-              returnValue:
-                  Future<_i2.LostDataResponse>.value(_FakeLostDataResponse_1()))
-          as _i4.Future<_i2.LostDataResponse>);
-
-  @override
-  _i4.Future<_i5.XFile?> getImageFromSource(
-          {_i2.ImageSource? source,
-          _i2.ImagePickerOptions? options = const _i2.ImagePickerOptions()}) =>
-      (super.noSuchMethod(
+  _i4.Future<_i2.LostData> retrieveLostData() => (super.noSuchMethod(
+        Invocation.method(
+          #retrieveLostData,
+          [],
+        ),
+        returnValue: _i4.Future<_i2.LostData>.value(_FakeLostData_0(
+          this,
           Invocation.method(
-              #getImageFromSource, [], {#source: source, #options: options}),
-          returnValue: Future<_i5.XFile?>.value()) as _i4.Future<_i5.XFile?>);
-
+            #retrieveLostData,
+            [],
+          ),
+        )),
+      ) as _i4.Future<_i2.LostData>);
+  @override
+  _i4.Future<_i5.XFile?> getImage({
+    required _i2.ImageSource? source,
+    double? maxWidth,
+    double? maxHeight,
+    int? imageQuality,
+    _i2.CameraDevice? preferredCameraDevice = _i2.CameraDevice.rear,
+  }) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #getImage,
+          [],
+          {
+            #source: source,
+            #maxWidth: maxWidth,
+            #maxHeight: maxHeight,
+            #imageQuality: imageQuality,
+            #preferredCameraDevice: preferredCameraDevice,
+          },
+        ),
+        returnValue: _i4.Future<_i5.XFile?>.value(),
+      ) as _i4.Future<_i5.XFile?>);
+  @override
+  _i4.Future<List<_i5.XFile>?> getMultiImage({
+    double? maxWidth,
+    double? maxHeight,
+    int? imageQuality,
+  }) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #getMultiImage,
+          [],
+          {
+            #maxWidth: maxWidth,
+            #maxHeight: maxHeight,
+            #imageQuality: imageQuality,
+          },
+        ),
+        returnValue: _i4.Future<List<_i5.XFile>?>.value(),
+      ) as _i4.Future<List<_i5.XFile>?>);
+  @override
+  _i4.Future<_i5.XFile?> getVideo({
+    required _i2.ImageSource? source,
+    _i2.CameraDevice? preferredCameraDevice = _i2.CameraDevice.rear,
+    Duration? maxDuration,
+  }) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #getVideo,
+          [],
+          {
+            #source: source,
+            #preferredCameraDevice: preferredCameraDevice,
+            #maxDuration: maxDuration,
+          },
+        ),
+        returnValue: _i4.Future<_i5.XFile?>.value(),
+      ) as _i4.Future<_i5.XFile?>);
+  @override
+  _i4.Future<_i2.LostDataResponse> getLostData() => (super.noSuchMethod(
+        Invocation.method(
+          #getLostData,
+          [],
+        ),
+        returnValue:
+            _i4.Future<_i2.LostDataResponse>.value(_FakeLostDataResponse_1(
+          this,
+          Invocation.method(
+            #getLostData,
+            [],
+          ),
+        )),
+      ) as _i4.Future<_i2.LostDataResponse>);
+  @override
+  _i4.Future<_i5.XFile?> getImageFromSource({
+    required _i2.ImageSource? source,
+    _i2.ImagePickerOptions? options = const _i2.ImagePickerOptions(),
+  }) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #getImageFromSource,
+          [],
+          {
+            #source: source,
+            #options: options,
+          },
+        ),
+        returnValue: _i4.Future<_i5.XFile?>.value(),
+      ) as _i4.Future<_i5.XFile?>);
   @override
   _i4.Future<List<_i5.XFile>> getMultiImageWithOptions(
           {_i2.MultiImagePickerOptions? options =
               const _i2.MultiImagePickerOptions()}) =>
       (super.noSuchMethod(
-          Invocation.method(#getMultiImageWithOptions, [], {#options: options}),
-          returnValue:
-              Future<List<_i5.XFile>>.value(<_i5.XFile>[])) as _i4
-          .Future<List<_i5.XFile>>);
+        Invocation.method(
+          #getMultiImageWithOptions,
+          [],
+          {#options: options},
+        ),
+        returnValue: _i4.Future<List<_i5.XFile>>.value(<_i5.XFile>[]),
+      ) as _i4.Future<List<_i5.XFile>>);
 }
diff --git a/packages/image_picker/image_picker_android/CHANGELOG.md b/packages/image_picker/image_picker_android/CHANGELOG.md
index 8e5fd29..629497f 100644
--- a/packages/image_picker/image_picker_android/CHANGELOG.md
+++ b/packages/image_picker/image_picker_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 0.8.6+6
 
 * Bumps androidx.core:core from 1.8.0 to 1.9.0.
diff --git a/packages/image_picker/image_picker_android/example/pubspec.yaml b/packages/image_picker/image_picker_android/example/pubspec.yaml
index d7fc2ea..8921a37 100644
--- a/packages/image_picker/image_picker_android/example/pubspec.yaml
+++ b/packages/image_picker/image_picker_android/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/image_picker/image_picker_android/pubspec.yaml b/packages/image_picker/image_picker_android/pubspec.yaml
index 2a6ff20..6c1c593 100755
--- a/packages/image_picker/image_picker_android/pubspec.yaml
+++ b/packages/image_picker/image_picker_android/pubspec.yaml
@@ -6,8 +6,8 @@
 version: 0.8.6+6
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -27,5 +27,5 @@
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   pigeon: ^9.1.0
diff --git a/packages/image_picker/image_picker_ios/CHANGELOG.md b/packages/image_picker/image_picker_ios/CHANGELOG.md
index 8d9147a..b47de94 100644
--- a/packages/image_picker/image_picker_ios/CHANGELOG.md
+++ b/packages/image_picker/image_picker_ios/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 0.8.7+2
 
 * Updates to `pigeon` version 9.
diff --git a/packages/image_picker/image_picker_ios/example/pubspec.yaml b/packages/image_picker/image_picker_ios/example/pubspec.yaml
index 3715b36..d0bca04 100755
--- a/packages/image_picker/image_picker_ios/example/pubspec.yaml
+++ b/packages/image_picker/image_picker_ios/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/image_picker/image_picker_ios/pubspec.yaml b/packages/image_picker/image_picker_ios/pubspec.yaml
index 6433da8..3a06f8a 100755
--- a/packages/image_picker/image_picker_ios/pubspec.yaml
+++ b/packages/image_picker/image_picker_ios/pubspec.yaml
@@ -24,5 +24,5 @@
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   pigeon: ^9.1.0
diff --git a/packages/image_picker/image_picker_windows/CHANGELOG.md b/packages/image_picker/image_picker_windows/CHANGELOG.md
index b428a85..9c6267c 100644
--- a/packages/image_picker/image_picker_windows/CHANGELOG.md
+++ b/packages/image_picker/image_picker_windows/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 0.1.0+6
 
 * Clarifies explanation of endorsement in README.
diff --git a/packages/image_picker/image_picker_windows/example/pubspec.yaml b/packages/image_picker/image_picker_windows/example/pubspec.yaml
index b9f33ef..3f13f77 100644
--- a/packages/image_picker/image_picker_windows/example/pubspec.yaml
+++ b/packages/image_picker/image_picker_windows/example/pubspec.yaml
@@ -4,8 +4,8 @@
 version: 1.0.0
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/image_picker/image_picker_windows/pubspec.yaml b/packages/image_picker/image_picker_windows/pubspec.yaml
index 8611fc2..bcd8be0 100644
--- a/packages/image_picker/image_picker_windows/pubspec.yaml
+++ b/packages/image_picker/image_picker_windows/pubspec.yaml
@@ -5,8 +5,8 @@
 version: 0.1.0+6
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -26,4 +26,4 @@
   build_runner: ^2.1.5
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
diff --git a/packages/image_picker/image_picker_windows/test/image_picker_windows_test.mocks.dart b/packages/image_picker/image_picker_windows/test/image_picker_windows_test.mocks.dart
index be2dd2a..32fb380 100644
--- a/packages/image_picker/image_picker_windows/test/image_picker_windows_test.mocks.dart
+++ b/packages/image_picker/image_picker_windows/test/image_picker_windows_test.mocks.dart
@@ -1,7 +1,8 @@
-// Mocks generated by Mockito 5.1.0 from annotations
-// in image_picker_windows/example/windows/flutter/ephemeral/.plugin_symlinks/image_picker_windows/test/image_picker_windows_test.dart.
+// Mocks generated by Mockito 5.4.0 from annotations
+// in image_picker_windows/test/image_picker_windows_test.dart.
 // Do not manually edit this file.
 
+// ignore_for_file: no_leading_underscores_for_library_prefixes
 import 'dart:async' as _i3;
 
 import 'package:file_selector_platform_interface/file_selector_platform_interface.dart'
@@ -17,6 +18,7 @@
 // ignore_for_file: prefer_const_constructors
 // ignore_for_file: unnecessary_parenthesis
 // ignore_for_file: camel_case_types
+// ignore_for_file: subtype_of_sealed_class
 
 /// A class which mocks [FileSelectorPlatform].
 ///
@@ -28,51 +30,91 @@
   }
 
   @override
-  _i3.Future<_i2.XFile?> openFile(
-          {List<_i2.XTypeGroup>? acceptedTypeGroups,
-          String? initialDirectory,
-          String? confirmButtonText}) =>
+  _i3.Future<_i2.XFile?> openFile({
+    List<_i2.XTypeGroup>? acceptedTypeGroups,
+    String? initialDirectory,
+    String? confirmButtonText,
+  }) =>
       (super.noSuchMethod(
-          Invocation.method(#openFile, [], {
+        Invocation.method(
+          #openFile,
+          [],
+          {
             #acceptedTypeGroups: acceptedTypeGroups,
             #initialDirectory: initialDirectory,
-            #confirmButtonText: confirmButtonText
-          }),
-          returnValue: Future<_i2.XFile?>.value()) as _i3.Future<_i2.XFile?>);
+            #confirmButtonText: confirmButtonText,
+          },
+        ),
+        returnValue: _i3.Future<_i2.XFile?>.value(),
+      ) as _i3.Future<_i2.XFile?>);
   @override
-  _i3.Future<List<_i2.XFile>> openFiles(
-          {List<_i2.XTypeGroup>? acceptedTypeGroups,
-          String? initialDirectory,
-          String? confirmButtonText}) =>
+  _i3.Future<List<_i2.XFile>> openFiles({
+    List<_i2.XTypeGroup>? acceptedTypeGroups,
+    String? initialDirectory,
+    String? confirmButtonText,
+  }) =>
       (super.noSuchMethod(
-              Invocation.method(#openFiles, [], {
-                #acceptedTypeGroups: acceptedTypeGroups,
-                #initialDirectory: initialDirectory,
-                #confirmButtonText: confirmButtonText
-              }),
-              returnValue: Future<List<_i2.XFile>>.value(<_i2.XFile>[]))
-          as _i3.Future<List<_i2.XFile>>);
+        Invocation.method(
+          #openFiles,
+          [],
+          {
+            #acceptedTypeGroups: acceptedTypeGroups,
+            #initialDirectory: initialDirectory,
+            #confirmButtonText: confirmButtonText,
+          },
+        ),
+        returnValue: _i3.Future<List<_i2.XFile>>.value(<_i2.XFile>[]),
+      ) as _i3.Future<List<_i2.XFile>>);
   @override
-  _i3.Future<String?> getSavePath(
-          {List<_i2.XTypeGroup>? acceptedTypeGroups,
-          String? initialDirectory,
-          String? suggestedName,
-          String? confirmButtonText}) =>
+  _i3.Future<String?> getSavePath({
+    List<_i2.XTypeGroup>? acceptedTypeGroups,
+    String? initialDirectory,
+    String? suggestedName,
+    String? confirmButtonText,
+  }) =>
       (super.noSuchMethod(
-          Invocation.method(#getSavePath, [], {
+        Invocation.method(
+          #getSavePath,
+          [],
+          {
             #acceptedTypeGroups: acceptedTypeGroups,
             #initialDirectory: initialDirectory,
             #suggestedName: suggestedName,
-            #confirmButtonText: confirmButtonText
-          }),
-          returnValue: Future<String?>.value()) as _i3.Future<String?>);
+            #confirmButtonText: confirmButtonText,
+          },
+        ),
+        returnValue: _i3.Future<String?>.value(),
+      ) as _i3.Future<String?>);
   @override
-  _i3.Future<String?> getDirectoryPath(
-          {String? initialDirectory, String? confirmButtonText}) =>
+  _i3.Future<String?> getDirectoryPath({
+    String? initialDirectory,
+    String? confirmButtonText,
+  }) =>
       (super.noSuchMethod(
-          Invocation.method(#getDirectoryPath, [], {
+        Invocation.method(
+          #getDirectoryPath,
+          [],
+          {
             #initialDirectory: initialDirectory,
-            #confirmButtonText: confirmButtonText
-          }),
-          returnValue: Future<String?>.value()) as _i3.Future<String?>);
+            #confirmButtonText: confirmButtonText,
+          },
+        ),
+        returnValue: _i3.Future<String?>.value(),
+      ) as _i3.Future<String?>);
+  @override
+  _i3.Future<List<String>> getDirectoryPaths({
+    String? initialDirectory,
+    String? confirmButtonText,
+  }) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #getDirectoryPaths,
+          [],
+          {
+            #initialDirectory: initialDirectory,
+            #confirmButtonText: confirmButtonText,
+          },
+        ),
+        returnValue: _i3.Future<List<String>>.value(<String>[]),
+      ) as _i3.Future<List<String>>);
 }
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 6b63b1c..f87c7e9 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 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 0.2.4+3
 
 * Clarifies explanation of endorsement in README.
diff --git a/packages/in_app_purchase/in_app_purchase_android/example/pubspec.yaml b/packages/in_app_purchase/in_app_purchase_android/example/pubspec.yaml
index b04b571..a2b59a3 100644
--- a/packages/in_app_purchase/in_app_purchase_android/example/pubspec.yaml
+++ b/packages/in_app_purchase/in_app_purchase_android/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
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 acfe0fb..1acaba3 100644
--- a/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml
+++ b/packages/in_app_purchase/in_app_purchase_android/pubspec.yaml
@@ -5,8 +5,8 @@
 version: 0.2.4+3
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -28,5 +28,5 @@
   flutter_test:
     sdk: flutter
   json_serializable: ^6.3.1
-  mockito: 5.3.2
+  mockito: 5.4.0
   test: ^1.16.0
diff --git a/packages/in_app_purchase/in_app_purchase_platform_interface/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase_platform_interface/CHANGELOG.md
index 341218c..c639d58 100644
--- a/packages/in_app_purchase/in_app_purchase_platform_interface/CHANGELOG.md
+++ b/packages/in_app_purchase/in_app_purchase_platform_interface/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 1.3.3
diff --git a/packages/in_app_purchase/in_app_purchase_platform_interface/pubspec.yaml b/packages/in_app_purchase/in_app_purchase_platform_interface/pubspec.yaml
index e367064..868f758 100644
--- a/packages/in_app_purchase/in_app_purchase_platform_interface/pubspec.yaml
+++ b/packages/in_app_purchase/in_app_purchase_platform_interface/pubspec.yaml
@@ -7,8 +7,8 @@
 version: 1.3.3
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -18,4 +18,4 @@
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
diff --git a/packages/local_auth/local_auth/CHANGELOG.md b/packages/local_auth/local_auth/CHANGELOG.md
index 584daa8..b542eda 100644
--- a/packages/local_auth/local_auth/CHANGELOG.md
+++ b/packages/local_auth/local_auth/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 2.1.6
diff --git a/packages/local_auth/local_auth/example/pubspec.yaml b/packages/local_auth/local_auth/example/pubspec.yaml
index 0cbd4f8..53c5b88 100644
--- a/packages/local_auth/local_auth/example/pubspec.yaml
+++ b/packages/local_auth/local_auth/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/local_auth/local_auth/pubspec.yaml b/packages/local_auth/local_auth/pubspec.yaml
index f6cd378..a6cbe4a 100644
--- a/packages/local_auth/local_auth/pubspec.yaml
+++ b/packages/local_auth/local_auth/pubspec.yaml
@@ -6,8 +6,8 @@
 version: 2.1.6
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -34,5 +34,5 @@
     sdk: flutter
   integration_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   plugin_platform_interface: ^2.1.2
diff --git a/packages/local_auth/local_auth_platform_interface/CHANGELOG.md b/packages/local_auth/local_auth_platform_interface/CHANGELOG.md
index 201ffb1..815e843 100644
--- a/packages/local_auth/local_auth_platform_interface/CHANGELOG.md
+++ b/packages/local_auth/local_auth_platform_interface/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 1.0.7
diff --git a/packages/local_auth/local_auth_platform_interface/pubspec.yaml b/packages/local_auth/local_auth_platform_interface/pubspec.yaml
index bbb5a6c..7261704 100644
--- a/packages/local_auth/local_auth_platform_interface/pubspec.yaml
+++ b/packages/local_auth/local_auth_platform_interface/pubspec.yaml
@@ -7,8 +7,8 @@
 version: 1.0.7
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -18,4 +18,4 @@
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
diff --git a/packages/metrics_center/CHANGELOG.md b/packages/metrics_center/CHANGELOG.md
index 80bf962..ca21682 100644
--- a/packages/metrics_center/CHANGELOG.md
+++ b/packages/metrics_center/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 1.0.7
 
 * Updates code to fix strict-cast violations.
diff --git a/packages/metrics_center/pubspec.yaml b/packages/metrics_center/pubspec.yaml
index cbe6349..2898107 100644
--- a/packages/metrics_center/pubspec.yaml
+++ b/packages/metrics_center/pubspec.yaml
@@ -6,7 +6,7 @@
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+metrics_center%22
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
+  sdk: ">=2.18.0 <4.0.0"
 
 dependencies:
   crypto: ^3.0.1
@@ -19,5 +19,5 @@
 dev_dependencies:
   build_runner: ^2.1.1
   fake_async: ^1.2.0
-  mockito: 5.3.2
+  mockito: 5.4.0
   test: ^1.17.11
diff --git a/packages/metrics_center/test/gcs_lock_test.mocks.dart b/packages/metrics_center/test/gcs_lock_test.mocks.dart
index 7f86e40..93ff8e1 100644
--- a/packages/metrics_center/test/gcs_lock_test.mocks.dart
+++ b/packages/metrics_center/test/gcs_lock_test.mocks.dart
@@ -1,7 +1,8 @@
-// Mocks generated by Mockito 5.0.14 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in metrics_center/test/gcs_lock_test.dart.
 // Do not manually edit this file.
 
+// ignore_for_file: no_leading_underscores_for_library_prefixes
 import 'dart:async' as _i5;
 import 'dart:convert' as _i6;
 import 'dart:typed_data' as _i7;
@@ -11,24 +12,48 @@
 import 'package:http/http.dart' as _i3;
 import 'package:mockito/mockito.dart' as _i1;
 
-// ignore_for_file: always_specify_types
+// ignore_for_file: type=lint
 // ignore_for_file: avoid_redundant_argument_values
 // ignore_for_file: avoid_setters_without_getters
-// ignore_for_file: camel_case_types
 // ignore_for_file: comment_references
 // ignore_for_file: implementation_imports
 // ignore_for_file: invalid_use_of_visible_for_testing_member
 // ignore_for_file: prefer_const_constructors
-// ignore_for_file: unnecessary_overrides
 // ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: camel_case_types
+// ignore_for_file: subtype_of_sealed_class
 
-class _FakeAccessCredentials_0 extends _i1.Fake
-    implements _i2.AccessCredentials {}
+class _FakeAccessCredentials_0 extends _i1.SmartFake
+    implements _i2.AccessCredentials {
+  _FakeAccessCredentials_0(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
-class _FakeResponse_1 extends _i1.Fake implements _i3.Response {}
+class _FakeResponse_1 extends _i1.SmartFake implements _i3.Response {
+  _FakeResponse_1(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
-class _FakeStreamedResponse_2 extends _i1.Fake
-    implements _i3.StreamedResponse {}
+class _FakeStreamedResponse_2 extends _i1.SmartFake
+    implements _i3.StreamedResponse {
+  _FakeStreamedResponse_2(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
 /// A class which mocks [AuthClient].
 ///
@@ -39,79 +64,221 @@
   }
 
   @override
-  _i2.AccessCredentials get credentials =>
-      (super.noSuchMethod(Invocation.getter(#credentials),
-          returnValue: _FakeAccessCredentials_0()) as _i2.AccessCredentials);
+  _i2.AccessCredentials get credentials => (super.noSuchMethod(
+        Invocation.getter(#credentials),
+        returnValue: _FakeAccessCredentials_0(
+          this,
+          Invocation.getter(#credentials),
+        ),
+      ) as _i2.AccessCredentials);
   @override
-  String toString() => super.toString();
-  @override
-  _i5.Future<_i3.Response> head(Uri? url, {Map<String, String>? headers}) =>
-      (super.noSuchMethod(Invocation.method(#head, [url], {#headers: headers}),
-              returnValue: Future<_i3.Response>.value(_FakeResponse_1()))
-          as _i5.Future<_i3.Response>);
-  @override
-  _i5.Future<_i3.Response> get(Uri? url, {Map<String, String>? headers}) =>
-      (super.noSuchMethod(Invocation.method(#get, [url], {#headers: headers}),
-              returnValue: Future<_i3.Response>.value(_FakeResponse_1()))
-          as _i5.Future<_i3.Response>);
-  @override
-  _i5.Future<_i3.Response> post(Uri? url,
-          {Map<String, String>? headers,
-          Object? body,
-          _i6.Encoding? encoding}) =>
+  _i5.Future<_i3.Response> head(
+    Uri? url, {
+    Map<String, String>? headers,
+  }) =>
       (super.noSuchMethod(
-              Invocation.method(#post, [url],
-                  {#headers: headers, #body: body, #encoding: encoding}),
-              returnValue: Future<_i3.Response>.value(_FakeResponse_1()))
-          as _i5.Future<_i3.Response>);
+        Invocation.method(
+          #head,
+          [url],
+          {#headers: headers},
+        ),
+        returnValue: _i5.Future<_i3.Response>.value(_FakeResponse_1(
+          this,
+          Invocation.method(
+            #head,
+            [url],
+            {#headers: headers},
+          ),
+        )),
+      ) as _i5.Future<_i3.Response>);
   @override
-  _i5.Future<_i3.Response> put(Uri? url,
-          {Map<String, String>? headers,
-          Object? body,
-          _i6.Encoding? encoding}) =>
+  _i5.Future<_i3.Response> get(
+    Uri? url, {
+    Map<String, String>? headers,
+  }) =>
       (super.noSuchMethod(
-              Invocation.method(#put, [url],
-                  {#headers: headers, #body: body, #encoding: encoding}),
-              returnValue: Future<_i3.Response>.value(_FakeResponse_1()))
-          as _i5.Future<_i3.Response>);
+        Invocation.method(
+          #get,
+          [url],
+          {#headers: headers},
+        ),
+        returnValue: _i5.Future<_i3.Response>.value(_FakeResponse_1(
+          this,
+          Invocation.method(
+            #get,
+            [url],
+            {#headers: headers},
+          ),
+        )),
+      ) as _i5.Future<_i3.Response>);
   @override
-  _i5.Future<_i3.Response> patch(Uri? url,
-          {Map<String, String>? headers,
-          Object? body,
-          _i6.Encoding? encoding}) =>
+  _i5.Future<_i3.Response> post(
+    Uri? url, {
+    Map<String, String>? headers,
+    Object? body,
+    _i6.Encoding? encoding,
+  }) =>
       (super.noSuchMethod(
-              Invocation.method(#patch, [url],
-                  {#headers: headers, #body: body, #encoding: encoding}),
-              returnValue: Future<_i3.Response>.value(_FakeResponse_1()))
-          as _i5.Future<_i3.Response>);
+        Invocation.method(
+          #post,
+          [url],
+          {
+            #headers: headers,
+            #body: body,
+            #encoding: encoding,
+          },
+        ),
+        returnValue: _i5.Future<_i3.Response>.value(_FakeResponse_1(
+          this,
+          Invocation.method(
+            #post,
+            [url],
+            {
+              #headers: headers,
+              #body: body,
+              #encoding: encoding,
+            },
+          ),
+        )),
+      ) as _i5.Future<_i3.Response>);
   @override
-  _i5.Future<_i3.Response> delete(Uri? url,
-          {Map<String, String>? headers,
-          Object? body,
-          _i6.Encoding? encoding}) =>
+  _i5.Future<_i3.Response> put(
+    Uri? url, {
+    Map<String, String>? headers,
+    Object? body,
+    _i6.Encoding? encoding,
+  }) =>
       (super.noSuchMethod(
-              Invocation.method(#delete, [url],
-                  {#headers: headers, #body: body, #encoding: encoding}),
-              returnValue: Future<_i3.Response>.value(_FakeResponse_1()))
-          as _i5.Future<_i3.Response>);
+        Invocation.method(
+          #put,
+          [url],
+          {
+            #headers: headers,
+            #body: body,
+            #encoding: encoding,
+          },
+        ),
+        returnValue: _i5.Future<_i3.Response>.value(_FakeResponse_1(
+          this,
+          Invocation.method(
+            #put,
+            [url],
+            {
+              #headers: headers,
+              #body: body,
+              #encoding: encoding,
+            },
+          ),
+        )),
+      ) as _i5.Future<_i3.Response>);
   @override
-  _i5.Future<String> read(Uri? url, {Map<String, String>? headers}) =>
-      (super.noSuchMethod(Invocation.method(#read, [url], {#headers: headers}),
-          returnValue: Future<String>.value('')) as _i5.Future<String>);
-  @override
-  _i5.Future<_i7.Uint8List> readBytes(Uri? url,
-          {Map<String, String>? headers}) =>
+  _i5.Future<_i3.Response> patch(
+    Uri? url, {
+    Map<String, String>? headers,
+    Object? body,
+    _i6.Encoding? encoding,
+  }) =>
       (super.noSuchMethod(
-              Invocation.method(#readBytes, [url], {#headers: headers}),
-              returnValue: Future<_i7.Uint8List>.value(_i7.Uint8List(0)))
-          as _i5.Future<_i7.Uint8List>);
+        Invocation.method(
+          #patch,
+          [url],
+          {
+            #headers: headers,
+            #body: body,
+            #encoding: encoding,
+          },
+        ),
+        returnValue: _i5.Future<_i3.Response>.value(_FakeResponse_1(
+          this,
+          Invocation.method(
+            #patch,
+            [url],
+            {
+              #headers: headers,
+              #body: body,
+              #encoding: encoding,
+            },
+          ),
+        )),
+      ) as _i5.Future<_i3.Response>);
+  @override
+  _i5.Future<_i3.Response> delete(
+    Uri? url, {
+    Map<String, String>? headers,
+    Object? body,
+    _i6.Encoding? encoding,
+  }) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #delete,
+          [url],
+          {
+            #headers: headers,
+            #body: body,
+            #encoding: encoding,
+          },
+        ),
+        returnValue: _i5.Future<_i3.Response>.value(_FakeResponse_1(
+          this,
+          Invocation.method(
+            #delete,
+            [url],
+            {
+              #headers: headers,
+              #body: body,
+              #encoding: encoding,
+            },
+          ),
+        )),
+      ) as _i5.Future<_i3.Response>);
+  @override
+  _i5.Future<String> read(
+    Uri? url, {
+    Map<String, String>? headers,
+  }) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #read,
+          [url],
+          {#headers: headers},
+        ),
+        returnValue: _i5.Future<String>.value(''),
+      ) as _i5.Future<String>);
+  @override
+  _i5.Future<_i7.Uint8List> readBytes(
+    Uri? url, {
+    Map<String, String>? headers,
+  }) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #readBytes,
+          [url],
+          {#headers: headers},
+        ),
+        returnValue: _i5.Future<_i7.Uint8List>.value(_i7.Uint8List(0)),
+      ) as _i5.Future<_i7.Uint8List>);
   @override
   _i5.Future<_i3.StreamedResponse> send(_i3.BaseRequest? request) =>
-      (super.noSuchMethod(Invocation.method(#send, [request]),
-              returnValue:
-                  Future<_i3.StreamedResponse>.value(_FakeStreamedResponse_2()))
-          as _i5.Future<_i3.StreamedResponse>);
+      (super.noSuchMethod(
+        Invocation.method(
+          #send,
+          [request],
+        ),
+        returnValue:
+            _i5.Future<_i3.StreamedResponse>.value(_FakeStreamedResponse_2(
+          this,
+          Invocation.method(
+            #send,
+            [request],
+          ),
+        )),
+      ) as _i5.Future<_i3.StreamedResponse>);
   @override
-  void close() => super.noSuchMethod(Invocation.method(#close, []),
-      returnValueForMissingStub: null);
+  void close() => super.noSuchMethod(
+        Invocation.method(
+          #close,
+          [],
+        ),
+        returnValueForMissingStub: null,
+      );
 }
diff --git a/packages/metrics_center/test/skiaperf_test.mocks.dart b/packages/metrics_center/test/skiaperf_test.mocks.dart
index edb4727..9875765 100644
--- a/packages/metrics_center/test/skiaperf_test.mocks.dart
+++ b/packages/metrics_center/test/skiaperf_test.mocks.dart
@@ -1,38 +1,96 @@
-// Mocks generated by Mockito 5.0.14 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in metrics_center/test/skiaperf_test.dart.
 // Do not manually edit this file.
 
+// ignore_for_file: no_leading_underscores_for_library_prefixes
 import 'dart:async' as _i2;
 
 import 'package:gcloud/common.dart' as _i4;
 import 'package:gcloud/storage.dart' as _i3;
 import 'package:mockito/mockito.dart' as _i1;
 
-// ignore_for_file: always_specify_types
+// ignore_for_file: type=lint
 // ignore_for_file: avoid_redundant_argument_values
 // ignore_for_file: avoid_setters_without_getters
-// ignore_for_file: camel_case_types
 // ignore_for_file: comment_references
 // ignore_for_file: implementation_imports
 // ignore_for_file: invalid_use_of_visible_for_testing_member
 // ignore_for_file: prefer_const_constructors
-// ignore_for_file: unnecessary_overrides
 // ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: camel_case_types
+// ignore_for_file: subtype_of_sealed_class
 
-class _FakeStreamSink_0<S> extends _i1.Fake implements _i2.StreamSink<S> {}
+class _FakeStreamSink_0<S> extends _i1.SmartFake implements _i2.StreamSink<S> {
+  _FakeStreamSink_0(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
-class _FakeObjectInfo_1 extends _i1.Fake implements _i3.ObjectInfo {}
+class _FakeObjectInfo_1 extends _i1.SmartFake implements _i3.ObjectInfo {
+  _FakeObjectInfo_1(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
-class _FakePage_2<T> extends _i1.Fake implements _i4.Page<T> {}
+class _FakePage_2<T> extends _i1.SmartFake implements _i4.Page<T> {
+  _FakePage_2(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
-class _FakeDateTime_3 extends _i1.Fake implements DateTime {}
+class _FakeDateTime_3 extends _i1.SmartFake implements DateTime {
+  _FakeDateTime_3(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
-class _FakeUri_4 extends _i1.Fake implements Uri {}
+class _FakeUri_4 extends _i1.SmartFake implements Uri {
+  _FakeUri_4(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
-class _FakeObjectGeneration_5 extends _i1.Fake
-    implements _i3.ObjectGeneration {}
+class _FakeObjectGeneration_5 extends _i1.SmartFake
+    implements _i3.ObjectGeneration {
+  _FakeObjectGeneration_5(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
-class _FakeObjectMetadata_6 extends _i1.Fake implements _i3.ObjectMetadata {}
+class _FakeObjectMetadata_6 extends _i1.SmartFake
+    implements _i3.ObjectMetadata {
+  _FakeObjectMetadata_6(
+    Object parent,
+    Invocation parentInvocation,
+  ) : super(
+          parent,
+          parentInvocation,
+        );
+}
 
 /// A class which mocks [Bucket].
 ///
@@ -43,92 +101,194 @@
   }
 
   @override
-  String get bucketName =>
-      (super.noSuchMethod(Invocation.getter(#bucketName), returnValue: '')
-          as String);
+  String get bucketName => (super.noSuchMethod(
+        Invocation.getter(#bucketName),
+        returnValue: '',
+      ) as String);
   @override
-  String absoluteObjectName(String? objectName) =>
-      (super.noSuchMethod(Invocation.method(#absoluteObjectName, [objectName]),
-          returnValue: '') as String);
+  String absoluteObjectName(String? objectName) => (super.noSuchMethod(
+        Invocation.method(
+          #absoluteObjectName,
+          [objectName],
+        ),
+        returnValue: '',
+      ) as String);
   @override
-  _i2.StreamSink<List<int>> write(String? objectName,
-          {int? length,
-          _i3.ObjectMetadata? metadata,
-          _i3.Acl? acl,
-          _i3.PredefinedAcl? predefinedAcl,
-          String? contentType}) =>
+  _i2.StreamSink<List<int>> write(
+    String? objectName, {
+    int? length,
+    _i3.ObjectMetadata? metadata,
+    _i3.Acl? acl,
+    _i3.PredefinedAcl? predefinedAcl,
+    String? contentType,
+  }) =>
       (super.noSuchMethod(
-              Invocation.method(#write, [
-                objectName
-              ], {
-                #length: length,
-                #metadata: metadata,
-                #acl: acl,
-                #predefinedAcl: predefinedAcl,
-                #contentType: contentType
-              }),
-              returnValue: _FakeStreamSink_0<List<int>>())
-          as _i2.StreamSink<List<int>>);
-  @override
-  _i2.Future<_i3.ObjectInfo> writeBytes(String? name, List<int>? bytes,
-          {_i3.ObjectMetadata? metadata,
-          _i3.Acl? acl,
-          _i3.PredefinedAcl? predefinedAcl,
-          String? contentType}) =>
-      (super.noSuchMethod(
-              Invocation.method(#writeBytes, [
-                name,
-                bytes
-              ], {
-                #metadata: metadata,
-                #acl: acl,
-                #predefinedAcl: predefinedAcl,
-                #contentType: contentType
-              }),
-              returnValue: Future<_i3.ObjectInfo>.value(_FakeObjectInfo_1()))
-          as _i2.Future<_i3.ObjectInfo>);
-  @override
-  _i2.Stream<List<int>> read(String? objectName, {int? offset, int? length}) =>
-      (super.noSuchMethod(
+        Invocation.method(
+          #write,
+          [objectName],
+          {
+            #length: length,
+            #metadata: metadata,
+            #acl: acl,
+            #predefinedAcl: predefinedAcl,
+            #contentType: contentType,
+          },
+        ),
+        returnValue: _FakeStreamSink_0<List<int>>(
+          this,
           Invocation.method(
-              #read, [objectName], {#offset: offset, #length: length}),
-          returnValue: Stream<List<int>>.empty()) as _i2.Stream<List<int>>);
+            #write,
+            [objectName],
+            {
+              #length: length,
+              #metadata: metadata,
+              #acl: acl,
+              #predefinedAcl: predefinedAcl,
+              #contentType: contentType,
+            },
+          ),
+        ),
+      ) as _i2.StreamSink<List<int>>);
   @override
-  _i2.Future<_i3.ObjectInfo> info(String? name) =>
-      (super.noSuchMethod(Invocation.method(#info, [name]),
-              returnValue: Future<_i3.ObjectInfo>.value(_FakeObjectInfo_1()))
-          as _i2.Future<_i3.ObjectInfo>);
+  _i2.Future<_i3.ObjectInfo> writeBytes(
+    String? name,
+    List<int>? bytes, {
+    _i3.ObjectMetadata? metadata,
+    _i3.Acl? acl,
+    _i3.PredefinedAcl? predefinedAcl,
+    String? contentType,
+  }) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #writeBytes,
+          [
+            name,
+            bytes,
+          ],
+          {
+            #metadata: metadata,
+            #acl: acl,
+            #predefinedAcl: predefinedAcl,
+            #contentType: contentType,
+          },
+        ),
+        returnValue: _i2.Future<_i3.ObjectInfo>.value(_FakeObjectInfo_1(
+          this,
+          Invocation.method(
+            #writeBytes,
+            [
+              name,
+              bytes,
+            ],
+            {
+              #metadata: metadata,
+              #acl: acl,
+              #predefinedAcl: predefinedAcl,
+              #contentType: contentType,
+            },
+          ),
+        )),
+      ) as _i2.Future<_i3.ObjectInfo>);
   @override
-  _i2.Future<dynamic> delete(String? name) =>
-      (super.noSuchMethod(Invocation.method(#delete, [name]),
-          returnValue: Future<dynamic>.value()) as _i2.Future<dynamic>);
+  _i2.Stream<List<int>> read(
+    String? objectName, {
+    int? offset,
+    int? length,
+  }) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #read,
+          [objectName],
+          {
+            #offset: offset,
+            #length: length,
+          },
+        ),
+        returnValue: _i2.Stream<List<int>>.empty(),
+      ) as _i2.Stream<List<int>>);
+  @override
+  _i2.Future<_i3.ObjectInfo> info(String? name) => (super.noSuchMethod(
+        Invocation.method(
+          #info,
+          [name],
+        ),
+        returnValue: _i2.Future<_i3.ObjectInfo>.value(_FakeObjectInfo_1(
+          this,
+          Invocation.method(
+            #info,
+            [name],
+          ),
+        )),
+      ) as _i2.Future<_i3.ObjectInfo>);
+  @override
+  _i2.Future<dynamic> delete(String? name) => (super.noSuchMethod(
+        Invocation.method(
+          #delete,
+          [name],
+        ),
+        returnValue: _i2.Future<dynamic>.value(),
+      ) as _i2.Future<dynamic>);
   @override
   _i2.Future<dynamic> updateMetadata(
-          String? objectName, _i3.ObjectMetadata? metadata) =>
+    String? objectName,
+    _i3.ObjectMetadata? metadata,
+  ) =>
       (super.noSuchMethod(
-          Invocation.method(#updateMetadata, [objectName, metadata]),
-          returnValue: Future<dynamic>.value()) as _i2.Future<dynamic>);
+        Invocation.method(
+          #updateMetadata,
+          [
+            objectName,
+            metadata,
+          ],
+        ),
+        returnValue: _i2.Future<dynamic>.value(),
+      ) as _i2.Future<dynamic>);
   @override
-  _i2.Stream<_i3.BucketEntry> list({String? prefix, String? delimiter}) =>
+  _i2.Stream<_i3.BucketEntry> list({
+    String? prefix,
+    String? delimiter,
+  }) =>
       (super.noSuchMethod(
-              Invocation.method(
-                  #list, [], {#prefix: prefix, #delimiter: delimiter}),
-              returnValue: Stream<_i3.BucketEntry>.empty())
-          as _i2.Stream<_i3.BucketEntry>);
+        Invocation.method(
+          #list,
+          [],
+          {
+            #prefix: prefix,
+            #delimiter: delimiter,
+          },
+        ),
+        returnValue: _i2.Stream<_i3.BucketEntry>.empty(),
+      ) as _i2.Stream<_i3.BucketEntry>);
   @override
-  _i2.Future<_i4.Page<_i3.BucketEntry>> page(
-          {String? prefix, String? delimiter, int? pageSize = 50}) =>
+  _i2.Future<_i4.Page<_i3.BucketEntry>> page({
+    String? prefix,
+    String? delimiter,
+    int? pageSize = 50,
+  }) =>
       (super.noSuchMethod(
-              Invocation.method(#page, [], {
-                #prefix: prefix,
-                #delimiter: delimiter,
-                #pageSize: pageSize
-              }),
-              returnValue: Future<_i4.Page<_i3.BucketEntry>>.value(
-                  _FakePage_2<_i3.BucketEntry>()))
-          as _i2.Future<_i4.Page<_i3.BucketEntry>>);
-  @override
-  String toString() => super.toString();
+        Invocation.method(
+          #page,
+          [],
+          {
+            #prefix: prefix,
+            #delimiter: delimiter,
+            #pageSize: pageSize,
+          },
+        ),
+        returnValue: _i2.Future<_i4.Page<_i3.BucketEntry>>.value(
+            _FakePage_2<_i3.BucketEntry>(
+          this,
+          Invocation.method(
+            #page,
+            [],
+            {
+              #prefix: prefix,
+              #delimiter: delimiter,
+              #pageSize: pageSize,
+            },
+          ),
+        )),
+      ) as _i2.Future<_i4.Page<_i3.BucketEntry>>);
 }
 
 /// A class which mocks [ObjectInfo].
@@ -140,36 +300,60 @@
   }
 
   @override
-  String get name =>
-      (super.noSuchMethod(Invocation.getter(#name), returnValue: '') as String);
+  String get name => (super.noSuchMethod(
+        Invocation.getter(#name),
+        returnValue: '',
+      ) as String);
   @override
-  int get length =>
-      (super.noSuchMethod(Invocation.getter(#length), returnValue: 0) as int);
+  int get length => (super.noSuchMethod(
+        Invocation.getter(#length),
+        returnValue: 0,
+      ) as int);
   @override
-  DateTime get updated => (super.noSuchMethod(Invocation.getter(#updated),
-      returnValue: _FakeDateTime_3()) as DateTime);
+  DateTime get updated => (super.noSuchMethod(
+        Invocation.getter(#updated),
+        returnValue: _FakeDateTime_3(
+          this,
+          Invocation.getter(#updated),
+        ),
+      ) as DateTime);
   @override
-  String get etag =>
-      (super.noSuchMethod(Invocation.getter(#etag), returnValue: '') as String);
+  String get etag => (super.noSuchMethod(
+        Invocation.getter(#etag),
+        returnValue: '',
+      ) as String);
   @override
-  List<int> get md5Hash =>
-      (super.noSuchMethod(Invocation.getter(#md5Hash), returnValue: <int>[])
-          as List<int>);
+  List<int> get md5Hash => (super.noSuchMethod(
+        Invocation.getter(#md5Hash),
+        returnValue: <int>[],
+      ) as List<int>);
   @override
-  int get crc32CChecksum =>
-      (super.noSuchMethod(Invocation.getter(#crc32CChecksum), returnValue: 0)
-          as int);
+  int get crc32CChecksum => (super.noSuchMethod(
+        Invocation.getter(#crc32CChecksum),
+        returnValue: 0,
+      ) as int);
   @override
-  Uri get downloadLink => (super.noSuchMethod(Invocation.getter(#downloadLink),
-      returnValue: _FakeUri_4()) as Uri);
+  Uri get downloadLink => (super.noSuchMethod(
+        Invocation.getter(#downloadLink),
+        returnValue: _FakeUri_4(
+          this,
+          Invocation.getter(#downloadLink),
+        ),
+      ) as Uri);
   @override
-  _i3.ObjectGeneration get generation =>
-      (super.noSuchMethod(Invocation.getter(#generation),
-          returnValue: _FakeObjectGeneration_5()) as _i3.ObjectGeneration);
+  _i3.ObjectGeneration get generation => (super.noSuchMethod(
+        Invocation.getter(#generation),
+        returnValue: _FakeObjectGeneration_5(
+          this,
+          Invocation.getter(#generation),
+        ),
+      ) as _i3.ObjectGeneration);
   @override
-  _i3.ObjectMetadata get metadata =>
-      (super.noSuchMethod(Invocation.getter(#metadata),
-          returnValue: _FakeObjectMetadata_6()) as _i3.ObjectMetadata);
-  @override
-  String toString() => super.toString();
+  _i3.ObjectMetadata get metadata => (super.noSuchMethod(
+        Invocation.getter(#metadata),
+        returnValue: _FakeObjectMetadata_6(
+          this,
+          Invocation.getter(#metadata),
+        ),
+      ) as _i3.ObjectMetadata);
 }
diff --git a/packages/path_provider/path_provider_foundation/CHANGELOG.md b/packages/path_provider/path_provider_foundation/CHANGELOG.md
index 7849e7e..0dfe972 100644
--- a/packages/path_provider/path_provider_foundation/CHANGELOG.md
+++ b/packages/path_provider/path_provider_foundation/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 2.2.1
 
 * Updates to `pigeon` version 9.
diff --git a/packages/path_provider/path_provider_foundation/example/pubspec.yaml b/packages/path_provider/path_provider_foundation/example/pubspec.yaml
index 44bf05a..64caf32 100644
--- a/packages/path_provider/path_provider_foundation/example/pubspec.yaml
+++ b/packages/path_provider/path_provider_foundation/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/path_provider/path_provider_foundation/pubspec.yaml b/packages/path_provider/path_provider_foundation/pubspec.yaml
index def22af..89e0a12 100644
--- a/packages/path_provider/path_provider_foundation/pubspec.yaml
+++ b/packages/path_provider/path_provider_foundation/pubspec.yaml
@@ -5,8 +5,8 @@
 version: 2.2.1
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -30,6 +30,6 @@
   build_runner: ^2.3.2
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   path: ^1.8.0
   pigeon: ^9.1.0
diff --git a/packages/path_provider/path_provider_foundation/test/path_provider_foundation_test.mocks.dart b/packages/path_provider/path_provider_foundation/test/path_provider_foundation_test.mocks.dart
index 62db996..3a6b0f1 100644
--- a/packages/path_provider/path_provider_foundation/test/path_provider_foundation_test.mocks.dart
+++ b/packages/path_provider/path_provider_foundation/test/path_provider_foundation_test.mocks.dart
@@ -1,5 +1,5 @@
-// Mocks generated by Mockito 5.3.2 from annotations
-// in path_provider_foundation/example/ios/.symlinks/plugins/path_provider_foundation/test/path_provider_foundation_test.dart.
+// Mocks generated by Mockito 5.4.0 from annotations
+// in path_provider_foundation/test/path_provider_foundation_test.dart.
 // Do not manually edit this file.
 
 // ignore_for_file: no_leading_underscores_for_library_prefixes
diff --git a/packages/pigeon/CHANGELOG.md b/packages/pigeon/CHANGELOG.md
index 6cd4894..5f6bf7d 100644
--- a/packages/pigeon/CHANGELOG.md
+++ b/packages/pigeon/CHANGELOG.md
@@ -1,6 +1,7 @@
 ## 9.1.2
 
 * [cpp] Fixes class parameters to Flutter APIs.
+* Updates minimum Flutter version to 3.3.
 
 ## 9.1.1
 
diff --git a/packages/pigeon/mock_handler_tester/pubspec.yaml b/packages/pigeon/mock_handler_tester/pubspec.yaml
index 010ce2c..69eba84 100644
--- a/packages/pigeon/mock_handler_tester/pubspec.yaml
+++ b/packages/pigeon/mock_handler_tester/pubspec.yaml
@@ -4,8 +4,8 @@
 version: 1.0.0+1
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   cupertino_icons: ^1.0.2
diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/pubspec.yaml b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/pubspec.yaml
index 022b194..1204098 100644
--- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/pubspec.yaml
+++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none # Remove this line if you wish to publish to pub.dev
 version: 1.0.0+1
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -14,7 +14,7 @@
   build_runner: ^2.1.10
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
 
 flutter:
   uses-material-design: true
diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/all_datatypes_test.mocks.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/all_datatypes_test.mocks.dart
deleted file mode 100644
index 1a5de52..0000000
--- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/all_datatypes_test.mocks.dart
+++ /dev/null
@@ -1,42 +0,0 @@
-// Mocks generated by Mockito 5.0.7 from annotations
-// in flutter_unit_tests/test/all_datatypes_test.dart.
-// Do not manually edit this file.
-
-import 'dart:async' as _i3;
-import 'dart:typed_data' as _i4;
-import 'dart:ui' as _i5;
-
-import 'package:flutter/src/services/binary_messenger.dart' as _i2;
-import 'package:mockito/mockito.dart' as _i1;
-
-// ignore_for_file: comment_references
-// ignore_for_file: unnecessary_parenthesis
-
-// ignore_for_file: prefer_const_constructors
-
-// ignore_for_file: avoid_redundant_argument_values
-
-/// A class which mocks [BinaryMessenger].
-///
-/// See the documentation for Mockito's code generation for more information.
-class MockBinaryMessenger extends _i1.Mock implements _i2.BinaryMessenger {
-  MockBinaryMessenger() {
-    _i1.throwOnMissingStub(this);
-  }
-
-  @override
-  _i3.Future<void> handlePlatformMessage(String? channel, _i4.ByteData? data,
-          _i5.PlatformMessageResponseCallback? callback) =>
-      (super.noSuchMethod(
-          Invocation.method(#handlePlatformMessage, [channel, data, callback]),
-          returnValue: Future<void>.value(null),
-          returnValueForMissingStub: Future.value()) as _i3.Future<void>);
-  @override
-  _i3.Future<_i4.ByteData?>? send(String? channel, _i4.ByteData? message) =>
-      (super.noSuchMethod(Invocation.method(#send, [channel, message]))
-          as _i3.Future<_i4.ByteData?>?);
-  @override
-  void setMessageHandler(String? channel, _i2.MessageHandler? handler) => super
-      .noSuchMethod(Invocation.method(#setMessageHandler, [channel, handler]),
-          returnValueForMissingStub: null);
-}
diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/multiple_arity_test.mocks.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/multiple_arity_test.mocks.dart
index ff0400d..0214f7e 100644
--- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/multiple_arity_test.mocks.dart
+++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/multiple_arity_test.mocks.dart
@@ -1,7 +1,8 @@
-// Mocks generated by Mockito 5.0.7 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in flutter_unit_tests/test/multiple_arity_test.dart.
 // Do not manually edit this file.
 
+// ignore_for_file: no_leading_underscores_for_library_prefixes
 import 'dart:async' as _i3;
 import 'dart:typed_data' as _i4;
 import 'dart:ui' as _i5;
@@ -9,12 +10,16 @@
 import 'package:flutter/src/services/binary_messenger.dart' as _i2;
 import 'package:mockito/mockito.dart' as _i1;
 
-// ignore_for_file: comment_references
-// ignore_for_file: unnecessary_parenthesis
-
-// ignore_for_file: prefer_const_constructors
-
+// ignore_for_file: type=lint
 // ignore_for_file: avoid_redundant_argument_values
+// ignore_for_file: avoid_setters_without_getters
+// ignore_for_file: comment_references
+// ignore_for_file: implementation_imports
+// ignore_for_file: invalid_use_of_visible_for_testing_member
+// ignore_for_file: prefer_const_constructors
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: camel_case_types
+// ignore_for_file: subtype_of_sealed_class
 
 /// A class which mocks [BinaryMessenger].
 ///
@@ -25,18 +30,48 @@
   }
 
   @override
-  _i3.Future<void> handlePlatformMessage(String? channel, _i4.ByteData? data,
-          _i5.PlatformMessageResponseCallback? callback) =>
+  _i3.Future<void> handlePlatformMessage(
+    String? channel,
+    _i4.ByteData? data,
+    _i5.PlatformMessageResponseCallback? callback,
+  ) =>
       (super.noSuchMethod(
-          Invocation.method(#handlePlatformMessage, [channel, data, callback]),
-          returnValue: Future<void>.value(null),
-          returnValueForMissingStub: Future.value()) as _i3.Future<void>);
+        Invocation.method(
+          #handlePlatformMessage,
+          [
+            channel,
+            data,
+            callback,
+          ],
+        ),
+        returnValue: _i3.Future<void>.value(),
+        returnValueForMissingStub: _i3.Future<void>.value(),
+      ) as _i3.Future<void>);
   @override
-  _i3.Future<_i4.ByteData?>? send(String? channel, _i4.ByteData? message) =>
-      (super.noSuchMethod(Invocation.method(#send, [channel, message]))
-          as _i3.Future<_i4.ByteData?>?);
+  _i3.Future<_i4.ByteData?>? send(
+    String? channel,
+    _i4.ByteData? message,
+  ) =>
+      (super.noSuchMethod(Invocation.method(
+        #send,
+        [
+          channel,
+          message,
+        ],
+      )) as _i3.Future<_i4.ByteData?>?);
   @override
-  void setMessageHandler(String? channel, _i2.MessageHandler? handler) => super
-      .noSuchMethod(Invocation.method(#setMessageHandler, [channel, handler]),
-          returnValueForMissingStub: null);
+  void setMessageHandler(
+    String? channel,
+    _i2.MessageHandler? handler,
+  ) =>
+      super.noSuchMethod(
+        Invocation.method(
+          #setMessageHandler,
+          [
+            channel,
+            handler,
+          ],
+        ),
+        returnValueForMissingStub: null,
+      );
 }
diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.mocks.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.mocks.dart
index 9b5bfcb..c48bb3f 100644
--- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.mocks.dart
+++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/null_safe_test.mocks.dart
@@ -1,21 +1,26 @@
-// Mocks generated by Mockito 5.0.7 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in flutter_unit_tests/test/null_safe_test.dart.
 // Do not manually edit this file.
 
+// ignore_for_file: no_leading_underscores_for_library_prefixes
 import 'dart:async' as _i3;
 import 'dart:typed_data' as _i4;
 import 'dart:ui' as _i5;
 
-import 'package:flutter/src/services/binary_messenger.dart' as _i2;
+import 'package:flutter/services.dart' as _i2;
 import 'package:flutter_unit_tests/nullable_returns.gen.dart' as _i6;
 import 'package:mockito/mockito.dart' as _i1;
 
-// ignore_for_file: comment_references
-// ignore_for_file: unnecessary_parenthesis
-
-// ignore_for_file: prefer_const_constructors
-
+// ignore_for_file: type=lint
 // ignore_for_file: avoid_redundant_argument_values
+// ignore_for_file: avoid_setters_without_getters
+// ignore_for_file: comment_references
+// ignore_for_file: implementation_imports
+// ignore_for_file: invalid_use_of_visible_for_testing_member
+// ignore_for_file: prefer_const_constructors
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: camel_case_types
+// ignore_for_file: subtype_of_sealed_class
 
 /// A class which mocks [BinaryMessenger].
 ///
@@ -26,20 +31,50 @@
   }
 
   @override
-  _i3.Future<void> handlePlatformMessage(String? channel, _i4.ByteData? data,
-          _i5.PlatformMessageResponseCallback? callback) =>
+  _i3.Future<void> handlePlatformMessage(
+    String? channel,
+    _i4.ByteData? data,
+    _i5.PlatformMessageResponseCallback? callback,
+  ) =>
       (super.noSuchMethod(
-          Invocation.method(#handlePlatformMessage, [channel, data, callback]),
-          returnValue: Future<void>.value(null),
-          returnValueForMissingStub: Future.value()) as _i3.Future<void>);
+        Invocation.method(
+          #handlePlatformMessage,
+          [
+            channel,
+            data,
+            callback,
+          ],
+        ),
+        returnValue: _i3.Future<void>.value(),
+        returnValueForMissingStub: _i3.Future<void>.value(),
+      ) as _i3.Future<void>);
   @override
-  _i3.Future<_i4.ByteData?>? send(String? channel, _i4.ByteData? message) =>
-      (super.noSuchMethod(Invocation.method(#send, [channel, message]))
-          as _i3.Future<_i4.ByteData?>?);
+  _i3.Future<_i4.ByteData?>? send(
+    String? channel,
+    _i4.ByteData? message,
+  ) =>
+      (super.noSuchMethod(Invocation.method(
+        #send,
+        [
+          channel,
+          message,
+        ],
+      )) as _i3.Future<_i4.ByteData?>?);
   @override
-  void setMessageHandler(String? channel, _i2.MessageHandler? handler) => super
-      .noSuchMethod(Invocation.method(#setMessageHandler, [channel, handler]),
-          returnValueForMissingStub: null);
+  void setMessageHandler(
+    String? channel,
+    _i2.MessageHandler? handler,
+  ) =>
+      super.noSuchMethod(
+        Invocation.method(
+          #setMessageHandler,
+          [
+            channel,
+            handler,
+          ],
+        ),
+        returnValueForMissingStub: null,
+      );
 }
 
 /// A class which mocks [NullableArgFlutterApi].
@@ -52,9 +87,13 @@
   }
 
   @override
-  int doit(int? x) =>
-      (super.noSuchMethod(Invocation.method(#doit, [x]), returnValue: 0)
-          as int);
+  int doit(int? x) => (super.noSuchMethod(
+        Invocation.method(
+          #doit,
+          [x],
+        ),
+        returnValue: 0,
+      ) as int);
 }
 
 /// A class which mocks [NullableReturnFlutterApi].
@@ -77,9 +116,13 @@
   }
 
   @override
-  List<String?> doit(List<String?>? x) => (super
-          .noSuchMethod(Invocation.method(#doit, [x]), returnValue: <String?>[])
-      as List<String?>);
+  List<String?> doit(List<String?>? x) => (super.noSuchMethod(
+        Invocation.method(
+          #doit,
+          [x],
+        ),
+        returnValue: <String?>[],
+      ) as List<String?>);
 }
 
 /// A class which mocks [NullableCollectionReturnFlutterApi].
diff --git a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/primitive_test.mocks.dart b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/primitive_test.mocks.dart
index cd3dfc0..469f9d9 100644
--- a/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/primitive_test.mocks.dart
+++ b/packages/pigeon/platform_tests/flutter_null_safe_unit_tests/test/primitive_test.mocks.dart
@@ -1,47 +1,80 @@
-// Mocks generated by Mockito 5.0.7 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in flutter_unit_tests/test/primitive_test.dart.
 // Do not manually edit this file.
 
-import 'dart:async' as _i4;
-import 'dart:typed_data' as _i2;
+// ignore_for_file: no_leading_underscores_for_library_prefixes
+import 'dart:async' as _i3;
+import 'dart:typed_data' as _i4;
 import 'dart:ui' as _i5;
 
-import 'package:flutter/src/services/binary_messenger.dart' as _i3;
+import 'package:flutter/services.dart' as _i2;
 import 'package:flutter_unit_tests/primitive.gen.dart' as _i6;
 import 'package:mockito/mockito.dart' as _i1;
 
-// ignore_for_file: comment_references
-// ignore_for_file: unnecessary_parenthesis
-
-// ignore_for_file: prefer_const_constructors
-
+// ignore_for_file: type=lint
 // ignore_for_file: avoid_redundant_argument_values
-
-class _FakeInt32List extends _i1.Fake implements _i2.Int32List {}
+// ignore_for_file: avoid_setters_without_getters
+// ignore_for_file: comment_references
+// ignore_for_file: implementation_imports
+// ignore_for_file: invalid_use_of_visible_for_testing_member
+// ignore_for_file: prefer_const_constructors
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: camel_case_types
+// ignore_for_file: subtype_of_sealed_class
 
 /// A class which mocks [BinaryMessenger].
 ///
 /// See the documentation for Mockito's code generation for more information.
-class MockBinaryMessenger extends _i1.Mock implements _i3.BinaryMessenger {
+class MockBinaryMessenger extends _i1.Mock implements _i2.BinaryMessenger {
   MockBinaryMessenger() {
     _i1.throwOnMissingStub(this);
   }
 
   @override
-  _i4.Future<void> handlePlatformMessage(String? channel, _i2.ByteData? data,
-          _i5.PlatformMessageResponseCallback? callback) =>
+  _i3.Future<void> handlePlatformMessage(
+    String? channel,
+    _i4.ByteData? data,
+    _i5.PlatformMessageResponseCallback? callback,
+  ) =>
       (super.noSuchMethod(
-          Invocation.method(#handlePlatformMessage, [channel, data, callback]),
-          returnValue: Future<void>.value(null),
-          returnValueForMissingStub: Future.value()) as _i4.Future<void>);
+        Invocation.method(
+          #handlePlatformMessage,
+          [
+            channel,
+            data,
+            callback,
+          ],
+        ),
+        returnValue: _i3.Future<void>.value(),
+        returnValueForMissingStub: _i3.Future<void>.value(),
+      ) as _i3.Future<void>);
   @override
-  _i4.Future<_i2.ByteData?>? send(String? channel, _i2.ByteData? message) =>
-      (super.noSuchMethod(Invocation.method(#send, [channel, message]))
-          as _i4.Future<_i2.ByteData?>?);
+  _i3.Future<_i4.ByteData?>? send(
+    String? channel,
+    _i4.ByteData? message,
+  ) =>
+      (super.noSuchMethod(Invocation.method(
+        #send,
+        [
+          channel,
+          message,
+        ],
+      )) as _i3.Future<_i4.ByteData?>?);
   @override
-  void setMessageHandler(String? channel, _i3.MessageHandler? handler) => super
-      .noSuchMethod(Invocation.method(#setMessageHandler, [channel, handler]),
-          returnValueForMissingStub: null);
+  void setMessageHandler(
+    String? channel,
+    _i2.MessageHandler? handler,
+  ) =>
+      super.noSuchMethod(
+        Invocation.method(
+          #setMessageHandler,
+          [
+            channel,
+            handler,
+          ],
+        ),
+        returnValueForMissingStub: null,
+      );
 }
 
 /// A class which mocks [PrimitiveFlutterApi].
@@ -54,39 +87,77 @@
   }
 
   @override
-  int anInt(int? value) =>
-      (super.noSuchMethod(Invocation.method(#anInt, [value]), returnValue: 0)
-          as int);
+  int anInt(int? value) => (super.noSuchMethod(
+        Invocation.method(
+          #anInt,
+          [value],
+        ),
+        returnValue: 0,
+      ) as int);
   @override
-  bool aBool(bool? value) => (super
-          .noSuchMethod(Invocation.method(#aBool, [value]), returnValue: false)
-      as bool);
+  bool aBool(bool? value) => (super.noSuchMethod(
+        Invocation.method(
+          #aBool,
+          [value],
+        ),
+        returnValue: false,
+      ) as bool);
   @override
-  String aString(String? value) =>
-      (super.noSuchMethod(Invocation.method(#aString, [value]), returnValue: '')
-          as String);
+  String aString(String? value) => (super.noSuchMethod(
+        Invocation.method(
+          #aString,
+          [value],
+        ),
+        returnValue: '',
+      ) as String);
   @override
-  double aDouble(double? value) => (super
-          .noSuchMethod(Invocation.method(#aDouble, [value]), returnValue: 0.0)
-      as double);
+  double aDouble(double? value) => (super.noSuchMethod(
+        Invocation.method(
+          #aDouble,
+          [value],
+        ),
+        returnValue: 0.0,
+      ) as double);
   @override
   Map<Object?, Object?> aMap(Map<Object?, Object?>? value) =>
-      (super.noSuchMethod(Invocation.method(#aMap, [value]),
-          returnValue: <Object?, Object?>{}) as Map<Object?, Object?>);
+      (super.noSuchMethod(
+        Invocation.method(
+          #aMap,
+          [value],
+        ),
+        returnValue: <Object?, Object?>{},
+      ) as Map<Object?, Object?>);
   @override
-  List<Object?> aList(List<Object?>? value) =>
-      (super.noSuchMethod(Invocation.method(#aList, [value]),
-          returnValue: <Object?>[]) as List<Object?>);
+  List<Object?> aList(List<Object?>? value) => (super.noSuchMethod(
+        Invocation.method(
+          #aList,
+          [value],
+        ),
+        returnValue: <Object?>[],
+      ) as List<Object?>);
   @override
-  _i2.Int32List anInt32List(_i2.Int32List? value) =>
-      (super.noSuchMethod(Invocation.method(#anInt32List, [value]),
-          returnValue: _FakeInt32List()) as _i2.Int32List);
+  _i4.Int32List anInt32List(_i4.Int32List? value) => (super.noSuchMethod(
+        Invocation.method(
+          #anInt32List,
+          [value],
+        ),
+        returnValue: _i4.Int32List(0),
+      ) as _i4.Int32List);
   @override
-  List<bool?> aBoolList(List<bool?>? value) =>
-      (super.noSuchMethod(Invocation.method(#aBoolList, [value]),
-          returnValue: <bool?>[]) as List<bool?>);
+  List<bool?> aBoolList(List<bool?>? value) => (super.noSuchMethod(
+        Invocation.method(
+          #aBoolList,
+          [value],
+        ),
+        returnValue: <bool?>[],
+      ) as List<bool?>);
   @override
   Map<String?, int?> aStringIntMap(Map<String?, int?>? value) =>
-      (super.noSuchMethod(Invocation.method(#aStringIntMap, [value]),
-          returnValue: <String?, int?>{}) as Map<String?, int?>);
+      (super.noSuchMethod(
+        Invocation.method(
+          #aStringIntMap,
+          [value],
+        ),
+        returnValue: <String?, int?>{},
+      ) as Map<String?, int?>);
 }
diff --git a/packages/pigeon/pubspec.yaml b/packages/pigeon/pubspec.yaml
index ef999c5..fd1436d 100644
--- a/packages/pigeon/pubspec.yaml
+++ b/packages/pigeon/pubspec.yaml
@@ -5,7 +5,7 @@
 version: 9.1.2 # This must match the version in lib/generator_tools.dart
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
+  sdk: ">=2.18.0 <4.0.0"
 
 dependencies:
   analyzer: "^5.2.0"
diff --git a/packages/plugin_platform_interface/CHANGELOG.md b/packages/plugin_platform_interface/CHANGELOG.md
index 24186a3..d63cc2a 100644
--- a/packages/plugin_platform_interface/CHANGELOG.md
+++ b/packages/plugin_platform_interface/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 2.1.4
 
 * Updates links for the merge of flutter/plugins into flutter/packages.
diff --git a/packages/plugin_platform_interface/pubspec.yaml b/packages/plugin_platform_interface/pubspec.yaml
index af8a0aa..1c6dab5 100644
--- a/packages/plugin_platform_interface/pubspec.yaml
+++ b/packages/plugin_platform_interface/pubspec.yaml
@@ -18,11 +18,11 @@
 version: 2.1.4
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
+  sdk: ">=2.18.0 <4.0.0"
 
 dependencies:
   meta: ^1.3.0
 
 dev_dependencies:
-  mockito: 5.3.2
+  mockito: 5.4.0
   test: ^1.16.0
diff --git a/packages/quick_actions/quick_actions/CHANGELOG.md b/packages/quick_actions/quick_actions/CHANGELOG.md
index 8687f72..10913d1 100644
--- a/packages/quick_actions/quick_actions/CHANGELOG.md
+++ b/packages/quick_actions/quick_actions/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 1.0.2
diff --git a/packages/quick_actions/quick_actions/example/pubspec.yaml b/packages/quick_actions/quick_actions/example/pubspec.yaml
index 04cb521..073d227 100644
--- a/packages/quick_actions/quick_actions/example/pubspec.yaml
+++ b/packages/quick_actions/quick_actions/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/quick_actions/quick_actions/pubspec.yaml b/packages/quick_actions/quick_actions/pubspec.yaml
index d9d2439..710a03e 100644
--- a/packages/quick_actions/quick_actions/pubspec.yaml
+++ b/packages/quick_actions/quick_actions/pubspec.yaml
@@ -6,8 +6,8 @@
 version: 1.0.2
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -29,5 +29,5 @@
     sdk: flutter
   integration_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   plugin_platform_interface: ^2.0.0
diff --git a/packages/quick_actions/quick_actions_platform_interface/CHANGELOG.md b/packages/quick_actions/quick_actions_platform_interface/CHANGELOG.md
index 5d50838..2f1d78a 100644
--- a/packages/quick_actions/quick_actions_platform_interface/CHANGELOG.md
+++ b/packages/quick_actions/quick_actions_platform_interface/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 1.0.4
diff --git a/packages/quick_actions/quick_actions_platform_interface/pubspec.yaml b/packages/quick_actions/quick_actions_platform_interface/pubspec.yaml
index e4272b8..3e92217 100644
--- a/packages/quick_actions/quick_actions_platform_interface/pubspec.yaml
+++ b/packages/quick_actions/quick_actions_platform_interface/pubspec.yaml
@@ -7,8 +7,8 @@
 version: 1.0.4
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -18,4 +18,4 @@
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
diff --git a/packages/url_launcher/url_launcher/CHANGELOG.md b/packages/url_launcher/url_launcher/CHANGELOG.md
index 1e59d1d..ea5f593 100644
--- a/packages/url_launcher/url_launcher/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 6.1.10
diff --git a/packages/url_launcher/url_launcher/example/pubspec.yaml b/packages/url_launcher/url_launcher/example/pubspec.yaml
index 72766ef..736c1be 100644
--- a/packages/url_launcher/url_launcher/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -26,7 +26,7 @@
     sdk: flutter
   integration_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   plugin_platform_interface: ^2.0.0
 
 flutter:
diff --git a/packages/url_launcher/url_launcher/pubspec.yaml b/packages/url_launcher/url_launcher/pubspec.yaml
index 795d7b1..58dce23 100644
--- a/packages/url_launcher/url_launcher/pubspec.yaml
+++ b/packages/url_launcher/url_launcher/pubspec.yaml
@@ -6,8 +6,8 @@
 version: 6.1.10
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -41,6 +41,6 @@
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   plugin_platform_interface: ^2.0.0
   test: ^1.16.3
diff --git a/packages/url_launcher/url_launcher_android/CHANGELOG.md b/packages/url_launcher/url_launcher_android/CHANGELOG.md
index 8553d73..1505525 100644
--- a/packages/url_launcher/url_launcher_android/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 6.0.26
 
 * Bump RoboElectric dependency to 4.4.1 to support AndroidX.
diff --git a/packages/url_launcher/url_launcher_android/example/pubspec.yaml b/packages/url_launcher/url_launcher_android/example/pubspec.yaml
index f318cb3..18abe9e 100644
--- a/packages/url_launcher/url_launcher_android/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_android/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -25,7 +25,7 @@
     sdk: flutter
   integration_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   plugin_platform_interface: ^2.0.0
 
 flutter:
diff --git a/packages/url_launcher/url_launcher_android/pubspec.yaml b/packages/url_launcher/url_launcher_android/pubspec.yaml
index f3cca6a..ddfd3e5 100644
--- a/packages/url_launcher/url_launcher_android/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_android/pubspec.yaml
@@ -5,8 +5,8 @@
 version: 6.0.26
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -25,6 +25,6 @@
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   plugin_platform_interface: ^2.0.0
   test: ^1.16.3
diff --git a/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md b/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md
index a292ce1..fa03c09 100644
--- a/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_platform_interface/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 2.1.2
diff --git a/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml b/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml
index c2914a0..5082452 100644
--- a/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_platform_interface/pubspec.yaml
@@ -7,8 +7,8 @@
 version: 2.1.2
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -18,4 +18,4 @@
 dev_dependencies:
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
diff --git a/packages/url_launcher/url_launcher_web/CHANGELOG.md b/packages/url_launcher/url_launcher_web/CHANGELOG.md
index 49151cf..91ef9e4 100644
--- a/packages/url_launcher/url_launcher_web/CHANGELOG.md
+++ b/packages/url_launcher/url_launcher_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 2.0.16
 
 * Clarifies explanation of endorsement in README.
diff --git a/packages/url_launcher/url_launcher_web/example/build.yaml b/packages/url_launcher/url_launcher_web/example/build.yaml
index db3104b..5a89bed 100644
--- a/packages/url_launcher/url_launcher_web/example/build.yaml
+++ b/packages/url_launcher/url_launcher_web/example/build.yaml
@@ -4,3 +4,7 @@
       - integration_test/*.dart
       - lib/$lib$
       - $package$
+    builders:
+      mockito|mockBuilder:
+        generate_for:
+          - integration_test/**
diff --git a/packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.mocks.dart b/packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.mocks.dart
index 0717dc7..004ac13 100644
--- a/packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.mocks.dart
+++ b/packages/url_launcher/url_launcher_web/example/integration_test/url_launcher_web_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in regular_integration_tests/integration_test/url_launcher_web_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/url_launcher/url_launcher_web/example/pubspec.yaml b/packages/url_launcher/url_launcher_web/example/pubspec.yaml
index 7dfb428..a5fe899 100644
--- a/packages/url_launcher/url_launcher_web/example/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_web/example/pubspec.yaml
@@ -2,8 +2,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -19,7 +19,7 @@
     sdk: flutter
   integration_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   url_launcher_platform_interface: ^2.0.3
   url_launcher_web:
     path: ../
diff --git a/packages/url_launcher/url_launcher_web/pubspec.yaml b/packages/url_launcher/url_launcher_web/pubspec.yaml
index e7aba63..755dcd5 100644
--- a/packages/url_launcher/url_launcher_web/pubspec.yaml
+++ b/packages/url_launcher/url_launcher_web/pubspec.yaml
@@ -5,8 +5,8 @@
 version: 2.0.16
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
diff --git a/packages/video_player/video_player_android/CHANGELOG.md b/packages/video_player/video_player_android/CHANGELOG.md
index 6653f08..fcb4f98 100644
--- a/packages/video_player/video_player_android/CHANGELOG.md
+++ b/packages/video_player/video_player_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 2.4.3
 
 * Bumps ExoPlayer version to 2.18.5.
diff --git a/packages/video_player/video_player_android/example/pubspec.yaml b/packages/video_player/video_player_android/example/pubspec.yaml
index 8a6447e..2b4bb09 100644
--- a/packages/video_player/video_player_android/example/pubspec.yaml
+++ b/packages/video_player/video_player_android/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/video_player/video_player_android/pubspec.yaml b/packages/video_player/video_player_android/pubspec.yaml
index e4d575d..b847a6d 100644
--- a/packages/video_player/video_player_android/pubspec.yaml
+++ b/packages/video_player/video_player_android/pubspec.yaml
@@ -5,8 +5,8 @@
 version: 2.4.3
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
diff --git a/packages/webview_flutter/webview_flutter/CHANGELOG.md b/packages/webview_flutter/webview_flutter/CHANGELOG.md
index 3fd3dec..0151146 100644
--- a/packages/webview_flutter/webview_flutter/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 4.0.7
 
 * Updates the README with the migration of `WebView.initialCookies` and Hybrid Composition on
diff --git a/packages/webview_flutter/webview_flutter/example/pubspec.yaml b/packages/webview_flutter/webview_flutter/example/pubspec.yaml
index 135d899..742e9a7 100644
--- a/packages/webview_flutter/webview_flutter/example/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/webview_flutter/webview_flutter/pubspec.yaml b/packages/webview_flutter/webview_flutter/pubspec.yaml
index 60c1a83..8c013de 100644
--- a/packages/webview_flutter/webview_flutter/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter/pubspec.yaml
@@ -5,8 +5,8 @@
 version: 4.0.7
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -29,5 +29,5 @@
     sdk: flutter
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   plugin_platform_interface: ^2.1.3
diff --git a/packages/webview_flutter/webview_flutter/test/legacy/webview_flutter_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/legacy/webview_flutter_test.mocks.dart
index a40cf34..ae59ec3 100644
--- a/packages/webview_flutter/webview_flutter/test/legacy/webview_flutter_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter/test/legacy/webview_flutter_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter/test/legacy/webview_flutter_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart
index a7ac41e..f290d40 100644
--- a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter/test/navigation_delegate_test.dart.
 // Do not manually edit this file.
 
@@ -228,4 +228,14 @@
         returnValue: _i8.Future<void>.value(),
         returnValueForMissingStub: _i8.Future<void>.value(),
       ) as _i8.Future<void>);
+  @override
+  _i8.Future<void> setOnUrlChange(_i3.UrlChangeCallback? onUrlChange) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #setOnUrlChange,
+          [onUrlChange],
+        ),
+        returnValue: _i8.Future<void>.value(),
+        returnValueForMissingStub: _i8.Future<void>.value(),
+      ) as _i8.Future<void>);
 }
diff --git a/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart
index 2bb1ef6..27d06fd 100644
--- a/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter/test/webview_controller_test.dart.
 // Do not manually edit this file.
 
@@ -414,4 +414,14 @@
         returnValue: _i5.Future<void>.value(),
         returnValueForMissingStub: _i5.Future<void>.value(),
       ) as _i5.Future<void>);
+  @override
+  _i5.Future<void> setOnUrlChange(_i6.UrlChangeCallback? onUrlChange) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #setOnUrlChange,
+          [onUrlChange],
+        ),
+        returnValue: _i5.Future<void>.value(),
+        returnValueForMissingStub: _i5.Future<void>.value(),
+      ) as _i5.Future<void>);
 }
diff --git a/packages/webview_flutter/webview_flutter/test/webview_cookie_manager_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/webview_cookie_manager_test.mocks.dart
index 7cae663..04e2b7f 100644
--- a/packages/webview_flutter/webview_flutter/test/webview_cookie_manager_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter/test/webview_cookie_manager_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter/test/webview_cookie_manager_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter/test/webview_widget_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/webview_widget_test.mocks.dart
index 0e29ede..3d4c583 100644
--- a/packages/webview_flutter/webview_flutter/test/webview_widget_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter/test/webview_widget_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter/test/webview_widget_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
index 9bb8d82..c3a16e8 100644
--- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 3.4.3
 
 * Updates internal Java InstanceManager to be cleared on hot restart.
diff --git a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml
index 760f7d5..83f3f00 100644
--- a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml
index 5ae83c3..4321673 100644
--- a/packages/webview_flutter/webview_flutter_android/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_android/pubspec.yaml
@@ -5,8 +5,8 @@
 version: 3.4.3
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -28,5 +28,5 @@
     sdk: flutter
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   pigeon: ^9.0.4
diff --git a/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.mocks.dart
index 25e2d42..aa0bf65 100644
--- a/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_android/test/android_navigation_delegate_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart
index 76160aa..88b1f7d 100644
--- a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_android/test/android_webview_controller_test.dart.
 // Do not manually edit this file.
 
@@ -343,6 +343,16 @@
         returnValue: _i9.Future<void>.value(),
         returnValueForMissingStub: _i9.Future<void>.value(),
       ) as _i9.Future<void>);
+  @override
+  _i9.Future<void> setOnUrlChange(_i3.UrlChangeCallback? onUrlChange) =>
+      (super.noSuchMethod(
+        Invocation.method(
+          #setOnUrlChange,
+          [onUrlChange],
+        ),
+        returnValue: _i9.Future<void>.value(),
+        returnValueForMissingStub: _i9.Future<void>.value(),
+      ) as _i9.Future<void>);
 }
 
 /// A class which mocks [AndroidWebViewController].
diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.mocks.dart
index 0732180..d2937d5 100644
--- a/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_android/test/android_webview_cookie_manager_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart
index 2cb0081..43eda09 100644
--- a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_android/test/android_webview_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_android/test/instance_manager_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/instance_manager_test.mocks.dart
index b474bf1..c9e6e4b 100644
--- a/packages/webview_flutter/webview_flutter_android/test/instance_manager_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/instance_manager_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_android/test/instance_manager_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_cookie_manager_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_cookie_manager_test.mocks.dart
index 85aed14..b306f2c 100644
--- a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_cookie_manager_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_cookie_manager_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_android/test/legacy/webview_android_cookie_manager_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart
index 67cdaa8..0588a0b 100644
--- a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_android/test/legacy/webview_android_widget_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
index b94310b..808c85c 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 2.1.0
 
 * Adds support to track url changes. See `PlatformNavigationDelegate.setOnUrlChange`.
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml
index 93bcf70..6d05e0a 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml
@@ -7,8 +7,8 @@
 version: 2.1.0
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
@@ -20,4 +20,4 @@
   build_runner: ^2.1.8
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart
index 807ea02..5dbde6b 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_platform_interface/test/platform_webview_controller_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/webview_platform_test.mocks.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/webview_platform_test.mocks.dart
index d613cdd..e9ff0bd 100644
--- a/packages/webview_flutter/webview_flutter_platform_interface/test/webview_platform_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_platform_interface/test/webview_platform_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_platform_interface/test/webview_platform_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_web/CHANGELOG.md b/packages/webview_flutter/webview_flutter_web/CHANGELOG.md
index 5ce2e1f..38f28aa 100644
--- a/packages/webview_flutter/webview_flutter_web/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_web/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## NEXT
 
+* Updates minimum Flutter version to 3.3.
 * Aligns Dart and Flutter SDK constraints.
 
 ## 0.2.2+1
diff --git a/packages/webview_flutter/webview_flutter_web/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_web/example/pubspec.yaml
index 2495315..2e1daff 100644
--- a/packages/webview_flutter/webview_flutter_web/example/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_web/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/webview_flutter/webview_flutter_web/pubspec.yaml b/packages/webview_flutter/webview_flutter_web/pubspec.yaml
index d3b4cd1..845d578 100644
--- a/packages/webview_flutter/webview_flutter_web/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_web/pubspec.yaml
@@ -5,8 +5,8 @@
 version: 0.2.2+1
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 flutter:
   plugin:
@@ -29,4 +29,4 @@
     sdk: flutter
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
diff --git a/packages/webview_flutter/webview_flutter_web/test/legacy/webview_flutter_web_test.mocks.dart b/packages/webview_flutter/webview_flutter_web/test/legacy/webview_flutter_web_test.mocks.dart
index ac7122e..06b5710 100644
--- a/packages/webview_flutter/webview_flutter_web/test/legacy/webview_flutter_web_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_web/test/legacy/webview_flutter_web_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_web/test/legacy/webview_flutter_web_test.dart.
 // Do not manually edit this file.
 
@@ -2118,6 +2118,11 @@
         ),
       ) as _i4.Widget);
   @override
+  bool get mounted => (super.noSuchMethod(
+        Invocation.getter(#mounted),
+        returnValue: false,
+      ) as bool);
+  @override
   bool get debugDoingBuild => (super.noSuchMethod(
         Invocation.getter(#debugDoingBuild),
         returnValue: false,
diff --git a/packages/webview_flutter/webview_flutter_web/test/web_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_web/test/web_webview_controller_test.mocks.dart
index 5cb259a..6f7a2c8 100644
--- a/packages/webview_flutter/webview_flutter_web/test/web_webview_controller_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_web/test/web_webview_controller_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_web/test/web_webview_controller_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
index ab1921a..11714c3 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
+++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md
@@ -1,3 +1,7 @@
+## NEXT
+
+* Updates minimum Flutter version to 3.3.
+
 ## 3.2.3
 
 * Updates to `pigeon` version 7.
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml
index b39ff59..4af215c 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml
@@ -3,8 +3,8 @@
 publish_to: none
 
 environment:
-  sdk: ">=2.17.0 <4.0.0"
-  flutter: ">=3.0.0"
+  sdk: ">=2.18.0 <4.0.0"
+  flutter: ">=3.3.0"
 
 dependencies:
   flutter:
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml
index 9b5f2a8..40e185d 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml
@@ -28,5 +28,5 @@
     sdk: flutter
   flutter_test:
     sdk: flutter
-  mockito: 5.3.2
+  mockito: 5.4.0
   pigeon: ^7.0.5
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_cookie_manager_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_cookie_manager_test.mocks.dart
index 860e8db..b88d686 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_cookie_manager_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_cookie_manager_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_wkwebview/test/legacy/web_kit_cookie_manager_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_webview_widget_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_webview_widget_test.mocks.dart
index e02b3fa..6f5ffe0 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_webview_widget_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_webview_widget_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_wkwebview/test/legacy/web_kit_webview_widget_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.mocks.dart
index d93198e..81c919e 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_wkwebview/test/src/foundation/foundation_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/src/ui_kit/ui_kit_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/src/ui_kit/ui_kit_test.mocks.dart
index 6200b8d..355d69e 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/test/src/ui_kit/ui_kit_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_wkwebview/test/src/ui_kit/ui_kit_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_wkwebview/test/src/ui_kit/ui_kit_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.mocks.dart
index 50e0956..6019640 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_wkwebview/test/src/web_kit/web_kit_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.mocks.dart
index 9eab6dd..e445f99 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.mocks.dart
index 288105c..184d0a6 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_wkwebview/test/webkit_webview_controller_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.mocks.dart
index c552d96..95818c3 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.dart.
 // Do not manually edit this file.
 
diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_widget_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_widget_test.mocks.dart
index 0f48af4..1b4807e 100644
--- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_widget_test.mocks.dart
+++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_widget_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in webview_flutter_wkwebview/test/webkit_webview_widget_test.dart.
 // Do not manually edit this file.
 
diff --git a/script/tool/pubspec.yaml b/script/tool/pubspec.yaml
index 2eb973b..dd42b0d 100644
--- a/script/tool/pubspec.yaml
+++ b/script/tool/pubspec.yaml
@@ -27,7 +27,7 @@
 dev_dependencies:
   build_runner: ^2.0.3
   matcher: ^0.12.10
-  mockito: 5.3.2
+  mockito: '>=5.3.2 <=5.4.0'
 
 environment:
   sdk: '>=2.14.0 <4.0.0'
diff --git a/script/tool/test/common/package_command_test.mocks.dart b/script/tool/test/common/package_command_test.mocks.dart
index 79c5d4d..69f7066 100644
--- a/script/tool/test/common/package_command_test.mocks.dart
+++ b/script/tool/test/common/package_command_test.mocks.dart
@@ -1,4 +1,4 @@
-// Mocks generated by Mockito 5.3.2 from annotations
+// Mocks generated by Mockito 5.4.0 from annotations
 // in flutter_plugin_tools/test/common/package_command_test.dart.
 // Do not manually edit this file.
 
