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 7ed9dc66df5e..4e2cc3af6000 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 @@ -281,6 +281,7 @@ class MethodChannelImagePicker extends ImagePickerPlatform { required ImageSource source, CameraDevice preferredCameraDevice = CameraDevice.rear, Duration? maxDuration, + VideoQuality quality = VideoQuality.high, }) async { final String? path = await _getVideoPath( source: source, 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 703c7a960ec8..3d3b33692a82 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 @@ -241,6 +241,8 @@ abstract class ImagePickerPlatform extends PlatformInterface { /// 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]. /// + /// The [quality] argument specifies the video quality for recording/picking. Defaults to [VideoQuality.high]. + /// /// In Android, the MainActivity can be destroyed for various reasons. If that happens, the result will be lost /// in this call. You can then call [getLostData] when your app relaunches to retrieve the lost data. /// @@ -249,6 +251,7 @@ abstract class ImagePickerPlatform extends PlatformInterface { required ImageSource source, CameraDevice preferredCameraDevice = CameraDevice.rear, Duration? maxDuration, + VideoQuality quality = VideoQuality.high, }) { throw UnimplementedError('getVideo() has not been implemented.'); } @@ -390,6 +393,7 @@ abstract class CameraDelegatingImagePickerPlatform extends ImagePickerPlatform { required ImageSource source, CameraDevice preferredCameraDevice = CameraDevice.rear, Duration? maxDuration, + VideoQuality quality = VideoQuality.high, }) async { if (source == ImageSource.camera) { final ImagePickerCameraDelegate? delegate = cameraDelegate; @@ -410,6 +414,7 @@ abstract class CameraDelegatingImagePickerPlatform extends ImagePickerPlatform { source: source, preferredCameraDevice: preferredCameraDevice, maxDuration: maxDuration, + quality: quality, ); } } diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/types/types.dart b/packages/image_picker/image_picker_platform_interface/lib/src/types/types.dart index 91661d154e2b..a9b01395a71a 100644 --- a/packages/image_picker/image_picker_platform_interface/lib/src/types/types.dart +++ b/packages/image_picker/image_picker_platform_interface/lib/src/types/types.dart @@ -13,6 +13,7 @@ export 'multi_image_picker_options.dart'; export 'multi_video_picker_options.dart'; export 'picked_file/picked_file.dart'; export 'retrieve_type.dart'; +export 'video_quality.dart'; /// Denotes that an image is being picked. const String kTypeImage = 'image'; diff --git a/packages/image_picker/image_picker_platform_interface/lib/src/types/video_quality.dart b/packages/image_picker/image_picker_platform_interface/lib/src/types/video_quality.dart new file mode 100644 index 000000000000..843e2050df75 --- /dev/null +++ b/packages/image_picker/image_picker_platform_interface/lib/src/types/video_quality.dart @@ -0,0 +1,24 @@ +// Copyright 2013 The Flutter Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/// Video quality setting for video recording/picking. +/// +/// This enum corresponds to `UIImagePickerControllerQualityType` on iOS. +enum VideoQuality { + /// Low quality video. + /// + /// Corresponds to `UIImagePickerControllerQualityTypeLow` on iOS. + low, + + /// Medium quality video. + /// + /// Corresponds to `UIImagePickerControllerQualityTypeMedium` on iOS. + medium, + + /// High quality video. + /// + /// Corresponds to `UIImagePickerControllerQualityTypeHigh` on iOS. + /// This is the default quality setting. + high, +}