photo_manager
A Flutter plugin that provides album assets abstraction management APIs on Android, iOS, macOS, and OpenHarmony.
3.12.0
330K downloads/mo
#650 most downloaded on pub.dev
fluttercandies/flutter_photo_manager
What this package is like to depend on
Last release 15 days ago
09 Aug 2026
Release timing varies
gaps range from 8 days to 6 months
Nearly every release is documented
notes for 133 of 136 stable releases
4 versions withdrawn
withdrawn after publishing
8 years old
189 releases · first in 2018
8 releases in the last 12 months
see the full history below
Release timeline
189 releases · Oct 2018 to Aug 2026Releases
latest 60 of 189-
3.12.009 Aug 2026Release notes
Open source →Breaking changes
- The Darwin (iOS/macOS) implementation no longer links
CoreLocation, so apps that do not save assets with location no longer need anNSLocationWhenInUseUsageDescriptionpurpose string (#1428). Saving withlatitude/longitudeon iOS/macOS now throws; install thephoto_manager_locationplugin to keep that capability (which linksCoreLocation).
Fixes
- Avoid App Store rejections caused by referencing the private
PHAsset.filenameselector. The Darwintitlelookup now uses the publicPHAssetResource.originalFilenameAPI directly instead of KVC'ing into the non-publicfilenameselector.
Release notes
Open source →Breaking changes
- The Darwin (iOS/macOS) implementation no longer links
CoreLocation, so apps that do not save assets with location no longer need anNSLocationWhenInUseUsageDescriptionpurpose string (#1428). Saving withlatitude/longitudeon iOS/macOS now throws; install thephoto_manager_locationplugin to keep that capability (which linksCoreLocation).
Fixes
- Avoid App Store rejections caused by referencing the private
PHAsset.filenameselector. The Darwintitlelookup now uses the publicPHAssetResource.originalFilenameAPI directly instead of KVC'ing into the non-publicfilenameselector.
- The Darwin (iOS/macOS) implementation no longer links
-
3.11.025 Jul 2026Release notes
Open source →What's Changed
Features
- Add
AndroidEditor.restoreFromTrashto restore assets from the Android system trash. - Add
AssetEntity.isTrashedexposing the AndroidMediaStore.MediaColumns.IS_TRASHEDstate.
Fixes
- Fix Gradle 9 configuration failures in the legacy Kotlin fallback and correctly select built-in Kotlin when
android.builtInKotlinis unset.
Release notes
Open source →Features
- Add
AndroidEditor.restoreFromTrashto restore assets from the Android system trash. - Add
AssetEntity.isTrashedexposing the AndroidMediaStore.MediaColumns.IS_TRASHEDstate.
Fixes
- Fix Gradle 9 configuration failures in the legacy Kotlin fallback and correctly select built-in Kotlin when
android.builtInKotlinis unset.
- Add
-
3.10.009 Jul 2026Release notes
Open source →What's Changed
Features
- Add an optional
typeparameter toAssetPathEntity.getAssetListPagedandAssetPathEntity.getAssetListRangeso callers can filter to a specificRequestTypewithin a single album (e.g. read videos out of acommonalbum) without constructing a newAssetPathEntity. Defaults to the album's owntypewhen omitted. - Add Darwin (iOS/macOS) only namespaced accessors
AssetEntity.darwinandAssetPathEntity.darwinthat group PhotoKit-specific reads without bloating the shared entity classes:asset.darwin.cloudIdentifierand the batchPhotoManager.plugin.getCloudIdentifiersresolve stable cross-device cloud identifiers (iOS 15+/macOS 12+).asset.darwin.hasAdjustmentsreports whether an asset has edits, andasset.darwin.getBaseFile()exports the unedited base file.asset.darwin.getAdjustmentData()exports the raw AAE adjustment (edit-history) data backing an asset's edits, so callers can access the original resource, the edit metadata, and the rendered result separately (non-destructive editing).path.darwin.getParentPathList()returns the parent folders containing an album or folder.
- Add
updateCreationDatetoPhotoManager.editor.darwinandPhotoManager.editor.androidfor modifying an asset's creation date after it has been saved.- On iOS/macOS: updates the
PHAsset.creationDateproperty. - On Android Q (API 29)+: updates the MediaStore
DATE_TAKENfield; unsupported on API 28 and below.
- On iOS/macOS: updates the
- Add
PhotoManager.canManageMedia()andPhotoManager.requestManageMedia()for the Android 12 (API 31+)MANAGE_MEDIAspecial permission.
Improvements
- Migrate the Android plugin to Flutter's built-in Kotlin integration with a compatibility fallback for projects that still require
kotlin-android, without changing the package's public Flutter or Dart version constraints. - Fix the Android plugin
namespacetocom.fluttercandies.photo_managerso it matches the plugin package and Kotlin sources.
Fixes
- Fix Android
PlatformExceptions fromIllegalArgumentException: Volume external_primary not foundby returning an empty cursor when MediaProvider reports the primary volume as unavailable, and guard the media-storeContentObserveragainst the same exception. - Fix Darwin
AssetEntity.originFilereturning the locally-downsampled proxy for iCloud + "Optimize iPhone Storage"-affected photos by preferringPHImageManagerwithHighQualityFormatoverwriteDataForAssetResourceon unedited raster primaries. - Fix Darwin
PhotoManager.editor.darwin.saveLivePhotoreturningPHPhotosErrorDomain (-1)when the caller-supplied image and video lacked the shared Live Photo pairing identifierPHAssetCreationRequestrequires. - Fix iOS 18+ raising
Unsupported fetch for asset collections with type 2 and subtype 2when navigating into the primary album, caused by an invalidSmartAlbum+AlbumRegularcombination in the recent-collection check. - Fix Darwin
AssetEntity.loadFile/originFilesporadically failing withPHPhotosErrorDomain (-1)for edited assets and Live Photos by walking multiplePHAssetResourcecandidates and falling back toPHImageManagerfor plain videos/images whenwriteDataForAssetResourceexhausts them. - Reduce built-in Kotlin migration warnings for supported project configurations while preserving legacy Flutter compatibility.
- Fix Darwin crashes when querying assets by local identifier by catching PhotoKit exceptions and returning safe fallback results instead of aborting the process.
- Fix the
AssetEntity.durationAPI docs to clarify that audio and video durations are returned in seconds across supported platforms, preserving the existing API behavior. - Fix Android 14+ limited permission photo selection not reflecting deselection in Flutter layer. When users modify their photo selection via
presentLimited(), the changes are now properly notified to the Flutter layer. - Fix delayed native deletion confirmation dialogs on iOS by elevating the dispatch queue priority of
deleteWithIds,removeInAlbum, anddeleteAlbumtoQOS_CLASS_USER_INITIATED. - Fix Android 14+ permission requests incorrectly short-circuiting when only part of the requested media access was already granted.
- Fix Android permission requests always asking for both image and video access regardless of
RequestType. The plugin now only requestsREAD_MEDIA_IMAGES/READ_MEDIA_VIDEOmatching the caller'sRequestType, so the Android 14+ system photo picker only shows the media types the app actually asked for. - Fix Darwin video durations being truncated instead of rounded, so
AssetEntity.durationmatches the system album display more closely. - Fix Darwin
getTitleAsyncreturning a null channel result by falling back to an empty string. - Fix Darwin Live Photo exports with an explicit
darwinFileType, restoring iOS conversions such as Live Photo MOV-to-MP4 output. - Fix Darwin image
loadFile(isOrigin: false)blocking the iOS UI thread by making the request asynchronous and moving JPEG file conversion off the main thread, allowingPMProgressHandlerupdates to arrive while loading. - Fix
presentLimited()on iOS resolving the presenting view controller through the deprecatedUIApplication.keyWindow, which can return the wrong window (or none) once an app adopts the UIScene life cycle. The plugin now prefers theFlutterViewControllerattached to its own engine and falls back to scanning the foreground-activeUIWindowScenefor the key window. - Fix
latitude/longitude/latLngbeing dropped whenever a coordinate component was exactly0.0(e.g. assets near the equator or prime meridian). Dart, Android, and iOS/macOS all used0.0as a "no location" sentinel;0.0is now treated as a valid coordinate, and the native platforms report the absence of location data as an explicitnullinstead. - Replace the internal
CC_MD5-based hash used to derive Darwin full-image cache filenames fromPHAsset.localIdentifierwithCC_SHA256, silencing the macOS 10.15+ deprecation warnings fromCommonCryptowithout changing observable behavior. Existing cached files under the plugin cache directory are re-created on first access after upgrade.
Release notes
Open source →Features
- Add an optional
typeparameter toAssetPathEntity.getAssetListPagedandAssetPathEntity.getAssetListRangeso callers can filter to a specificRequestTypewithin a single album (e.g. read videos out of acommonalbum) without constructing a newAssetPathEntity. Defaults to the album's owntypewhen omitted. - Add Darwin (iOS/macOS) only namespaced accessors
AssetEntity.darwinandAssetPathEntity.darwinthat group PhotoKit-specific reads without bloating the shared entity classes:asset.darwin.cloudIdentifierand the batchPhotoManager.plugin.getCloudIdentifiersresolve stable cross-device cloud identifiers (iOS 15+/macOS 12+).asset.darwin.hasAdjustmentsreports whether an asset has edits, andasset.darwin.getBaseFile()exports the unedited base file.asset.darwin.getAdjustmentData()exports the raw AAE adjustment (edit-history) data backing an asset's edits, so callers can access the original resource, the edit metadata, and the rendered result separately (non-destructive editing).path.darwin.getParentPathList()returns the parent folders containing an album or folder.
- Add
updateCreationDatetoPhotoManager.editor.darwinandPhotoManager.editor.androidfor modifying an asset's creation date after it has been saved.- On iOS/macOS: updates the
PHAsset.creationDateproperty. - On Android Q (API 29)+: updates the MediaStore
DATE_TAKENfield; unsupported on API 28 and below.
- On iOS/macOS: updates the
- Add
PhotoManager.canManageMedia()andPhotoManager.requestManageMedia()for the Android 12 (API 31+)MANAGE_MEDIAspecial permission.
Improvements
- Migrate the Android plugin to Flutter's built-in Kotlin integration with a compatibility fallback for projects that still require
kotlin-android, without changing the package's public Flutter or Dart version constraints. - Fix the Android plugin
namespacetocom.fluttercandies.photo_managerso it matches the plugin package and Kotlin sources.
Fixes
- Fix Android
PlatformExceptions fromIllegalArgumentException: Volume external_primary not foundby returning an empty cursor when MediaProvider reports the primary volume as unavailable, and guard the media-storeContentObserveragainst the same exception. - Fix Darwin
AssetEntity.originFilereturning the locally-downsampled proxy for iCloud + "Optimize iPhone Storage"-affected photos by preferringPHImageManagerwithHighQualityFormatoverwriteDataForAssetResourceon unedited raster primaries. - Fix Darwin
PhotoManager.editor.darwin.saveLivePhotoreturningPHPhotosErrorDomain (-1)when the caller-supplied image and video lacked the shared Live Photo pairing identifierPHAssetCreationRequestrequires. - Fix iOS 18+ raising
Unsupported fetch for asset collections with type 2 and subtype 2when navigating into the primary album, caused by an invalidSmartAlbum+AlbumRegularcombination in the recent-collection check. - Fix Darwin
AssetEntity.loadFile/originFilesporadically failing withPHPhotosErrorDomain (-1)for edited assets and Live Photos by walking multiplePHAssetResourcecandidates and falling back toPHImageManagerfor plain videos/images whenwriteDataForAssetResourceexhausts them. - Reduce built-in Kotlin migration warnings for supported project configurations while preserving legacy Flutter compatibility.
- Fix Darwin crashes when querying assets by local identifier by catching PhotoKit exceptions and returning safe fallback results instead of aborting the process.
- Fix the
AssetEntity.durationAPI docs to clarify that audio and video durations are returned in seconds across supported platforms, preserving the existing API behavior. - Fix Android 14+ limited permission photo selection not reflecting deselection in Flutter layer. When users modify their photo selection via
presentLimited(), the changes are now properly notified to the Flutter layer. - Fix delayed native deletion confirmation dialogs on iOS by elevating the dispatch queue priority of
deleteWithIds,removeInAlbum, anddeleteAlbumtoQOS_CLASS_USER_INITIATED. - Fix Android 14+ permission requests incorrectly short-circuiting when only part of the requested media access was already granted.
- Fix Android permission requests always asking for both image and video access regardless of
RequestType. The plugin now only requestsREAD_MEDIA_IMAGES/READ_MEDIA_VIDEOmatching the caller'sRequestType, so the Android 14+ system photo picker only shows the media types the app actually asked for. - Fix Darwin video durations being truncated instead of rounded, so
AssetEntity.durationmatches the system album display more closely. - Fix Darwin
getTitleAsyncreturning a null channel result by falling back to an empty string. - Fix Darwin Live Photo exports with an explicit
darwinFileType, restoring iOS conversions such as Live Photo MOV-to-MP4 output. - Fix Darwin image
loadFile(isOrigin: false)blocking the iOS UI thread by making the request asynchronous and moving JPEG file conversion off the main thread, allowingPMProgressHandlerupdates to arrive while loading. - Fix
presentLimited()on iOS resolving the presenting view controller through the deprecatedUIApplication.keyWindow, which can return the wrong window (or none) once an app adopts the UIScene life cycle. The plugin now prefers theFlutterViewControllerattached to its own engine and falls back to scanning the foreground-activeUIWindowScenefor the key window. - Fix
latitude/longitude/latLngbeing dropped whenever a coordinate component was exactly0.0(e.g. assets near the equator or prime meridian). Dart, Android, and iOS/macOS all used0.0as a "no location" sentinel;0.0is now treated as a valid coordinate, and the native platforms report the absence of location data as an explicitnullinstead. - Replace the internal
CC_MD5-based hash used to derive Darwin full-image cache filenames fromPHAsset.localIdentifierwithCC_SHA256, silencing the macOS 10.15+ deprecation warnings fromCommonCryptowithout changing observable behavior. Existing cached files under the plugin cache directory are re-created on first access after upgrade.
- Add an optional
-
3.9.005 Mar 2026Release notes
Open source →What's Changed
Improvements
- Improve output file extension recognition for Darwin platforms.
- Refactor
CustomColumnsto use platform-separated architecture. - Add public platform behavior classes
(AndroidCustomColumns,DarwinCustomColumns,OhosCustomColumns) forCustomColumns. - Avoid
UnsupportedErrorwhen usingCustomFilterin non-mobile environments (e.g., CI/Unit tests). - Bump
compileSdkVersionto 36 for Android. - Bump EXIF interface and Glide for Android.
- Code lints update for Android.
Full Changelog: v3.8.3...v3.9.0
Release notes
Open source →Improvements
- Improve output file extension recognition for Darwin platforms.
- Refactor
CustomColumnsto use platform-separated architecture. - Add public platform behavior classes
(
AndroidCustomColumns,DarwinCustomColumns,OhosCustomColumns) forCustomColumns. - Avoid
UnsupportedErrorwhen usingCustomFilterin non-mobile environments (e.g., CI/Unit tests). - Bump
compileSdkVersionto 36 for Android. - Bump EXIF interface and Glide for Android.
- Code lints update for Android.
-
3.8.306 Dec 2025Release notes
Open source →What's Changed
Fixes
- Fix all media assets being returned when
filterOptionis not specified instead of respecting the requested type.
Full Changelog: v3.8.2...v3.8.3
Release notes
Open source →Fixes
- Fix all media assets being returned when
filterOptionis not specified instead of respecting the requested type.
- Fix all media assets being returned when
-
3.8.227 Nov 2025Release notes
Open source →Release notes
Open source →Fixes
- Fix type error when calling
presentLimiteddue to map type inference issue withputIfAbsent.
- Fix type error when calling
-
3.8.127 Nov 2025Release notes
Open source →What's Changed
Fixes
- Fix SQL syntax error on Android when querying assets with pagination.
Full Changelog: v3.8.0...v3.8.1
Release notes
Open source →Fixes
- Fix SQL syntax error on Android when querying assets with pagination. This caused "Failed to obtain the cursor" errors on some devices (e.g., Huawei, realme) due to missing space between ORDER BY clause and LIMIT clause.
-
3.8.021 Nov 2025Release notes
Open source →What's Changed
Features
- Add Swift Package Manager support for iOS and macOS.
- Add
cancelTokenparameter toAssetEntity.loadFile. - Add
cancelAllRequestmethod toPhotoManager. - The
AssetEntity.getFileandAssetEntity.getOriginBytesmethods are public. - Add
relativePathAsyncgetter toAssetPathEntity. - Add iOS 18 smart album subtypes support:
smartAlbumSpatial- For spatial/3D photossmartAlbumProRes- For ProRes videossmartAlbumScreenRecordings- For screen recordingssmartAlbumReceipts- For receipts in the Utilities sectionsmartAlbumHandwriting- For handwriting in the Utilities sectionsmartAlbumIllustrations- For illustrations in the Utilities sectionsmartAlbumQRCodes- For QR codes in the Utilities section
- Add optional
latitude,longitude, andcreationDateparameters tosaveImage,saveImageWithPath, andsaveVideomethods.- On iOS: Sets location and creation date metadata for saved assets.
- On Android Q+: Sets DATE_TAKEN field and location metadata for saved assets.
- Add batch asset move functionality using
createWriteRequestAPI for Android 11+.
Improvements
- Remove implied
FilterOptionGroups when querying paths and assets.
This fixes assets finding when they were created in the future.
Some edge cases regarding performance drops caused by the complicated sort queries might also get fixed. - Add
PermissionState.isLimited.
Fixes
- Fix
type 'Null' is not a subtype of type 'Map<dynamic, dynamic>'error on Android when copying or moving assets fails.- Android now properly throws exceptions instead of returning null when
copyAssetToGalleryormoveAssetToGalleryoperations fail. - Dart side now handles null responses gracefully by throwing a
PlatformException.
- Android now properly throws exceptions instead of returning null when
- Fix PHImageManager crash on iOS by ensuring all PHImageManager/PHCachingImageManager methods are called on the main thread.
This resolves race conditions and deadlocks when thumbnail operations are dispatched to QoS background queues. - Fix EXC_BAD_ACCESS crash caused by accessing deallocated memory in async blocks on iOS.
- Fixed PHCachingImageManager methods:
fetchThumb,exportAssetToFile,fetchFullSizeImageFile. - Fixed PHAssetResourceManager methods:
fetchVideoResourceToFile,fetchOriginImageFile. - Fixed PHPhotoLibrary save methods:
saveImage,saveImageWithPath,saveVideo,saveLivePhoto.
- Fixed PHCachingImageManager methods:
- Fix
AssetEntity.latlngAsync()returning zero location for videos on Android by usingMediaMetadataRetrieverto extract location data from video files. - Fix nullability mismatch for
titleparameter insaveVideoandsaveImageWithPathmethods.
New Contributors
- @ColaFanta made their first contribution in #1312
- @HubHive made their first contribution in #1295
- @toyaji made their first contribution in #1320
Full Changelog: v3.7.1...v3.8.0
Release notes
Open source →Features
- Add Swift Package Manager support for iOS and macOS.
- Add
cancelTokenparameter toAssetEntity.loadFile. - Add
cancelAllRequestmethod toPhotoManager. - The
AssetEntity.getFileandAssetEntity.getOriginBytesmethods are public. - Add
relativePathAsyncgetter toAssetPathEntity. - Add iOS 18 smart album subtypes support:
smartAlbumSpatial- For spatial/3D photossmartAlbumProRes- For ProRes videossmartAlbumScreenRecordings- For screen recordingssmartAlbumReceipts- For receipts in the Utilities sectionsmartAlbumHandwriting- For handwriting in the Utilities sectionsmartAlbumIllustrations- For illustrations in the Utilities sectionsmartAlbumQRCodes- For QR codes in the Utilities section
- Add optional
latitude,longitude, andcreationDateparameters tosaveImage,saveImageWithPath, andsaveVideomethods.- On iOS: Sets location and creation date metadata for saved assets.
- On Android Q+: Sets DATE_TAKEN field and location metadata for saved assets.
- Add batch asset move functionality using
createWriteRequestAPI for Android 11+.
Improvements
- Remove implied
FilterOptionGroups when querying paths and assets. This fixes assets finding when they were created in the future. Some edge cases regarding performance drops caused by the complicated sort queries might also get fixed. - Add
PermissionState.isLimited.
Fixes
- Fix
type 'Null' is not a subtype of type 'Map<dynamic, dynamic>'error on Android when copying or moving assets fails.- Android now properly throws exceptions instead of returning null when
copyAssetToGalleryormoveAssetToGalleryoperations fail. - Dart side now handles null responses gracefully by throwing a
PlatformException.
- Android now properly throws exceptions instead of returning null when
- Fix PHImageManager crash on iOS by ensuring all PHImageManager/PHCachingImageManager methods are called on the main thread. This resolves race conditions and deadlocks when thumbnail operations are dispatched to QoS background queues.
- Fix EXC_BAD_ACCESS crash caused by accessing deallocated memory in async blocks on iOS.
- Fixed PHCachingImageManager methods:
fetchThumb,exportAssetToFile,fetchFullSizeImageFile. - Fixed PHAssetResourceManager methods:
fetchVideoResourceToFile,fetchOriginImageFile. - Fixed PHPhotoLibrary save methods:
saveImage,saveImageWithPath,saveVideo,saveLivePhoto.
- Fixed PHCachingImageManager methods:
- Fix
AssetEntity.latlngAsync()returning zero location for videos on Android by usingMediaMetadataRetrieverto extract location data from video files. - Fix nullability mismatch for
titleparameter insaveVideoandsaveImageWithPathmethods.
-
3.7.122 May 2025Release notes
Open source → -
3.7.021 May 2025Release notes
Open source →What's Changed
Features
- Add
includeHiddenAssetsoption toPMFilterandFilterOptionGroupto include hidden assets in the results on iOS.
Fixes
- Fix
SizeConstraintnot working for videos on Android. (#1275) - Fix inconsistent resizing behavior between iOS and Android in
thumbnailDataWithSize. (#1271)
Improvements
- No longer set
sourceCompatibilityandtargetCompatibilityfor Android dynamically. - Make native library's version parsed from the yaml.
New Contributors
- @benmccann made their first contribution in #1277
Full Changelog: v3.6.4...v3.7.0
Release notes
Open source →Features
- Add
includeHiddenAssetsoption toPMFilterandFilterOptionGroupto include hidden assets in the results on iOS.
Fixes
- Fix
SizeConstraintnot working for videos on Android. (#1275) - Fix inconsistent resizing behavior between iOS and Android in
thumbnailDataWithSize. (#1271)
Improvements
- No longer set
sourceCompatibilityandtargetCompatibilityfor Android dynamically. - Make native library's version parsed from the yaml.
- Add
-
3.6.429 Jan 2025Release notes
Open source →Fixes
- Fix potential nil class value when unwrapping caught exceptions on Darwin.
-
3.6.321 Nov 2024Release notes
Open source →Improvements
- Optimize task priority handling on Darwin by automatically assigning QoS levels based on method types.
- Optimize the default sort descriptors on Darwin.
Fixes
- Fix the incorrect type of conversion with the Live-Photo's duration on Darwin.
-
3.6.210 Nov 2024 -
3.6.101 Nov 2024Release notes
Open source →Fixes
- Do not throw when querying non-existing assets in bulk on Android.
-
3.6.030 Oct 2024Release notes
Open source →Features
- Allows to get the duration of a Live Photo with
AssetEntity.durationWithOptionson iOS and macOS.
Improvements
- Improves the options when fetching a fixed number of assets on iOS and macOS.
Fixes
- Do not use
privateFileURLon iOS 18+. - Fixes saving MP4 videos will result in 3GP on Android API 30-.
- Fixes nullable results returned when saving images and videos on Android.
- Allows to get the duration of a Live Photo with
-
3.5.222 Oct 2024Release notes
Open source →Improvements
- Get rid of
@try@catchwhen toggling favorite on Darwin.
Fixes
- Fix no returned IDs after successful deletion on Android API 29+.
- Fix mediaLocation = true does not work on Android API 34.
- Get rid of
-
3.5.114 Oct 2024Release notes
Open source →Improvements
- Reuse files when saving images on Darwin.
- Returns non-nullable results as much as possible.
- Fix export session file type with videos for the first time on Darwin.
-
3.5.026 Sep 2024Release notes
Open source →Features
- Provide
PMDarwinAVFileTypeto help convert entities' files on iOS and macOS by making explicit exports.
Improvements
- Improve cache output path equality on iOS and macOS.
- Get the current resource filename rather than the raw one on iOS and macOS. Also the plugin expands the ability when getting titles.
- Use
PHCachingImageManagerto improve image memory caches on iOS and macOS.
Fixes
- Fix incorrect download finished prediction during iCloud file downloading.
- Provide
-
3.4.022 Sep 2024Release notes
Open source →Breaking Changes
saveLivePhotonow requirestitlerather thanfilename.Features
- Add
getPermissionStatemethod toPhotoManager.
Improvements
- Adds a detached state for managers. Callers with those managers will first be aware of the detaching state before any actual calls to avoid crashes.
- Errors replied by the channel do not include detailed messages before. Now the code will unwrap certain exceptions to extract details from them.
- Expose
progressHandlerforAssetEntity.getMediaUrl. - Expose
withSubtypeforAssetEntity.isLocallyAvailableto request if a Live Photo resource is available.
Fixes
PHAssetResourcewith the typePHAssetResourceTypeFullSizeVideodoes not count as a video type before, making the resource obtain ignore them.- Fixes potential range exception when converting
NSTimeIntervalon Darwin. - Fixes progress not being updated when getting the non-original video file on iOS.
- Fixes incorrect Live Photo resource being obtained which will result in a wrong aspect ratio.
- Fixes Live Photos saving exceptions with the paired video.
- Other lints and type promotion fixes.
- Add
-
3.3.001 Sep 2024Release notes
Open source →Breaking Changes
saveImagenow requiresfilenamerather thantitle, other save methods do not requiretitleanymore.Improvements
- Allows saving assets with a given orientation value.
- Improves the reading sequence when saving assets, which likely fixes issues with wrong orientation value.
- Reads image size from EXIF rather than decoding from the bitmap factory.
- Upgrades Android EXIF library.
- Add verbose log for
MethodChannelPlugin. (UsePhotoManager.setLogand passverboseFilePathto enable it.) - Add
getVerboseFilePathforPhotoManager.
-
3.2.307 Aug 2024Release notes
Open source →Fixes
- Access
PMProgressHandlermore safely on iOS/macOS to avoid crashes and unfinished results.
- Access
-
3.2.219 Jul 2024Release notes
Open source →Fixes
- Do not require
WRITE_EXTERNAL_STORAGEif not declared in the manifest with Android 29-. - Fix
fetchPathPropertiesexception on Android of API 28.
- Do not require
-
3.2.112 Jul 2024Release notes
Open source →Improvements
- Declare
NSPrivacyAccessedAPICategoryFileTimestampfor iOS privacy policies.
Fixes
- Fixes compile exceptions with Xcode versions that are not compatible with iOS 17.0.
- Modified the way to read the Java version in
build.gradle.
- Declare
-
3.2.015 Jun 2024Release notes
Open source →Improvements
- Restores
containsLivePhotostotrueby default and deprecates it. - Use the main resource's filename for the title by default on iOS.
- Support more methods on the OpenHarmony.
Fixes
- Fix obtaining the correct resource from various types of resources on iOS.
- Fix
isLocallyAvailablefor edited assets on iOS.
- Restores
-
3.1.113 May 2024 -
3.1.030 Apr 2024Release notes
Open source →Breaking Changes
AssetPathEntity.darwinTypeandAssetPathEntity.darwinSubtypeare deprecated.containsLivePhotosnow defaults tofalse.
See the [Migration Guide][] for details of breaking changes.
Features
- Support OpenHarmony.
Fixes
- Do not predicate subtype images as adjusted on Darwin.
- Fix
PMProgressHandlernot getting notified when failed on Darwin. - Merge Android API 29 and 30
PermissionDelegates which allows Android API 29 to grant permissions withoutWRITE_EXTERNAL_STORAGE.
Improvements
- Improve code formatting.
- Add privacy file for iOS/macOS. (#1120)
-
3.0.027 Feb 2024Release notes
Open source →Breaking Changes
See the [Migration Guide][] for details of breaking changes.
Improvements
- Remove the restriction of
getMediaUrl.
Fixes
- Fix
PhotoManager.editor.deleteWithIdsmethod not working on Android API 29. - Dispatch channel calls in main thread on Darwin.
- Fix
presentLimitdid not finish on Android. (#1052) - Fix
requestPermissionExtendreturns the incorrect status on Android API 34.
- Remove the restriction of
-
3.0.0-dev.512 Dec 2023 pre-releaseNothing published for this version
-
3.0.0-dev.401 Dec 2023 pre-releaseNothing published for this version
-
3.0.0-dev.329 Nov 2023 pre-releaseNothing published for this version
-
3.0.0-dev.217 Nov 2023 pre-releaseNothing published for this version
-
3.0.0-dev.113 Nov 2023 pre-releaseNothing published for this version
-
2.8.201 Apr 2024Nothing published for this version
-
2.8.113 Nov 2023Release notes
Open source →Fixes
- Upgrade android/build.gradle to load the current java version from some environment variables.
- Fix the
setIgnorePermissionCheckmethod not working on Android.
-
2.8.008 Nov 2023Release notes
Open source →Breaking Changes
See the [Migration Guide][] for details of breaking changes.
Features
- Support Android 14 with limited access to assets.
Fixes
- Correct the key when fetching video info with MMR on Android. (#997)
- Retrieve original media instead of one with adjustments/filters for subtype files on iOS. (#976)
- Returns original file name instead of
FullSizeRender.*if this has adjustments on iOS. (#976)
Improvements
- Add locks to the image provider.
-
2.7.210 Oct 2023Nothing published for this version
-
2.7.107 Aug 2023Release notes
Open source →Fixes
- Fix namespace on Android.
- Remove the package definition from the manifest.
- Use
math.pow(2^63)-1to make Web compile work again. - Fix the
endargument ofPhotoManager.getAssetListRangeis being handled incorrectly on Darwin. (#962)
-
2.7.025 Jul 2023Release notes
Open source →Features
- Support
darwinTypeanddarwinSubTypeinAssetPathEntityon iOS and macOS. (#950)
Improvements
- Roll dependencies on Android. (#933)
Fixes
- Fix filter option group. (#919)
- Fix
originFileWithSubtypeandfileWithSubtypefor livePhoto. - Fix: support only add permission for iOS/macOS. (#944)
- Fix: modified the output path for iOS(add id in next path).
- Fix: Fixed a possible problem with the permission for darwin.
- Fix:
needTitleforCustomFilter.
- Support
-
2.6.023 Mar 2023Release notes
Open source →Features
- Support
CustomFilterfor more filter options. (#901) - Add two new static methods for
PhotoManager:getAssetCountfor getting assets count.getAssetListRangefor getting assets between start and end.
- Support
-
2.5.219 Dec 2022Release notes
Open source →Improvements
- Reply errors when thumbnails are failed to load on Android. (#883)
-
2.5.127 Nov 2022 withdrawnRelease notes
Open source →Improvements
- Always declare
READ_EXTERNAL_STORAGEpermission on Android. (#874) - Upgrade Glide and Kotlin libraries version. (#872)
- Avoid using file-based saving methods on Android. (#871)
- Use
ContentUrisfor retrieving Media URIs on Android. (#870) - Improve media subtype on iOS. (#863)
- Always declare
-
2.5.1+127 Nov 2022 -
2.5.004 Nov 2022Release notes
Open source →Features
- Support saving Live Photos on iOS and macOS. (#851)
- Introduce
DarwinEditorto replaceIosEditor. (#855)
-
2.4.119 Oct 2022Release notes
Open source →Improvements
- Use last modified date for Glide caches key on Android. (#848)
-
2.4.010 Oct 2022Release notes
Open source →Features
- Support both legacy and scoped storage on Android. (#833)
Fixes
- Avoid duplicate
copyItemAtURLfor videos on iOS. (#840) - Correct permission checks with
requestPermissionExtendon Android 13. (#843)
-
2.4.0-dev.307 Oct 2022 pre-releaseNothing published for this version
-
2.4.0-dev.121 Sep 2022 pre-releaseNothing published for this version
-
2.3.019 Sep 2022Release notes
Open source →Features
- Support Android 13 (API 33) permissions.
Improvements
- Adapt Flutter 3.3. (#820)
- Retrieve metadata for videos when empty on Android. (#819)
Fixes
- Fix saving videos with path on Android 29-. (#829)
-
2.3.0-dev.230 Aug 2022 pre-releaseNothing published for this version
-
2.3.0-dev.123 Aug 2022 pre-releaseNothing published for this version
-
2.2.119 Aug 2022 -
2.2.013 Aug 2022Release notes
Open source →Breaking Changes
- Introduce
AssetPathEntity.assetCountAsyncgetter, which improves the speed when loading paths mainly on iOS, also:- Deprecate
AssetPathEntity.assetCount. - Remove
FilterOptionGroup.containsEmptyAlbum.
- Deprecate
Improvements
- Improve assets change notify with better methods signature and checks. (#790)
- Add
PermissionState.hasAccessgetter for better condition judgement. (#792) - Remove unnecessary assets fetch in
getMediaUrlon iOS. (#793) - Improve
AssetEntity.obtainForNewPropertieson iOS. (#794) - Improve
MD5Utilson iOS. (#802) - Improve cache container mutations on iOS. (#803)
- Improve assets count assignments. (#804)
- Improve cursors conversion on Android. (#806)
Fixes
- Purpose video creation correctly on iOS. (#791)
- Mark assets as favorite on iOS. (#794)
- Fix not replied method calls (#800).
- Fix invalid
RELATIVE_PATHobtains with cursors on Android Q-. (#810)
- Introduce
-
2.2.0-dev.504 Aug 2022 pre-releaseNothing published for this version
-
2.2.0-dev.420 Jul 2022 pre-releaseNothing published for this version
-
2.2.0-dev.314 Jul 2022 pre-releaseNothing published for this version
-
2.2.0-dev.207 Jul 2022 pre-releaseNothing published for this version
-
2.2.0-dev.128 Jun 2022 pre-releaseNothing published for this version
-
2.1.422 Jun 2022Release notes
Open source →Improvements
- [iOS] Check
canPerformEditOperationbefore performing change requests. (#782)
Fixes
- [Android] Fix
orientationmissing during conversions. (#783)
- [iOS] Check
-
2.1.320 Jun 2022Release notes
Open source →Improvements
- Expose
PhotoManager.plugin. (#778)
Fixes
- Fix
forceOldApinot well-called. (#778) - Fix invalid type cast with
AssetEntity.exists. (#777)
- Expose
-
2.1.230 May 2022Release notes
Open source →Improvements
- Correct
PermissionRequestOptiontypo with a class type alias. Which also raised the Dart SDK constraint to2.13.0. - Catch throwables when reading EXIF.
- Improve Live-Photos filtering.
- Correct