-
Notifications
You must be signed in to change notification settings - Fork 9.7k
[image_picker] add requestFullMetadata for iOS (optional permissions) - platform interface #5603
Changes from 7 commits
3335935
93874c0
2983b84
fdeb8bf
577f6bf
1e94e07
ca7e4b4
816b59b
ffb2d79
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,10 @@ | ||
| ## 2.5.0 | ||
|
|
||
| * Makes `getImage` deprecated in favor of a new method `getImageFromSource`. | ||
| * Adds `requestFullMetadata` option that allows disabling extra permission requests | ||
| on certain platforms. | ||
| * Moves optional image picking parameters to `ImagePickerOptions` class. | ||
|
||
|
|
||
| ## 2.4.4 | ||
|
|
||
| * Internal code cleanup for stricter analysis options. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -146,6 +146,8 @@ abstract class ImagePickerPlatform extends PlatformInterface { | |
| throw UnimplementedError('retrieveLostData() has not been implemented.'); | ||
| } | ||
|
|
||
| /// This method is deprecated in favor of [getImageFromSource] and will be removed in a future update. | ||
| /// | ||
| /// Returns an [XFile] with the image that was picked. | ||
| /// | ||
| /// The `source` argument controls where the image comes from. This can | ||
|
|
@@ -251,4 +253,32 @@ abstract class ImagePickerPlatform extends PlatformInterface { | |
| Future<LostDataResponse> getLostData() { | ||
| throw UnimplementedError('getLostData() has not been implemented.'); | ||
| } | ||
|
|
||
| /// Returns an [XFile] with the image that was picked. | ||
| /// | ||
| /// The `source` argument controls where the image comes from. This can | ||
| /// be either [ImageSource.camera] or [ImageSource.gallery]. | ||
| /// | ||
| /// The `options` argument controls additional settings that can be used when picking an image. See [ImagePickerOptions] | ||
| /// for more details. | ||
| /// | ||
| /// Where iOS supports HEIC images, Android 8 and below doesn't. Android 9 and above only support HEIC images if used | ||
| /// in addition to a size modification, of which the usage is explained in [ImagePickerOptions]. | ||
| /// | ||
| /// 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. | ||
| /// | ||
| /// If no images were picked, the return value is null. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please wrap all the lines in this comment block to 80 characters. |
||
| Future<XFile?> getImageFromSource({ | ||
| required ImageSource source, | ||
| ImagePickerOptions options = const ImagePickerOptions(), | ||
| }) { | ||
| return getImage( | ||
| source: source, | ||
| maxHeight: options.maxHeight, | ||
| maxWidth: options.maxWidth, | ||
| imageQuality: options.imageQuality, | ||
| preferredCameraDevice: options.preferredCameraDevice, | ||
| ); | ||
| } | ||
| } | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| // Copyright 2013 The Flutter Authors. All rights reserved. | ||
| // Use of this source code is governed by a BSD-style license that can be | ||
| // found in the LICENSE file. | ||
|
|
||
| import 'package:image_picker_platform_interface/src/types/types.dart'; | ||
|
|
||
| /// Specifies options for picking a single image from the device's camera or gallery. | ||
| class ImagePickerOptions { | ||
| /// Creates an instance with the given [maxHeight], [maxWidth], [imageQuality], | ||
| /// [referredCameraDevice] and [requestFullMetadata]. | ||
| const ImagePickerOptions({ | ||
| this.maxHeight, | ||
| this.maxWidth, | ||
| this.imageQuality, | ||
| this.preferredCameraDevice = CameraDevice.rear, | ||
| this.requestFullMetadata = true, | ||
| }); | ||
|
|
||
| /// The maximum width of the image, in pixels. | ||
| /// | ||
| /// If null, the image will only be resized if [maxHeight] is specified. | ||
| final double? maxWidth; | ||
|
|
||
| /// The maximum height of the image, in pixels. | ||
| /// | ||
| /// If null, the image will only be resized if maxWidth is specified. | ||
|
||
| final double? maxHeight; | ||
|
|
||
| /// Modifies the quality of the image, ranging from 0-100 where 100 is the | ||
| /// original/max quality. | ||
| /// | ||
| /// If null, the image will be returned with the original quality. Compression | ||
| /// is only supported for certain image types such as JPEG. If compression is | ||
| /// not supported for the image that is picked, a warning message will be logged. | ||
|
||
| final int? imageQuality; | ||
|
|
||
| /// Used to specify the camera to use when the `source` is [ImageSource.camera]. | ||
| /// | ||
| /// Ignored if the source is not [ImageSource.camera], or the chosen camera is not | ||
| /// supported on the device. Defaults to [CameraDevice.rear]. | ||
| final CameraDevice preferredCameraDevice; | ||
|
|
||
| /// If true, requests full image metadata, which may require extra permissions | ||
| /// on some platforms, (e.g., NSPhotoLibraryUsageDescription on iOS). | ||
| // | ||
| // Defaults to true. | ||
| final bool requestFullMetadata; | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: change "Makes
getImagedeprecated" to "DeprecatesgetImage".