meta_photo_picker 0.0.4
meta_photo_picker: ^0.0.4 copied to clipboard
A privacy-first Flutter plugin for picking image files with detailed metadata. Uses native file pickers with image filtering on both iOS and Android (no permissions required).
0.0.4 #
- Major Architecture Change:
- Android: Replaced
wechat_assets_pickerwith native file picker (ACTION_PICK intent) - No permissions required: Both iOS and Android now use privacy-preserving file pickers
- Removed dependencies: Eliminated
wechat_assets_picker,photo_manager,permission_handler, anddevice_info_plus - Simplified API: Removed
BuildContextrequirement frompickPhotos()andpickSinglePhoto()
- Android: Replaced
- Android Implementation:
- Native file picker using
ACTION_PICKintent withimage/*MIME type filtering - Full EXIF metadata extraction (dimensions, orientation, creation date, file type)
- Intelligent filename resolution from MediaStore (handles numeric filenames from Google Photos)
- Custom destination directory support with automatic duplicate handling
- No storage permissions required - privacy-first approach
- Native file picker using
- Breaking Changes:
- Removed:
checkPhotoAccessStatus(),requestPermission(),isPermissionGranted()methods - Removed:
PhotoAccessStatusenum - Removed:
contextparameter frompickPhotos()andpickSinglePhoto() - Removed:
PermissionStatusexport - Android: No longer requires storage permissions in AndroidManifest.xml
- Removed:
- API Simplification:
pickPhotos()now works withoutBuildContexton both platformspickSinglePhoto()now works withoutBuildContexton both platforms- Cleaner, more consistent API across iOS and Android
- Dependencies:
- Added
androidx.exifinterface:exifinterface:1.3.7to Android build.gradle - Removed 4 Flutter dependencies, reducing package size and complexity
- Added
- Documentation:
- Complete README rewrite reflecting native file picker implementation
- Removed all permission-related documentation and examples
- Updated all code examples to remove
contextparameter - Updated platform comparison tables
- Simplified setup instructions (no permissions needed)
0.0.3 #
- Performance Improvements:
- iOS optimization: Photos now saved to disk with file paths instead of loading all bytes into memory
- Memory efficiency: Added
filePathfield toPhotoInfofor better memory management - EXIF metadata extraction: iOS now extracts actual creation dates from EXIF/TIFF metadata without requiring photo library permission
- Improved file handling: Optimized image processing pipeline on iOS for faster performance
- New Features:
- Load callbacks: Added
onLoadStartedandonLoadEndedcallbacks topickPhotos()andpickSinglePhoto()for showing loading indicators - Custom destination directory: Added
destinationDirectoryparameter toPickerConfigto save photos to a specific location - Automatic duplicate handling: Files with duplicate names are automatically renamed (e.g., "Image (1).jpg")
- File path support:
imageDatais now optional - prefer usingfilePathfor better memory usage
- Load callbacks: Added
- Breaking Changes:
PhotoInfo.imageDatais now nullable (Uint8List?) - checkfilePathfirst for optimal performance- Always prefer
Image.file(File(photo.filePath!))overImage.memory(photo.imageData!)
- Documentation Updates:
- Comprehensive README update reflecting all new features and improvements
- Added examples for load callbacks and custom destination directory
- Updated all code examples to use file paths instead of image data
- Updated platform comparison tables to reflect all new features
- Added FAQ entries for new features and best practices
0.0.2 #
- Performance Improvements:
- iOS optimization: Photos now saved to disk with file paths instead of loading all bytes into memory
- Memory efficiency: Added
filePathfield toPhotoInfofor better memory management - EXIF metadata extraction: iOS now extracts actual creation dates from EXIF/TIFF metadata without requiring photo library permission
- Improved file handling: Optimized image processing pipeline on iOS for faster performance
- New Features:
- Load callbacks: Added
onLoadStartedandonLoadEndedcallbacks topickPhotos()andpickSinglePhoto()for showing loading indicators - Custom destination directory: Added
destinationDirectoryparameter toPickerConfigto save photos to a specific location - Automatic duplicate handling: Files with duplicate names are automatically renamed (e.g., "Image (1).jpg")
- File path support:
imageDatais now optional - prefer usingfilePathfor better memory usage
- Load callbacks: Added
- Breaking Changes:
PhotoInfo.imageDatais now nullable (Uint8List?) - checkfilePathfirst for optimal performance- Always prefer
Image.file(File(photo.filePath!))overImage.memory(photo.imageData!)
- Bug Fixes:
- Fixed Android picker showing "1/9999" count on confirm button - now shows reasonable default of 150 for unlimited selection
- Disabled intrusive limited permission warning dialog on Android - picker now works smoothly without showing system warning overlay
- Android Permission Improvements:
- Improved permission state handling for Android 14+ (API 34+)
- Fixed
checkPhotoAccessStatus()to usePermission.photos.statusfor more reliable state checking - Added
limitedPermissionOverlayPredicateto prevent unwanted permission dialogs during photo selection
- Documentation Updates:
- Comprehensive README update reflecting all new features and improvements
- Added examples for load callbacks and custom destination directory
- Updated all code examples to use file paths instead of image data
- Added comprehensive documentation for Android limited permission behavior
- Documented Android permission state caching and app restart requirement
- Updated platform comparison tables to reflect all new features
- Added FAQ entries for new features and best practices
- Added troubleshooting section for permission status not updating
- Included code examples for handling limited permission scenarios
0.0.1 #
- Initial release of meta_photo_picker
- iOS implementation using PHPicker (iOS 14+)
- Privacy-preserving - no permission required
- Shows all photos to user regardless of permission status
- Native system picker UI
- Android implementation using wechat_assets_picker (API 21+)
- Automatic permission handling
- Version-aware permission requests (READ_MEDIA_IMAGES for Android 13+)
- Direct selection without preview
- Cross-platform features:
- Pick single or multiple images from photo library
- Comprehensive photo metadata including:
- File name, size (bytes and formatted), and type
- Image dimensions (width, height) and aspect ratio
- Creation date (ISO 8601 format)
- Asset identifier
- Image orientation and scale
- Raw image data (Uint8List)
- Configurable picker options:
- Selection limit (single, multiple, unlimited)
- Media type filters (images, videos, live photos)
- Asset representation modes (iOS)
- JPEG compression quality (default: no compression)
- Permission status checking (checkPhotoAccessStatus, requestPermission, isPermissionGranted)
- Type-safe Dart models (PhotoInfo, PickerConfig, PhotoDimensions, ImageOrientation)
- Complete example app with modern Material Design UI
- Comprehensive documentation and README
- Full test coverage