photo_manager 3.6.0 photo_manager: ^3.6.0 copied to clipboard
A Flutter plugin that provides album assets abstraction management APIs on Android, iOS, macOS, and OpenHarmony.
CHANGELOG #
To know more about breaking changes, see the Migration Guide.
Unreleased #
None.
3.6.0 #
Features #
- Allows to get the duration of a Live Photo with
AssetEntity.durationWithOptions
on iOS and macOS.
Improvements #
- Improves the options when fetching fixed number of assets on iOS and macOS.
Fixes #
- Do not use
privateFileURL
on iOS 18+. - Fixes saving MP4 videos will result in 3GP on Android API 30-.
- Fixes nullable result returned when saving images and videos on Android.
3.5.2 #
3.5.1 #
Improvements #
- Reuse files when saving images on Darwin.
- Returns non-nullable results as much as possible.
- Fix export session file type with videos at the first time on Darwin.
3.5.0 #
Features #
- Provide
PMDarwinAVFileType
to 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
PHCachingImageManager
to improve image memory caches on iOS and macOS.
Fixes #
- Fix incorrect download finished prediction during iCloud file downloading.
3.4.0 #
Breaking changes #
saveLivePhoto
now requires title
rather than filename
.
Features #
- Add
getPermissionState
method 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
progressHandler
forAssetEntity.getMediaUrl
. - Expose
withSubtype
forAssetEntity.isLocallyAvailable
to request if a Live Photo resource is available.
Fixes #
PHAssetResource
with the typePHAssetResourceTypeFullSizeVideo
does not count as a video type before, making the resource obtain ignore them.- Fixes potential range exception when converting
NSTimeInterval
on 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.
3.3.0 #
Breaking changes #
saveImage
now requires filename
rather than title
, other save methods do not require title
anymore.
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.
Developer #
- Add verbose log for
MethodChannelPlugin
. (UsePhotoManager.setLog
and passverboseFilePath
to enable it.) - Add
getVerboseFilePath
forPhotoManager
.
3.2.3 #
Fixes #
- Access
PMProgressHandler
more safely on iOS/macOS to avoid crashes and unfinished results.
3.2.2 #
Fixes #
- Do not require
WRITE_EXTERNAL_STORAGE
if not declared in the manifest with Android 29-. - Fix
fetchPathProperties
exception on android of API 28.
3.2.1 #
3.2.0 #
Improvements #
- Restores
containsLivePhotos
totrue
by default and deprecates it. - Use the main resource's filename for 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
isLocallyAvailable
for edited assets on iOS.
3.1.0 #
Breaking changes #
AssetPathEntity.darwinType
andAssetPathEntity.darwinSubtype
are deprecated.containsLivePhotos
now defaults tofalse
.
See the Migration Guide for details of breaking changes.
Features #
- Support OpenHarmony.
Fixes #
- Do not predicate subtypes images as adjusted on Darwin.
- Fix
PMProgressHandler
not getting notified when failed on Darwin. - Merge Android API 29 and 30
PermissionDelegate
s which allows Android API 29 to grant permissions withoutWRITE_EXTERNAL_STORAGE
.
Improvements #
- Improve code formatting.
- Add privacy file for iOS/macOS. (#1120)
3.0.0 #
Breaking changes #
See the Migration Guide for details of breaking changes.
Improvements #
- Remove the restriction of
getMediaUrl
.
Fixes #
- Fix
PhotoManager.editor.deleteWithIds
method not working on Android API 29. - Dispatch channel calls in main thread on Darwin.
- Fix
presentLimit
did not finish on Android. (#1052) - Fix
requestPermissionExtend
returns the incorrect status on Android API 34.
2.8.1 #
Fixes #
- Upgrade android/build.gradle to load current java version from some environment variables.
- Fix the
setIgnorePermissionCheck
method not working on Android.
2.8.0 #
Breaking changes #
See the Migration Guide for details of breaking changes.
Features #
- Support Android 14 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.1 #
Fixes #
- Fix namespace on Android.
- Remove the package definition from the manifest.
- Use
math.pow(2^63)-1
to make Web compile work again. - Fix the
end
argument ofPhotoManager.getAssetListRange
is being handled incorrectly on Darwin. (#962)
2.7.0 #
Features #
- Support
darwinType
anddarwinSubType
inAssetPathEntity
on iOS and macOS. (#950)
Improvements #
- Roll dependencies on Android. (#933)
Fixes #
- Fix filter option group. (#919)
- Fix
originFileWithSubtype
andfileWithSubtype
for 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:
needTitle
forCustomFilter
.
2.6.0 #
Features #
- Support
CustomFilter
for more filter options. (#901) - Add two new static methods for
PhotoManager
:getAssetCount
for getting assets count.getAssetListRange
for getting assets between start and end.
2.5.1 #
Improvements #
- Always declare
READ_EXTERNAL_STORAGE
permission on Android. (#874) - Upgrade Glide and Kotlin libraries version. (#872)
- Avoid using file-based saving methods on Android. (#871)
- Use
ContentUris
for retrieving Media URIs on Android. (#870) - Improve media subtype on iOS. (#863)
2.5.0 #
Features #
- Support saving Live Photos on iOS and macOS. (#851)
- Introduce
DarwinEditor
to replaceIosEditor
. (#855)
2.4.0 #
2.3.0 #
2.2.0 #
Breaking changes #
- Introduce
AssetPathEntity.assetCountAsync
getter, 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.hasAccess
getter for better condition judgement. (#792) - Remove unnecessary assets fetch in
getMediaUrl
on iOS. (#793) - Improve
AssetEntity.obtainForNewProperties
on iOS. (#794) - Improve
MD5Utils
on 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_PATH
obtains with cursors on Android Q-. (#810)
2.1.4 #
2.1.3 #
2.1.2 #
Improvements #
- Correct
PermissionRequestOption
typo with a class type alias. Which also raised the Dart SDK constraint to2.13.0
. - Catch throwables when reading EXIF.
- Improve Live-Photos filtering.
2.1.1 #
2.0.9 #
Improvements #
- (Not working) Ignore the null-aware operator for
PaintingBinding
's instance in order to solve the coming lint issues with Flutter 2.13, and keeps the compatibility of previous Flutter versions. - Fix dart docs generate issues.
2.0.3 #
Improvements #
- Improve
getMediaUrl
on iOS. - Read orientation when saving images on Android. (#730)
- Improve generic type casts on Android. (#732)
2.0.1 #
2.0.0 #
A major version release for performance improvements, new features, issues fixed, and breaking changes. Also, the LICENSE has been updated with the new author FlutterCandies.
Breaking changes #
See the Migration Guide for details of breaking changes.
Features #
- Add
mimeTypeAsync
. (#717) - Add
ThumbnailSize
. (#709) - Add
DurationConstraint.allowNullable
. (#681) - Introduce
AssetEntityImageProvider
. (#669, #709) - Support "Live Photos" with obtaining and filtering. (#667, #670, #673, #719)
- Support to obtain the first frame for the video thumbnail on Android. (#658)
- Allow plugin to be mocked/overridden with tests. (#703)
Improvements #
- Improve path modified injection and asset count fetching. (#712)
- Make all entities immutable. (#708)
- Improve the performance when using the
file
getter on iOS. (#705) - Force legacy storage on Android Q. (#701)
- Enhance request types filtering.
- Compile for API 31 on Android.
- Throw when obtaining media URL that asset is not locally available on iOS.
- Retrieve width/height from ExifInterface for fallback on Android. (#686)
- Request
WRITE_EXTERNAL_STORAGE
only when needed. (#675) - Provided a single-page example. (#672)
- Improve the default sort order on all platforms. (#659)
- Add equality comparison for various classes. (#657)
- Run Glide on the current thread on Android. (#656)
- Improve thread pool on Android. (#637)
- Improved all documents and code formats. (#626, #660, #664, #671)
- Reorganized all internal structures.
- Rename org to
com.fluttercandies
. (#624) ImageScanner
->PhotoManager
. (#611)
Fixes #
- Fix
Activity
leaks when detached on Android. (#716) - Fix potential NPE when moving assets on Android.
- Fix edited images/videos are not returned correctly on iOS. (#622, #636)
- Fix
title
argument causes saving methods failed. (#619, #635) - Fix
PhotoManager.editor.copyAssetToPath
returnsnull
. (#619) - Fix sort order issues on iOS/macOS. (#603, #655)
1.3.10 #
Improvements #
- Allow all kinds of
PHAssetCollection
which should expand the support for shared albums. (#641)
1.3.1 #
Fixes #
fetchPathProperties
returned wrongisAll
on iOS. (#580)updateTimeCond
not constructed correctly withFilterOptionGroup
.
1.3.0 #
1.2.7 #
1.2.4 #
Fixes #
saveImage
method missing file extension for the fallback title.openSettings
method.
1.2.3 #
1.2.0 #
1.1.6 #
- The
MEDIA_LOCATION
permission of android can be removed through configuration.
1.1.5 #
- Revert #478 .
- Fix thumbnail size of the entity on iOS/macOS.
1.1.4 #
- Merged #478 .
1.1.3 #
- Merged the code of macOS and ios.
1.1.2 #
- Updated the code in the macOS part.
1.1.0 #
1.0.6 #
- Add relative path when saving files to the MediaStore on Android 29+ (#462)
- Fix deleteWithIds typecast issue with Android 29- (#460)
1.0.4 #
- Add mime type for android.
1.0.3 #
- Fix serious code usage issue in convert utils.
1.0.2 #
- Improve the constructor for
AssetEntity
.
1.0.1 #
- Fix orientation bug.
0.6.0 #
Breaking changes #
- Support multiple sorting conditions, and the
asc
ofDateTimeCond
is removed.
Features #
- Support android API 30.
- Support show empty album in iOS (#365).
- User can ignore check permission(User can choose favorite permission plugin, but at the same time user have to bear the risks corresponding to the permission).
- Support clean file cache.
- Experimental
- Preload image (Use
PhotoCachingManager
api.)
- Preload image (Use
- Add
OrderOption
as sort condition. The option default value is order by create date desc; - Support icloud asset progress.
Fixes #
- #362
- Delete assets in androidQ.
- Edited image data in iOS.
- Fix delete error in androidR.
0.5.6 #
- Fix save image with path for android.
0.5.5+1 #
- Remove verbose log.
0.5.5 #
- Add
merge
forFilterOptionGroup
andFilterOption
.
0.5.4 #
- Add
copyWith
forFilterOption
.
0.5.3+1 #
- Support android v2 model.
0.5.2 #
- Support macOS.
- From the version, Starting from this version, 1.9 or earlier versions are not supported.
0.5.1 #
Features #
- Save image asset with file path.
- Copy asset to another album.
- Create AssetEntity with id.
- Create AssetPathEntity from id.
- Only iOS
- Create folder or album.
- Remove assets in album.
- Delete folder or album.
- Favorite asset.
- Only android
- move asset to another path.
- Remove all non-existing rows.
- add
relativePath
for android.
Improvements #
- Modified
AssetEntity.file
's behavior on iOS, it will return a picture in jpg format instead of heic/gif/png currently. Now more in line with the description in the doc, this is suitable for uploading images (theoretically, no Exif information will be included). - Update android change media url from file scheme to content scheme.
- Clean up some unused code.
Fixes #
- Problem of AssetPathEntity.refreshPathProperties.
- Open setting in iOS.
- Edited asset in iOS.
- Audio properties of FilterOption.
- Android onlyAll assetCount bug.
0.5.0 #
Breaking changes #
- Add date condition to filter datetime
- Add class
DateTimeCond
- Add
dateTimeCond
toFilterOptionGroup
- Remove
fetchDateTime
fromgetAssetPathList
- Remove param
dt
fromAssetPathEntity.refreshPathProperties
, and addrefreshPathProperties
params to the method. - Split video filter and image filter.
Features #
- Add
getSubPathEntities
forAssetPathEntity
. - Add
quality
forAssetEntity.thumbDataWithSize
. - Add
orientation
forAssetEntity
. - Add
onlyAll
forgetAssetPathList
. - Support audio type(Only android, iOS Photos have no audio)
Improvements #
- iOS code is running background thread.
- getThumb is running in background thread.
Fixes #
- exists error on android.
- use edited origin file on iOS.
- galleryName maybe is null in android.
- thumb of android 10.
0.4.6 #
0.4.4 #
Fixes #
- Compatibility code, when the width and height of the video is empty, it can still be scanned.
- Add a default value to
type
ofgetAssetPathList
.
0.4.3 #
0.4.2 #
- Fix ios get full file size error.
0.4.1 #
- Fix ios build error.
0.4.0 #
Breaking changes #
- Some properties in the entity were modified from asynchronous to synchronous.
- Remove
isCache
params. Now,getAssetPathList
will reload info everytime. If user want to cacheList<AssetPathEntity>
, then user must do it manually.
Features #
- Added a method
getAssetListPaged
for paging loading resources to path. The paging implementation is lazy loading, that is, the resource corresponding information is loaded when requested. The entity corresponding to the path is no longer placed in the memory, but is implemented by PHPhoto (ios) and sqlite's limit offset (android). - Support AndroidQ privacy.
0.3.5 #
- Fix iCloud image problem.
0.3.4 #
- Support flutter 1.6.0 android's thread changes for channel.
0.3.3 #
- Fix customizing album containing folders on iOS.
0.3.2 #
AssetEntity
add property:originFile
.
0.3.1 #
AssetEntity
add property:exists
.
0.3.0 #
Breaking changes #
- Support Android X. 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.
Features #
- Add a method to create
AssetEntity
with id. - Add
isCache
for methodgetImageAsset
,getVideoAsset
orgetAssetPathList
. - Add observer for photo change.
- Add field
createTime
forAssetEntity
.
Fixes #
- Fix NPE for image crash on android.
0.2.1 #
- Add
getVideoAsset
andgetImageAsset
to load video / image.
0.2.0 #
- Add asset size field.
- Add cache release method.
0.1.10 #
- Fix when number of photo/video is 0, will crash.
0.1.9 #
- Add video duration.
0.1.8 #
- Sort asset by date.
0.1.7 #
- Fix Android's latest picture won't be found.
- Update gradle wrapper version.
- Update kotlin version.
0.1.6 #
- Fix Android to get pictures that are empty bug.
0.1.5 #
- Support ios icloud image and video.
0.1.4 #
- Update all path
hasVideo
property.
0.1.3 #
- Add a params to help user disable get video.
0.1.2 #
- iOS get video file is async.
0.1.1 #
- Fix 'ios video full file is a jpg' problem.
0.1.0 #
- Support video in android.
- Change API from ImageXXXX to AssetXXXX.
0.0.3 #
- Update for the issue #1. (NPE when request other permission on android)
0.0.2 #
- Update README.
0.0.1 #
First version.
- API for photo.