Revert "[image_picker] add forceFullMetadata to interface" (#4314)

Reverts #4288 which published a breaking change as if it were a non-breaking change.

The discussion in that PR prior to it landing was incorrect, because adding a new parameter
with a default value is non-breaking *only for clients*. It is breaking for subclasses that
override it, and the purpose of the platform interface is for implementations to subclass it
and override everything. 
diff --git a/packages/image_picker/image_picker_for_web/lib/image_picker_for_web.dart b/packages/image_picker/image_picker_for_web/lib/image_picker_for_web.dart
index e1ade78..b170ee3 100644
--- a/packages/image_picker/image_picker_for_web/lib/image_picker_for_web.dart
+++ b/packages/image_picker/image_picker_for_web/lib/image_picker_for_web.dart
@@ -53,7 +53,6 @@
     double? maxWidth,
     double? maxHeight,
     int? imageQuality,
-    bool forceFullMetadata = true,
     CameraDevice preferredCameraDevice = CameraDevice.rear,
   }) {
     String? capture = computeCaptureAttribute(source, preferredCameraDevice);
@@ -116,7 +115,6 @@
     double? maxWidth,
     double? maxHeight,
     int? imageQuality,
-    bool forceFullMetadata = true,
     CameraDevice preferredCameraDevice = CameraDevice.rear,
   }) async {
     String? capture = computeCaptureAttribute(source, preferredCameraDevice);
diff --git a/packages/image_picker/image_picker_platform_interface/CHANGELOG.md b/packages/image_picker/image_picker_platform_interface/CHANGELOG.md
index 3c14e40..d637ac1 100644
--- a/packages/image_picker/image_picker_platform_interface/CHANGELOG.md
+++ b/packages/image_picker/image_picker_platform_interface/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 2.4.1
+
+* Reverts the changes from 2.4.0, which was a breaking change that
+  was incorrectly marked as a non-breaking change.
+
 ## 2.4.0
 
 * Add `forceFullMetadata` option to `pickImage`.
diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/method_channel/method_channel_image_picker.dart b/packages/image_picker/image_picker_platform_interface/lib/src/method_channel/method_channel_image_picker.dart
index 082b403..b02284e 100644
--- a/packages/image_picker/image_picker_platform_interface/lib/src/method_channel/method_channel_image_picker.dart
+++ b/packages/image_picker/image_picker_platform_interface/lib/src/method_channel/method_channel_image_picker.dart
@@ -24,7 +24,6 @@
     double? maxWidth,
     double? maxHeight,
     int? imageQuality,
-    bool forceFullMetadata = true,
     CameraDevice preferredCameraDevice = CameraDevice.rear,
   }) async {
     String? path = await _getImagePath(
@@ -32,7 +31,6 @@
       maxWidth: maxWidth,
       maxHeight: maxHeight,
       imageQuality: imageQuality,
-      forceFullMetadata: forceFullMetadata,
       preferredCameraDevice: preferredCameraDevice,
     );
     return path != null ? PickedFile(path) : null;
@@ -87,7 +85,6 @@
     double? maxWidth,
     double? maxHeight,
     int? imageQuality,
-    bool forceFullMetadata = true,
     CameraDevice preferredCameraDevice = CameraDevice.rear,
   }) {
     if (imageQuality != null && (imageQuality < 0 || imageQuality > 100)) {
@@ -110,7 +107,6 @@
         'maxWidth': maxWidth,
         'maxHeight': maxHeight,
         'imageQuality': imageQuality,
-        'forceFullMetadata': forceFullMetadata,
         'cameraDevice': preferredCameraDevice.index
       },
     );
@@ -187,7 +183,6 @@
     double? maxWidth,
     double? maxHeight,
     int? imageQuality,
-    bool forceFullMetadata = true,
     CameraDevice preferredCameraDevice = CameraDevice.rear,
   }) async {
     String? path = await _getImagePath(
@@ -195,7 +190,6 @@
       maxWidth: maxWidth,
       maxHeight: maxHeight,
       imageQuality: imageQuality,
-      forceFullMetadata: forceFullMetadata,
       preferredCameraDevice: preferredCameraDevice,
     );
     return path != null ? XFile(path) : null;
diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/platform_interface/image_picker_platform.dart b/packages/image_picker/image_picker_platform_interface/lib/src/platform_interface/image_picker_platform.dart
index 60fa784..5c1c8b6 100644
--- a/packages/image_picker/image_picker_platform_interface/lib/src/platform_interface/image_picker_platform.dart
+++ b/packages/image_picker/image_picker_platform_interface/lib/src/platform_interface/image_picker_platform.dart
@@ -58,11 +58,6 @@
   /// image types such as JPEG. If compression is not supported for the image that is picked,
   /// a warning message will be logged.
   ///
-  /// `forceFullMetadata` defaults to `true`, so the plugin tries to get the full image metadata which may require
-  /// extra permission requests on certain platforms.
-  /// If `forceFullMetadata` is set to `false`, the plugin fetches the image in a way that reduces permission requests
-  /// from the platform (e.g. on iOS the plugin won’t ask for the `NSPhotoLibraryUsageDescription` permission).
-  ///
   /// Use `preferredCameraDevice` to specify the camera to use when the `source` is [ImageSource.camera].
   /// The `preferredCameraDevice` is ignored when `source` is [ImageSource.gallery]. It is also ignored if the chosen camera is not supported on the device.
   /// Defaults to [CameraDevice.rear]. Note that Android has no documented parameter for an intent to specify if
@@ -78,7 +73,6 @@
     double? maxWidth,
     double? maxHeight,
     int? imageQuality,
-    bool forceFullMetadata = true,
     CameraDevice preferredCameraDevice = CameraDevice.rear,
   }) {
     throw UnimplementedError('pickImage() has not been implemented.');
@@ -170,11 +164,6 @@
   /// image types such as JPEG. If compression is not supported for the image that is picked,
   /// a warning message will be logged.
   ///
-  /// `forceFullMetadata` defaults to `true`, so the plugin tries to get the full image metadata which may require
-  /// extra permission requests on certain platforms.
-  /// If `forceFullMetadata` is set to `false`, the plugin fetches the image in a way that reduces permission requests
-  /// from the platform (e.g. on iOS the plugin won’t ask for the `NSPhotoLibraryUsageDescription` permission).
-  ///
   /// Use `preferredCameraDevice` to specify the camera to use when the `source` is [ImageSource.camera].
   /// The `preferredCameraDevice` is ignored when `source` is [ImageSource.gallery]. It is also ignored if the chosen camera is not supported on the device.
   /// Defaults to [CameraDevice.rear]. Note that Android has no documented parameter for an intent to specify if
@@ -190,7 +179,6 @@
     double? maxWidth,
     double? maxHeight,
     int? imageQuality,
-    bool forceFullMetadata = true,
     CameraDevice preferredCameraDevice = CameraDevice.rear,
   }) {
     throw UnimplementedError('getImage() has not been implemented.');
diff --git a/packages/image_picker/image_picker_platform_interface/pubspec.yaml b/packages/image_picker/image_picker_platform_interface/pubspec.yaml
index 53852de..e41137f 100644
--- a/packages/image_picker/image_picker_platform_interface/pubspec.yaml
+++ b/packages/image_picker/image_picker_platform_interface/pubspec.yaml
@@ -4,7 +4,7 @@
 issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+image_picker%22
 # NOTE: We strongly prefer non-breaking changes, even at the expense of a
 # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
-version: 2.4.0
+version: 2.4.1
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/image_picker/image_picker_platform_interface/test/new_method_channel_image_picker_test.dart b/packages/image_picker/image_picker_platform_interface/test/new_method_channel_image_picker_test.dart
index a2d9568..17caa84 100644
--- a/packages/image_picker/image_picker_platform_interface/test/new_method_channel_image_picker_test.dart
+++ b/packages/image_picker/image_picker_platform_interface/test/new_method_channel_image_picker_test.dart
@@ -40,16 +40,14 @@
               'maxWidth': null,
               'maxHeight': null,
               'imageQuality': null,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 1,
               'maxWidth': null,
               'maxHeight': null,
               'imageQuality': null,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
           ],
         );
@@ -95,56 +93,49 @@
               'maxWidth': null,
               'maxHeight': null,
               'imageQuality': null,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 0,
               'maxWidth': 10.0,
               'maxHeight': null,
               'imageQuality': null,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 0,
               'maxWidth': null,
               'maxHeight': 10.0,
               'imageQuality': null,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 0,
               'maxWidth': 10.0,
               'maxHeight': 20.0,
               'imageQuality': null,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 0,
               'maxWidth': 10.0,
               'maxHeight': null,
               'imageQuality': 70,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 0,
               'maxWidth': null,
               'maxHeight': 10.0,
               'imageQuality': 70,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 0,
               'maxWidth': 10.0,
               'maxHeight': 20.0,
               'imageQuality': 70,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
           ],
         );
@@ -205,7 +196,6 @@
               'maxHeight': null,
               'imageQuality': null,
               'cameraDevice': 0,
-              'forceFullMetadata': true,
             }),
           ],
         );
@@ -225,7 +215,6 @@
               'maxHeight': null,
               'imageQuality': null,
               'cameraDevice': 1,
-              'forceFullMetadata': true,
             }),
           ],
         );
@@ -520,16 +509,14 @@
               'maxWidth': null,
               'maxHeight': null,
               'imageQuality': null,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 1,
               'maxWidth': null,
               'maxHeight': null,
               'imageQuality': null,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
           ],
         );
@@ -575,56 +562,49 @@
               'maxWidth': null,
               'maxHeight': null,
               'imageQuality': null,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 0,
               'maxWidth': 10.0,
               'maxHeight': null,
               'imageQuality': null,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 0,
               'maxWidth': null,
               'maxHeight': 10.0,
               'imageQuality': null,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 0,
               'maxWidth': 10.0,
               'maxHeight': 20.0,
               'imageQuality': null,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 0,
               'maxWidth': 10.0,
               'maxHeight': null,
               'imageQuality': 70,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 0,
               'maxWidth': null,
               'maxHeight': 10.0,
               'imageQuality': 70,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
             isMethodCall('pickImage', arguments: <String, dynamic>{
               'source': 0,
               'maxWidth': 10.0,
               'maxHeight': 20.0,
               'imageQuality': 70,
-              'cameraDevice': 0,
-              'forceFullMetadata': true,
+              'cameraDevice': 0
             }),
           ],
         );
@@ -684,7 +664,6 @@
               'maxHeight': null,
               'imageQuality': null,
               'cameraDevice': 0,
-              'forceFullMetadata': true,
             }),
           ],
         );
@@ -704,7 +683,6 @@
               'maxHeight': null,
               'imageQuality': null,
               'cameraDevice': 1,
-              'forceFullMetadata': true,
             }),
           ],
         );