Flutter Multi Image Picker
Flutter plugin that allows you to display multi image picker on iOS and Android.
Key Features •
- Pick multiple images
- Native performance
- Photos sorted by albums
- Take a picture option in the grid view
- Restrict the maximum count of images the user can pick
- Customizable UI and localizations
- Thumbnail support
- Specify the image quality of the original image or thumbnails
- Read image meta data
You can see the official documentation here.
For more information regarding breaking changes and migrating through different versions of the plugin please read the upgrading guide.
Flutter Multi Image Picker is an emailware. Meaning, if you liked using this plugin or has helped you in anyway, I'd like you send me an email on firstname.lastname@example.org about anything you'd want to say about this software. I'd really appreciate it!
This software uses the following open source packages:
image_picker - Official Flutter image picker plugin
If this plugin was useful to you, helped you to deliver your app, saved you a lot of time, or you just want to support the project, I would be very grateful if you buy me a cup of coffee.
GitHub @Sh1d0w ·
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
and this project adheres to Semantic Versioning.
- Trying to read images that does not exists will now throw AssetNotFoundException #222
- Permission Denied error now will be correctly thrown on iOS if the user has disabled camera access.
- Don't pin meta package version
- Make thumb provider use non depracated plugin methods
- Temporarily pin meta package version to 1.1.7
- The plugin now returns file paths as well. To obtain the asset file path use
deleteImages method. This plugin purpose is only to pick images.
Asset.requestThumbnail method. Use
Asset.requestOriginal method. Use
Asset.requestMetadata method. Use
- Pin minimum Flutter version required to 1.7.8
- Added Material option
- Updated the code to use defaultBinaryMessenger instead of the deprecated BinaryMessenger
pickImages now throws NoImagesSelectedException, PermissionDeniedException and PermissionPermanentlyDeniedExeption in addition to PlatformException. You can implement different logic for handling each case separately now.
- dateTime, dateTimeOriginal and dateTimeDigitized in the Metadata.exif object will now properly be returned as strings. The format is "YYYY:MM:DD HH:MM:SS" with time shown in 24-hour format as per Exif spec.
- Added the ability to change the icons for back and done buttons on Android. For more information see the documentation and the example app in this repository.
- Added new Android option useDetailsView to disable details view when clicking on the image and directly select it
- Update FishBun library to version 0.10.0
- Do not display GIF images on Android #180
- Methods marked with @UiThread must be executed on the main thread. #160
- Fix resolving gps metadata on Android #153
- Updated FishBun to version 0.9.1
- Added new option
selectedAssets which allows you to pre select Assets when opening the image picker
- Added option to customize the message when max selection limit is reached on Android
- Remove informationCollector from AssetThumbImageProvider to make the plugin work with latest master version of Flutter info
- Updated BSImagePicker version to 2.10.0 and Switct version to 5.0
- Added an option to start Android picker in "All Photos" closes #111
- Added selectCircleStrokeColor closes #113
AssetThumb widget, which simplified and handles displaying of thumb images.
Asset.imageData getters. They were obsolete as this data was returned from resolved future anyways, there is no point to keep them in the
Asset.release methods, as they are no longer needed.
Asset.requestOriginal now return
Future<ByteData> as previously returned
- Correctly return image name on photos taken with camera on Android
- Export MaterialOptions to make styling of Android possible.
- Fixed some deprecation warnings on Android
- Replaced Mattise image picker with FishBun on Android. For migration guide see here. #95
- Send Thumb and Original image data via separate channels #80
- Added ability to delete array of Assets from the filesystem #79
- Fix failing build on Android
- Display only images in the picker on Android #73
- Use custom fork of Matisse until it adds AndroidX support.
- 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 if they're using the original support library.
- Correctly handle LensSpecification and SubjectArea metadata
- Fix possible bug with permissions on Android
- Add original image name to the Asset class
- Fix bug with permissions on Android
- Remove static_library definition on iOS
- Fix memory leak on Android
- Bump Android and iOS versions
- Removed deprecated meta data tag on Android
requestMetadata() method to the Asset class
takePhotoIcon option to ios customization settings
- Android - renamed authorities to
android:authorities="YOUR_PACKAGE_NAME_HERE.multiimagepicker.fileprovider". Please update your manifest file to avoid errors.
- Added custom file provider to avoid collisions with other plugins. See README for example implementation
- Added new optional parameter
- Don't rescale the image when decoding it on Android
- Correctly handle image orientation on Android phones ref
- Increase thumb quality on Android
- Ask for CAMERA permission on Android, and fix opening of the picker after permission grant.
- Use correct application id on Android devices when setting up the camera provider
- requestOriginal now works correctly on Android
- Use app specific content provider, updated README.md
- Commented out example file provider as it gets included in production bundle. If you want to test the example just uncomment it in the android manifest.
- Added new picker option
enableCamera which allows the user to take pictures directly from the gallery. For more info how to enable this please see README.md
- iOS 12 and Swift 4.2 language fixes
- Important: In your XCode build setting you must set Swift Version to 4.2
- Update Image picker library to support Swift 4.2 and XCode 10
- Remove obsolette file path in the asset class
- Fixed path not passed to the Asset class #7
- Add Real file path and allow to refresh image gallery #6 (thanks CircleCurve)
- Add originalWidth, originalHeight, isPortrait and isLandscape getters for the Asset class
- Add release(), releaseOriginal() and releaseThumb() methods to help clean up the image data when it is no longer needed
- Fix null pointer exception on Android when finishing from another activity (thanks to xia-weiyang)
- Add getters to Asset class
requestOriginal methods now will return Future
- Correctly crop the thumb on iOS
- Allow network access to download images present only in iCloud
- Improve thumbs quality on iOS to always deliver best of it
- Fix picking original image on Android was not triggering properly the callback
- The plugin have been redesigned to be more responsive and flexible.
- pickImages method will no longer return List
- You can then request asset thumbnails or the original image, which will load asyncrhoniously without blocking the main UI thred. For more info see the examples directory.
Asset class, with methods
requestThumbnail(int width, int height, callback) and
- Fix crash on iOS when picking a lot of images.
- Picking images on iOS now will properly handle PHAssets
- Fix a crash on Android caused by closing and reopening the gallery
- Support iOS and Android customizations
- iOS: Add missing super.init() call in the class constructor
- Changed sdk: ">=2.0.0-dev.28.0 <3.0.0"
- Add Support for Dart 2 in pubspec.yaml file
- Initial release with basic support for iOS and Android
Demonstrates how to use the multi_image_picker plugin.
For help getting started with Flutter, view our online
Use this package as a library
1. Depend on it
Add this to your package's pubspec.yaml file:
2. Install it
You can install packages from the command line:
$ flutter pub get
Alternatively, your editor might support
flutter pub get.
Check the docs for your editor to learn more.
3. Import it
Now in your Dart code, you can use:
We analyzed this package on Aug 19, 2019, and provided a score, details, and suggestions below.
Analysis was completed with status completed using:
- Dart: 2.4.0
- pana: 0.12.19
- Flutter: 1.7.8+hotfix.4
Detected platforms: Flutter
References Flutter, and has no conflicting libraries.
Maintenance issues and suggestions
Support latest dependencies. (-10 points)
The version constraint in
pubspec.yaml does not support the latest published versions for 1 dependency (