# image_picker 1.2.4

Flutter plugin for selecting images from the Android and iOS image library, and taking new pictures with the camera.




## Installing
```
export PUB_HOSTED_URL=https://pub.mirror.p-hatan.ir
flutter pub add 'image_picker:1.2.4'
```
Published: 2026-10-06T01:57:15.735158Z
Expected archive SHA-256: e71b1bd9e40124041128d60fc3034c7b1598e1bba4e570bba0c70301c817013a

Available in cache; verification: upstream_checksum
## Direct dependencies
- flutter: map[sdk:flutter]
- image_picker_android: ^0.8.13
- image_picker_for_web: ^3.1.0
- image_picker_ios: ^0.8.13
- image_picker_linux: ^0.2.2
- image_picker_macos: ^0.2.2
- image_picker_platform_interface: ^2.11.0
- image_picker_windows: ^0.2.2

## Package README (untrusted upstream documentation)
# Image Picker plugin for Flutter
<?code-excerpt path-base="example/lib"?>

[![pub package](https://img.shields.io/pub/v/image_picker.svg)](https://pub.dev/packages/image_picker)

A Flutter plugin for picking images from the image library, and taking new pictures with the camera.

|             | Android | iOS     | Linux | macOS  | Web                             | Windows     |
|-------------|---------|---------|-------|--------|---------------------------------|-------------|
| **Support** | SDK 24+ | iOS 13+ | Any   | 10.15+ | [See `image_picker_for_web`](https://pub.dev/packages/image_picker_for_web#limitations-on-the-web-platform) | Windows 10+ |

## Setup

### iOS

Starting with version **0.8.1** the iOS implementation uses PHPicker to pick
(multiple) images on iOS 14 or higher.
As a result of implementing PHPicker it becomes impossible to pick HEIC images
on the iOS simulator in iOS 14+. This is a known issue. Please test this on a
real device, or test with non-HEIC images until Apple solves this issue.
[63426347 - Apple known issue](https://www.google.com/search?q=63426347+apple&sxsrf=ALeKk01YnTMid5S0PYvhL8GbgXJ40ZS[…]t=gws-wiz&ved=0ahUKEwjKh8XH_5HwAhWL_rsIHUmHDN8Q4dUDCA8&uact=5)

Add the following keys to your _Info.plist_ file, located in
`<project root>/ios/Runner/Info.plist`:

* `NSPhotoLibraryUsageDescription` - describe why your app needs permission for
the photo library. This is called _Privacy - Photo Library Usage Description_ in
the visual editor.
  * This permission will not be requested if you always pass `false` for
  `requestFullMetadata`, but App Store policy requires including the plist
  entry.
* `NSCameraUsageDescription` - describe why your app needs access to the camera.
This is called _Privacy - Camera Usage Description_ in the visual editor.
* `NSMicrophoneUsageDescription` - describe why your app needs access to the
microphone, if you intend to record videos. This is called
_Privacy - Microphone Usage Description_ in the visual editor.

### Android

No configuration required - the plugin should work out of the box. It is however
highly recommended to prepare for Android killing the application when low on memory. How to prepare for this is discussed in the
[Handling MainActivity destruction on Android](#handling-mainactivity-destruction-on-android)
section.

It is no longer required to add `android:requestLegacyExternalStorage="true"` as
an attribute to the `<application>` tag in AndroidManifest.xml, as
`image_picker` has been updated to make use of scoped storage.

#### Handling MainActivity destruction

When under high memory pressure the Android system may kill the MainActivity of
the application using the image_picker. On Android the image_picker makes use
of the default `Intent.ACTION_GET_CONTENT` or `MediaStore.ACTION_IMAGE_CAPTURE`
intents. This means that while the intent is executing the source application
is moved to the background and becomes eligible for cleanup when the system is
low on memory. When the intent finishes executing, Android will restart the
application. Since the data is never returned to the original call use the
`ImagePicker.retrieveLostData()` method to retrieve the lost data. For example:

<?code-excerpt "readme_excerpts.dart (LostData)"?>
```dart
Future<void> getLostData() async {
  final picker = ImagePicker();
  final LostDataResponse response = await picker.retrieveLostData();
  if (response.isEmpty) {
    return;
  }
  final List<XFile>? files = response.files;
  if (files != null) {
    _handleLostFiles(files);
  } else {
    _handleError(response.exception);
  }
}

```

This check should always be run at startup in order to detect and handle this
case. Please refer to the
[example app](https://pub.dev/packages/image_picker/example) for a more complete
example of handling this flow.

#### Permanently storing images and videos

Images and videos picked using the camera are saved to your application's local
cache, and should therefore be expected to only be around temporarily.
If you require your picked image to be stored permanently, it is your
responsibility to move it to a more permanent location.

#### Android Photo Picker

On Android 13 and above this package uses the
[Android Photo Picker](https://developer.android.com/training/data-storage/shared/photopicker)
. On Android 12 and below use of Android Photo Picker is optional. 
[Learn how to use it](https://pub.dev/packages/image_picker_android).

#### Using `launchMode: singleInstance`

Launching the image picker from an `Activity` with `launchMode: singleInstance`
will always return `RESULT_CANCELED`.
In this launch mode, new activities are created in a separate [Task](https://developer.android.com/guide/components/activities/tasks-and-back-stack).
As activities cannot communicate between tasks, the image picker activity cannot
send back its eventual result to the calling activity.
To work around this problem, consider using `launchMode: singleTask` instead.

### Windows, macOS, and Linux

This plugin currently has limited support for the three desktop platforms,
serving as a wrapper around the [`file_selector`](https://pub.dev/packages/file_selector)
plugin with appropriate file type filters set. Selection modification options,
such as max width and height, are not yet supported.

By default, `ImageSource.camera` is not supported, since unlike on Android and
iOS there is no system-provided UI for taking photos. However, the desktop
implementations allow delegating to a camera handler by setting a
`cameraDelegate` before using `image_picker`, such as in `main()`:

<?code-excerpt "readme_excerpts.dart (CameraDelegate)"?>
```dart
import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';

// ···
class MyCameraDelegate extends ImagePickerCameraDelegate {
  @override
  Future<XFile?> takePhoto({
    ImagePickerCameraDelegateOptions options = const ImagePickerCameraDelegateOptions(),
  }) async {
    return _takeAPhoto(options.preferredCameraDevice);
  }

  @override
  Future<XFile?> takeVideo({
    ImagePickerCameraDelegateOptions options = const ImagePickerCameraDelegateOptions(),
  }) async {
    return _takeAVideo(options.preferredCameraDevice);
  }
}

// ···
void setUpCameraDelegate() {
  final ImagePickerPlatform instance = ImagePickerPlatform.instance;
  if (instance is CameraDelegatingImagePickerPlatform) {
    instance.cameraDelegate = MyCameraDelegate();
  }
}

```

Once you have set a `cameraDelegate`, `image_picker` calls with
`ImageSource.camera` will work as normal, calling your provided delegate. We
encourage the community to build packages that implement
`ImagePickerCameraDelegate`, to provide options for desktop camera UI.

#### macOS installation

Since the macOS implementation uses `file_selector`, you will need to
add a filesystem access
[entitlement](https://flutter.dev/to/macos-entitlements):

```xml
  <key>com.apple.security.files.user-selected.read-only</key>
  <true/>
```

### Example

<?code-excerpt "readme_excerpts.dart (Pick)"?>
```dart
final picker = ImagePicker();
// Pick an image.
final XFile? image = await picker.pickImage(source: ImageSource.gallery);
// Capture a photo.
final XFile? photo = await picker.pickImage(source: ImageSource.camera);
// Pick a video.
final XFile? galleryVideo = await picker.pickVideo(source: ImageSource.gallery);
// Capture a video.
final XFile? cameraVideo = await picker.pickVideo(source: ImageSource.camera);
// Pick multiple images.
final List<XFile> images = await picker.pickMultiImage();
// Pick singe image or video.
final XFile? media = await picker.pickMedia();
// Pick multiple images and videos.
final List<XFile> medias = await picker.pickMultipleMedia();
```

## Migrating to 1.0

Starting with version 0.8.2 of the image_picker plugin, new methods were
added that return `XFile` instances (from the
[cross_file](https://pub.dev/packages/cross_file) package) rather than the
plugin's own `PickedFile` instances. The previous methods were supported through
0.8.9, and removed in 1.0.0.

#### Call the new methods

| Old API | New API |
|---------|---------|
| `PickedFile image = await _picker.getImage(...)` | `XFile image = await _picker.pickImage(...)` |
| `List<PickedFile> images = await _picker.getMultiImage(...)` | `List<XFile> images = await _picker.pickMultiImage(...)` |
| `PickedFile video = await _picker.getVideo(...)` | `XFile video = await _picker.pickVideo(...)` |
| `LostData response = await _picker.getLostData()` | `LostDataResponse response = await _picker.retrieveLostData()` |

## Changelog
## 1.2.4

* Documents that `retrieveLostData` is a one-time operation that clears the
  stored lost data once it is returned.
* Updates minimum supported SDK version to Flutter 3.41/Dart 3.11.

## 1.2.3

* Fixes `pickMultiImage(limit: 1)` and `pickMultipleMedia(limit: 1)` throwing an `ArgumentError` by delegating to
  single-item pickers when `limit` is exactly 1, since the platform interface requires `limit >= 2` for multi-selection.
* Updates minimum supported SDK version to Flutter 3.38/Dart 3.10.

## 1.2.2

* Clarifies that `maxDuration` only applies to video recording and not gallery selection.
* Updates minimum supported SDK version to Flutter 3.35/Dart 3.9.
* Updates README to reflect currently supported OS versions for the latest
  versions of the endorsed platform implementations.
  * Applications built with older versions of Flutter will continue to
    use compatible versions of the platform implementations.


## 1.2.1

* Fixes README description of plugin suggesting that only Android and iOS is supported.
* Updates minimum supported SDK version to Flutter 3.29/Dart 3.7.
* Updates README to reflect that only Android API 24+ is supported.

## 1.2.0

* Adds `pickMultiVideo` to allow selecting multiple videos from the gallery.
* Updates minimum supported SDK version to Flutter 3.27/Dart 3.6.

## 1.1.2

* Adds comment for the limit parameter.

## 1.1.1

* Updates documentation to note that Android Photo Picker use is not optional on Android 13+.

## 1.1.0

* Adds limit parameter to `MediaOptions` and `MultiImagePickerOptions` which limits
  the number of media that can be selected. 
    * Currently supported only on iOS and Android.
* Updates minimum supported SDK version to Flutter 3.19/Dart 3.3.

## 1.0.8

* Updates minimum supported SDK version to Flutter 3.13/Dart 3.1.
* Updates support matrix in README to indicate that iOS 11 is no longer supported.
* Clients on versions of Flutter that still support iOS 11 can continue to use this
  package with iOS 11, but will not receive any further updates to the iOS implementation.
* Updates minimum iOS implementation version to include a privacy manifest.

## 1.0.7

* Updates minimum required plugin_platform_interface version to 2.1.7.

## 1.0.6

* Fixes new lint warnings.

## 1.0.5

* Updates example app to use non-deprecated video_player method.
* Updates minimum supported SDK version to Flutter 3.10/Dart 3.0.

## 1.0.4

* Updates README to fix broken link.

## 1.0.3

* Adds pub topics to package metadata.
* Updates minimum supported SDK version to Flutter 3.7/Dart 2.19.

## 1.0.2

* Adds compatibility with `image_picker_for_web` 3.0.

## 1.0.1

* Rolls platform implementations to ensure that `pickMedia` and
  `pickMultipleMedia` have platform implementations.

## 1.0.0

* **BREAKING CHANGE**: Removes the deprecated `get*` methods. Clients who have
  not already done so will need to migrate to the `pick*` versions that use
  `XFile` rather than `PickedFile` for return values.
    * As this is the only change, we encourage authors of published packages
      that depend on `image_picker` to consider using a constraint of
      `'>=0.8.9 <2.0.0'` rather than `^1.0.0` when updating dependencies, to
      avoid conflicts with packages that have not yet updated.

## 0.8.9

* Adds `pickMedia` and `pickMultipleMedia` methods.

## 0.8.8

* Adds initial support for Windows, macOS, and Linux.
    * See README for current desktop limitations.
* Adds `supportsImageSource` to allow runtime checks for whether a given source
  is supported by the current platform's implementation.

## 0.8.7+5

* Fixes `BuildContext` handling in example.

## 0.8.7+4

* Updates README to mention usage of `launchMode: singleInstance` for Android.

## 0.8.7+3

* Adds handling of unsupported image types to the example.

## 0.8.7+2

* Updates minimum Flutter version to 3.3.
* Fixes a broken link in the example related to `image_picker_for_web`.

## 0.8.7+1

* Updates README to use code excerpts.

## 0.8.7

* Adds `usePhotoPickerAndroid` options.
* Aligns Dart and Flutter SDK constraints.

## 0.8.6+4

* Updates iOS minimum version in README.

## 0.8.6+3

* Updates links for the merge of flutter/plugins into flutter/packages.

## 0.8.6+2

* Updates `NSPhotoLibraryUsageDescription` description in README.
* Updates minimum Flutter version to 3.0.

## 0.8.6+1

* Updates code for stricter lint checks.

## 0.8.6

* Updates minimum Flutter version to 2.10.
* Fixes avoid_redundant_argument_values lint warnings and minor typos.
* Adds `requestFullMetadata` option to `pickImage`, so images on iOS can be picked without `Photo Library Usage` permission.

## 0.8.5+3

* Adds argument error assertions to the app-facing package, to ensure
  consistency across platform implementations.
* Updates tests to use a mock platform instead of relying on default
  method channel implementation internals.

## 0.8.5+2

* Minor fixes for new analysis options.

## 0.8.5+1

* Fixes library_private_types_in_public_api, sort_child_properties_last and use_key_in_widget_constructors
  lint warnings.

## 0.8.5

* Moves Android and iOS implementations to federated packages.
* Adds OS version support information to README.

## 0.8.4+11

* Fixes Activity leak.

## 0.8.4+10

* iOS: allows picking images with WebP format.

## 0.8.4+9

* Internal code cleanup for stricter analysis options.

## 0.8.4+8

* Configures the `UIImagePicker` to default to gallery instead of camera when
picking multiple images on pre-iOS 14 devices.

## 0.8.4+7

* Refactors unit test to expose private interface via a separate test header instead of the inline declaration.

## 0.8.4+6

* Fixes minor type issues in iOS implementation.

## 0.8.4+5

* Improves the documentation on handling MainActivity being killed by the Android OS.
* Updates Android compileSdkVersion to 31.
* Fix iOS RunnerUITests search paths.

## 0.8.4+4

* Fix typos in README.md.

## 0.8.4+3

* Suppress a unchecked cast build warning.

## 0.8.4+2

* Update minimum Flutter SDK to 2.5 and iOS deployment target to 9.0.

## 0.8.4+1

* Fix README Example for `ImagePickerCache` to cache multiple files.

## 0.8.4

* Update `ImagePickerCache` to cache multiple files.

## 0.8.3+3

* Fix pickImage not returning a value on iOS when dismissing PHPicker sheet by swiping.
* Updated Android lint settings.

## 0.8.3+2

* Fix using Camera as image source on Android 11+

## 0.8.3+1

* Fixed README Example.

## 0.8.3

* Move `ImagePickerFromLimitedGalleryUITests` to `RunnerUITests` target.
* Improved handling of bad image data when applying metadata changes on iOS.

## 0.8.2

* Added new methods that return `package:cross_file` `XFile` instances. [Docs](https://pub.dev/documentation/cross_file/latest/index.html).
* Deprecate methods that return `PickedFile` instances:
  * `getImage`: use **`pickImage`** instead.
  * `getVideo`: use **`pickVideo`** instead.
  * `getMultiImage`: use **`pickMultiImage`** instead.
  * `getLostData`: use **`retrieveLostData`** instead.

## 0.8.1+4

* Fixes an issue where `preferredCameraDevice` option is not working for `getVideo` method.
* Refactor unit tests that were device-only before.

## 0.8.1+3

* Fix image picker causing a crash when the cache directory is deleted.

## 0.8.1+2

* Update the example app to support the multi-image feature.

## 0.8.1+1

* Expose errors thrown in `pickImage` and `pickVideo` docs.

## 0.8.1

* Add a new method `getMultiImage` to allow picking multiple images on iOS 14 or higher
and Android 4.3 or higher. Returns only 1 image for lower versions of iOS and Android.
* Known issue: On Android, `getLostData` will only get the last picked image when picking multiple images,
see: [#84634](https://github.com/flutter/flutter/issues/84634).

## 0.8.0+4

* Cleaned up the README example

## 0.8.0+3

* Readded request for camera permissions.

## 0.8.0+2

* Fix a rotation problem where when camera is chosen as a source and additional parameters are added.

## 0.8.0+1

* Removed redundant request for camera permissions.

## 0.8.0

* BREAKING CHANGE: Changed storage location for captured images and videos to internal cache on Android,
to comply with new Google Play storage requirements. This means developers are responsible for moving
the image or video to a different location in case more permanent storage is required. Other applications
will no longer be able to access images or videos captured unless they are moved to a publicly accessible location.
* Updated Mockito to fix Android tests.

## 0.7.5+4
* Migrate maven repo from jcenter to mavenCentral.

## 0.7.5+3
* Localize `UIAlertController` strings.

## 0.7.5+2
* Implement `UIAlertController` with a preferredStyle of `UIAlertControllerStyleAlert` since `UIAlertView` is deprecated.

## 0.7.5+1

* Fixes a rotation problem where Select Photos limited access is chosen but the image that is picked
is not included selected photos and image is scaled.

## 0.7.5

* Fixes an issue where image rotation is wrong when Select Photos chose and image is scaled.
* Migrate to PHPicker for iOS 14 and higher versions to pick image from the photo library.
* Implement the limited permission to pick photo from the photo library when Select Photo is chosen.

## 0.7.4

* Update flutter_plugin_android_lifecycle dependency to 2.0.1 to fix an R8 issue
  on some versions.

## 0.7.3

* Endorse image_picker_for_web.

## 0.7.2+1

* Android: fixes an issue where videos could be wrongly picked with `.jpg` extension.

## 0.7.2

* Run CocoaPods iOS tests in RunnerUITests target.

## 0.7.1

* Update platform_plugin_interface version requirement.

## 0.7.0

* Migrate to nullsafety
* Breaking Changes:
    * Removed the deprecated methods: `ImagePicker.pickImage`, `ImagePicker.pickVideo`,
`ImagePicker.retrieveLostData`

## 0.6.7+22

* iOS: update XCUITests to separate each test session.

## 0.6.7+21

* Update the example app: remove the deprecated `RaisedButton` and `FlatButton` widgets.

## 0.6.7+20

* Updated README.md to show the new Android API requirements.

## 0.6.7+19

* Do not copy static field to another static field.

## 0.6.7+18

* Fix outdated links across a number of markdown files ([#3276](https://github.com/flutter/plugins/pull/3276))

## 0.6.7+17

* iOS: fix `User-facing text should use localized string macro` warning.

## 0.6.7+16

* Update Flutter SDK constraint.

## 0.6.7+15

* Fix element type in XCUITests to look for staticText type when searching for texts.
  * See https://github.com/flutter/flutter/issues/71927
* Minor update in XCUITests to search for different elements on iOS 14 and above.

## 0.6.7+14

* Set up XCUITests.

## 0.6.7+13

* Update documentation of `getImage()` about HEIC images.

## 0.6.7+12

* Update android compileSdkVersion to 29.

## 0.6.7+11

* Keep handling deprecated Android v1 classes for backward compatibility.

## 0.6.7+10

* Updated documentation with code that does not throw an error when image is not picked.

## 0.6.7+9

* Updated the ExifInterface to the AndroidX version to support more file formats;
* Update documentation of `getImage()` regarding compression support for specific image types.

## 0.6.7+8

* Update documentation of getImage() about Android's disability to preference front/rear camera.

## 0.6.7+7

* Updating documentation to use isEmpty check.

## 0.6.7+6

* Update package:e2e -> package:integration_test

## 0.6.7+5

* Update package:e2e reference to use the local version in the flutter/plugins
  repository.


## 0.6.7+4

* Support iOS simulator x86_64 architecture.

## 0.6.7+3

* Fixes to the example app:
  * Make videos in web start muted. This allows auto-play across browsers.
  * Prevent the app from disposing of video controllers too early.

## 0.6.7+2

* iOS: Fixes unpresentable album/image picker if window's root view controller is already presenting other view controller.

## 0.6.7+1

* Add web support to the example app.

## 0.6.7

* Utilize the new platform_interface package.
* **This change marks old methods as `deprecated`. Please check the README for migration instructions to the new API.**

## 0.6.6+5

* Pin the version of the platform interface to 1.0.0 until the plugin refactor
is ready to go.

## 0.6.6+4

* Fix bug, sometimes double click cancel button will crash.

## 0.6.6+3

* Update README

## 0.6.6+2

* Update lower bound of dart dependency to 2.1.0.

## 0.6.6+1

* Android: always use URI to get image/video data.

## 0.6.6

* Use the new platform_interface package.

## 0.6.5+3

* Move core plugin to a subdirectory to allow for federation.

## 0.6.5+2

* iOS: Fixes crash when an image in the gallery is tapped more than once.

## 0.6.5+1

* Fix CocoaPods podspec lint warnings.

## 0.6.5

* Set maximum duration for video recording.
* Fix some existing XCTests.

## 0.6.4

* Add a new parameter to select preferred camera device.

## 0.6.3+4

* Make the pedantic dev_dependency explicit.

## 0.6.3+3

* Android: Fix a crash when `externalFilesDirectory` does not exist.

## 0.6.3+2

* Bump RoboElectric dependency to 4.3.1 and update resource usage.

## 0.6.3+1

* Fix an issue that the example app won't launch the image picker after Android V2 embedding migration.

## 0.6.3

* Support Android V2 embedding.
* Migrate to using the new e2e test binding.

## 0.6.2+3

* Remove the deprecated `author:` field from pubspec.yaml
* Migrate the plugin to the pubspec platforms manifest.
* Require Flutter SDK 1.10.0 or greater.

## 0.6.2+2

* Android: Revert the image file return logic when the image doesn't have to be scaled. Fix a rotation regression caused by 0.6.2+1
* Example App: Add a dialog to enter `maxWidth`, `maxHeight` or `quality` when picking image.

## 0.6.2+1

* Android: Fix a crash when a non-image file is picked.
* Android: Fix unwanted bitmap scaling.

## 0.6.2

* iOS: Fixes an issue where picking content from Gallery would result in a crash on iOS 13.

## 0.6.1+11

* Stability and Maintainability: update documentations, add unit tests.

## 0.6.1+10

* iOS: Fix image orientation problems when scaling images.

## 0.6.1+9

* Remove AndroidX warning.

## 0.6.1+8

* Fix iOS build and analyzer warnings.

## 0.6.1+7

* Android: Fix ImagePickerPlugin#onCreate casting context which causes exception.

## 0.6.1+6

* Define clang module for iOS

## 0.6.1+5

* Update and migrate iOS example project.

## 0.6.1+4

* Android: Fix a regression where the `retrieveLostImage` does not work anymore.
* Set up Android unit test to test `ImagePickerCache` and added image quality caching tests.

## 0.6.1+3

* Bugfix iOS: Fix orientation of the picked image after scaling.
* Remove unnecessary code that tried to normalize the orientation.
* Trivial XCTest code fix.

## 0.6.1+2

* Replace dependency on `androidx.legacy:legacy-support-v4:1.0.0` with `androidx.core:core:1.0.2`

## 0.6.1+1

* Add dependency on `androidx.annotation:annotation:1.0.0`.

## 0.6.1

* New feature : Get images with custom quality. While picking images, user can pass `imageQuality`
parameter to compress image.

## 0.6.0+20

* Android: Migrated information cache methods to use instance methods.

## 0.6.0+19

* Android: Fix memory leak due not unregistering ActivityLifecycleCallbacks.

## 0.6.0+18

* Fix video play in example and update video_player plugin dependency.

## 0.6.0+17

* iOS: Fix a crash when user captures image from the camera with devices under iOS 11.

## 0.6.0+16

* iOS Simulator: fix hang after trying to take an image from the non-existent camera.

## 0.6.0+15

* Android: throws an exception when permissions denied instead of ignoring.

## 0.6.0+14

* Fix typo in README.

## 0.6.0+13

* Bugfix Android: Fix a crash occurs in some scenarios when user picks up image from gallery.

## 0.6.0+12

* Use class instead of struct for `GIFInfo` in iOS implementation.

## 0.6.0+11

* Don't use module imports.

## 0.6.0+10

* iOS: support picking GIF from gallery.

## 0.6.0+9

* Add missing template type parameter to `invokeMethod` calls.
* Bump minimum Flutter version to 1.5.0.
* Replace invokeMethod with invokeMapMethod wherever necessary.

## 0.6.0+8

* Bugfix: Add missed return statement into the image_picker example.

## 0.6.0+7

* iOS: Rename objects to follow Objective-C naming convention to avoid conflicts with other iOS library/frameworks.

## 0.6.0+6

* iOS: Picked image now has all the correct meta data from the original image, includes GPS, orientation and etc.

## 0.6.0+5

* iOS: Add missing import.

## 0.6.0+4

* iOS: Using first byte to determine original image type.
* iOS: Added XCTest target.
* iOS: The picked image now has the correct EXIF data copied from the original image.

## 0.6.0+3

* Android: fixed assertion failures due to reply messages that were sent on the wrong thread.

## 0.6.0+2

* Android: images are saved with their real extension instead of always using `.jpg`.

## 0.6.0+1

* Android: Using correct suffix syntax when picking image from remote url.

## 0.6.0

* Breaking change iOS: Returned `File` objects when picking videos now always holds the correct path. Before this change, the path returned could have `file://` prepended to it.

## 0.5.4+3

* Fix the example app failing to load picked video.

## 0.5.4+2

* Request Camera permission if it present in Manifest on Android >= M.

## 0.5.4+1

* Bugfix iOS: Cancel button not visible in gallery, if camera was accessed first.

## 0.5.4

* Add `retrieveLostData` to retrieve lost data after MainActivity is killed.

## 0.5.3+2

* Android: fix a crash when the MainActivity is destroyed after selecting the image/video.

## 0.5.3+1

* Update minimum deploy iOS version to 8.0.

## 0.5.3

* Fixed incorrect path being returned from Google Photos on Android.

## 0.5.2

* Check iOS camera authorizationStatus and return an error, if the access was
  denied.

## 0.5.1

* Android: Do not delete original image after scaling if the image is from gallery.

## 0.5.0+9

* Remove unnecessary temp video file path.

## 0.5.0+8

* Fixed wrong GooglePhotos authority of image Uri.

## 0.5.0+7

* Fix a crash when selecting images from yandex.disk and dropbox.

## 0.5.0+6

* Delete the original image if it was scaled.

## 0.5.0+5

* Remove unnecessary camera permission.

## 0.5.0+4

* Preserve transparency when saving images.

## 0.5.0+3

* Fixed an Android crash when Image Picker is registered without an activity.

## 0.5.0+2

* Log a more detailed warning at build time about the previous AndroidX
  migration.

## 0.5.0+1

* Fix a crash when user calls the plugin in quick succession on Android.

## 0.5.0

* **Breaking change**. Migrate from the deprecated original Android Support
  Library to AndroidX. This shouldn't result in any functional changes, but it
  requires any Android apps using this plugin to [also
  migrate](https://developer.android.com/jetpack/androidx/migrate) if they're
  using the original support library.

## 0.4.12+1

* Fix a crash when selecting downloaded images from image picker on certain devices.

## 0.4.12

* Fix a crash when user tap the image mutiple times.

## 0.4.11

* Use `api` to define `support-v4` dependency to allow automatic version resolution.

## 0.4.10

* Depend on full `support-v4` library for ease of use (fixes conflicts with Firebase and libraries)

## 0.4.9

* Bugfix: on iOS prevent to appear one pixel white line on resized image.

## 0.4.8

* Replace the full `com.android.support:appcompat-v7` dependency with `com.android.support:support-core-utils`, which results in smaller APK sizes.
* Upgrade support library to 27.1.1

## 0.4.7

* Added missing video_player package dev dependency.

## 0.4.6

* Added support for picking remote images.

## 0.4.5

* Bugfixes, code cleanup, more test coverage.

## 0.4.4

* Updated Gradle tooling to match Android Studio 3.1.2.

## 0.4.3

* Bugfix: on iOS the `pickVideo` method will now return null when the user cancels picking a video.

## 0.4.2

* Added support for picking videos.
* Updated example app to show video preview.

## 0.4.1

* Bugfix: the `pickImage` method will now return null when the user cancels picking the image, instead of hanging indefinitely.
* Removed the third party library dependency for taking pictures with the camera.

## 0.4.0

* **Breaking change**. The `source` parameter for the `pickImage` is now required. Also, the `ImageSource.any` option doesn't exist anymore.
* Use the native Android image gallery for picking images instead of a custom UI.

## 0.3.1

* Bugfix: Android version correctly asks for runtime camera permission when using `ImageSource.camera`.

## 0.3.0

* **Breaking change**. Set SDK constraints to match the Flutter beta release.

## 0.2.1

* Simplified and upgraded Android project template to Android SDK 27.
* Updated package description.

## 0.2.0

* **Breaking change**. Upgraded to Gradle 4.1 and Android Studio Gradle plugin
  3.0.1. Older Flutter projects need to upgrade their Gradle setup as well in
  order to use this version of the plugin. Instructions can be found
  [here](https://github.com/flutter/flutter/wiki/Updating-Flutter-projects-to-Gradle-4.1-and-Android-Studio-Gradle-plugin-3.0.1).

## 0.1.5

* Added FLT prefix to iOS types

## 0.1.4

* Bugfix: canceling image picking threw exception.
* Bugfix: errors in plugin state management.

## 0.1.3

* Added optional source argument to pickImage for controlling where the image comes from.

## 0.1.2

* Added optional maxWidth and maxHeight arguments to pickImage.

## 0.1.1

* Updated Gradle repositories declaration to avoid the need for manual configuration
  in the consuming app.

## 0.1.0+1

* Updated readme and description in pubspec.yaml

## 0.1.0

* Updated dependencies
* **Breaking Change**: You need to add a maven section with the "https://maven.google.com" endpoint to the repository section of your `android/build.gradle`. For example:
```gradle
allprojects {
    repositories {
        jcenter()
        maven {                              // NEW
            url "https://maven.google.com"   // NEW
        }                                    // NEW
    }
}
```

## 0.0.3

* Fix for crash on iPad when showing the Camera/Gallery selection dialog

## 0.0.2+2

* Updated README

## 0.0.2+1

* Updated README

## 0.0.2

* Fix crash when trying to access camera on a device without camera (e.g. the Simulator)

## 0.0.1

* Initial Release







 
