adaptive_media_picker
Adaptive Flutter media picker for images & videos with smart permissions, limited access UI, and cross-platform support (Android, iOS, Web, Desktop).
What this package is like to depend on
Last release 3 days ago
20 Aug 2026
Release timing varies
gaps range from 2 weeks to 9 months
Nearly every release is documented
notes for 15 of 15 stable releases
Nothing withdrawn
no release was ever pulled
11 months old
15 releases · first in 2025
15 releases in the last 12 months
see the full history below
Release timeline
15 releases · Sep 2025 to Aug 2026Releases
latest 15-
1.1.120 Aug 2026Release notes
Open source →Bug fix.
- Fixed several
try/catchblocks inadaptive_media_picker_impl.dartandimage_cropper_impl.dartthat returned aFuturewithoutawait, which meant thecatchcouldn't actually catch errors thrown by that future — they'd propagate as unhandledFuturerejections instead.
- Fixed several
-
1.1.018 Aug 2026Release notes
Open source →Configurable default crop aspect ratio.
- Added
PickOptions.cropAspectRatio(CropAspectRatioOption?) to set the ratio the cropper opens with (square,ratio3x2,ratio4x3,ratio5x4,ratio7x5,ratio16x9, ororiginal). Defaults tonull, which preserves the previous behavior (square initial ratio on Android, free-form on iOS/Web). - Added
PickOptions.lockCropAspectRatioto lock the crop box tocropAspectRatioon Android/iOS (no effect on Web — theimage_cropperweb backend can't lock the ratio, only hint at an initial one). - Non-breaking: both fields are optional and additive.
- Added
-
1.0.217 Aug 2026Release notes
Open source →WASM compatibility fix.
- Removed
photo_managerimports from web/WASM-reachable code (limited_access_picker_stub.dartandadaptive_media_picker_impl.dart). The stub'sLimitedAccessPicker.shownow returnsFuture<List<dynamic>?>instead of namingAssetEntity, which transitively pulleddart:iointo web builds and made pub.dev flag the package as not WASM-compatible. The native (dart:io) implementation is unchanged and still returnsList<AssetEntity>.
- Removed
-
1.0.117 Aug 2026Release notes
Open source →SDK constraint fix.
- Environment
- Raised minimum SDKs to Dart 3.10 / Flutter 3.38.1 — required by
image_picker1.2.3 anddevice_info_plus13. The previous constraints (Dart 3.4 / Flutter 3.13) could not actually resolve the 1.0.0 dependencies.
- Raised minimum SDKs to Dart 3.10 / Flutter 3.38.1 — required by
- CI
- Bumped the CI Flutter version to 3.44.9 (matching the
.fvmrcpin) so dependency resolution succeeds on CI
- Bumped the CI Flutter version to 3.44.9 (matching the
- Environment
-
1.0.017 Aug 2026Release notes
Open source →First stable release: dependency upgrades, accurate permission states, and WASM compatibility.
- Dependencies
- Updated
smart_permissionfrom^0.0.3to^1.0.1 - Updated
image_cropperfrom^11.0.0to^12.2.1 - Updated
device_info_plusfrom^12.2.0to^13.2.0 - Updated
photo_managerfrom^3.7.1to^3.12.0 - Updated
image_pickerfrom^1.2.1to^1.2.3 - Android apps must now build with
compileSdk = 37(required bypermission_handler13 viasmart_permission); see README
- Updated
- Permission handling
- Migrated to
smart_permission's result API: limited access and permanently-denied states are now reported accurately by the OS instead of being inferred from the device's photo library contents. Full-access users now get the native picker instead of the in-package limited-access sheet. PermissionResolution.permanentlyDeniedis now populated correctly- The "Open Settings" flow (dialog, opening Settings, waiting for return,
re-checking) is handled by
smart_permission; the package no longer shows its own duplicate settings dialog.PickOptions.settingsDialogTitle,settingsDialogMessage,settingsButtonLabel, andcancelButtonLabelare forwarded to those dialogs. - Deprecated
PickOptions.showOpenSettingsDialog(no longer read) - Android 13+: video picks now request only
READ_MEDIA_VIDEO(previously also prompted for images)
- Migrated to
- Results
- Added
PickError.permissionDenied; permission failures no longer surface asPickError.unknown PickResultMultiplenow exposeserror(parity withPickResultSingle)- Fixed: crop cancellation on non-web platforms now sets
PickError.cropCanceled(previously alwaysnull)
- Added
- Web
- Conditional imports now use
dart.library.js_interopinstead ofdart.library.htmlfor WebAssembly (WASM) compatibility
- Conditional imports now use
- Dependencies
-
0.0.1014 Nov 2025Release notes
Open source →Permission handling migration and dependency updates.
- Breaking Changes
- Replaced
permission_handlerwithsmart_permissionpackage PermissionManager.ensureMediaPermissionnow requiresBuildContext?parameter
- Replaced
- Dependencies
- Updated
device_info_plusfrom^12.1.0to^12.2.0 - Updated
image_pickerfrom^1.2.0to^1.2.1 - Replaced
permission_handler: ^12.0.1withsmart_permission: ^0.0.3
- Updated
- Permission Manager
- Migrated to
smart_permissionAPI for better permission handling UX - Added context-aware permission requests with proper mounted checks
- Improved Android granular media permissions handling (API 33+)
- Enhanced iOS Photos permission flow with limited access detection
- Migrated to
- Documentation
- Added iOS Podfile configuration section with permission setup instructions
- Updated README with Podfile
post_installconfiguration for Camera, Microphone, and Photos permissions
- Breaking Changes
-
0.0.913 Oct 2025Release notes
Open source →Dart formatting only (no functional changes).
- Formatting
- Ran
dart formatwith default settings acrosslib/,example/, andtest/ - Ensures pana/pub.dev formatter compliance
- Ran
- Formatting
-
0.0.813 Oct 2025Release notes
Open source →Web image cropper bug fixes and improvements.
- Web Image Cropper
- Fixed "Type 'Brightness' not found" error
- Added input validation and better error handling
- Enhanced debugging with detailed logging
- Web Image Cropper
-
0.0.709 Oct 2025Release notes
Open source →Theming support and example toggle.
- Options
- Added
PickOptions.themeBrightnessandPickOptions.primaryColorto control UI theme for the limited-access sheet and cropper
- Added
- Limited-access UI
- Bottom sheet now uses app theme by default; can be overridden via
PickOptions
- Bottom sheet now uses app theme by default; can be overridden via
- Cropping (Android/iOS/Web)
- Android:
AndroidUiSettingscolors now derive from theme (toolbar, controls, dim layer, grid/frame) - Web: forwards theme context; respects app theme for dialog/page
- Android:
- Example
- Added light/dark theme switch and wired theme overrides into picker calls
- Docs
- README updated with theming section and usage
- Options
-
0.0.606 Oct 2025Release notes
Open source →Non-breaking DX improvements: typed errors and richer result metadata.
- Results
PickResultSinglenow exposesmetadata: PickMetadatawith:cropApplied,originalSize, andfinalSize(when measurable)
- Added
error: PickError?to disambiguate empty results:canceled(user canceled),cropCanceled,io,unknown
- Options
PickOptions.logTag(optional) for easier internal tracing in debug logs
- Behavior
- Populates
originalSizeandfinalSizefor single-image picks (incl. cropped) - Sets
PickError.canceledwhen selection dialogs return null/empty - Sets
PickError.cropCanceledwhen crop UI is dismissed without saving
- Populates
- Analyzer
- Guarded context across async gaps where size decoding/crop occurs
- Results
-
0.0.506 Oct 2025Release notes
Open source →Cropping feature finalized with platform guards, stubs, and docs updates:
- Feature: Optional cropping for single image picks (
PickOptions.wantToCrop)- Supported on Android, iOS, Web
- No-op on Desktop (macOS, Windows, Linux) — returns original image
- Limited access: Cropping now works when selecting from the limited-access picker (single image)
- Android: Ensure
UCropActivityis declared in app manifest (documented) - Web: Uses
image_cropper(cropperjs) with dialog style and fixed size; requires including CSS/JS inindex.html - Internals:
- Introduced
PlatformImageCropperwith conditional imports for mobile/web and a desktop stub - Removed direct
ImageCropperusage from the picker; unified call sites - Fixed analyzer issues: context guards (mounted checks), removed custom aspect ratio type
- Introduced
- Feature: Optional cropping for single image picks (
-
0.0.423 Sep 2025Release notes
Open source →Analyzer and formatting cleanups; no API changes:
- Lints
- Resolved "Dangling library doc comment" by adjusting comments in
lib/adaptive_media_picker.dart - Ensured analyzer passes with no issues on the library entrypoint
- Resolved "Dangling library doc comment" by adjusting comments in
- Formatting
- Ran
dart formatacross the repository (lib and example) for pub.dev checks
- Ran
- Tests
- Verified package and example tests pass under FVM
- Public API
- No functional or breaking changes
- Lints
-
0.0.323 Sep 2025Release notes
Open source →Docs and README polish; tests and formatting:
- Docs
- Added dartdoc across public API (picker, models, limited-access UI)
- Removed duplicated/ambiguous comments for clearer generated docs
- Public API
- Cleaned exports in
adaptive_media_picker.dart(no breaking changes)
- Cleaned exports in
- Tests & formatting
- Updated example test to use the public entrypoint
- Ran
dart formaton lib to satisfy pub.dev checks
- Internals
- Minor refactors and comments only; no runtime behavior changes
- Docs
-
0.0.222 Sep 2025Release notes
Open source →Refactor, clearer API, and docs/readiness improvements:
- New concrete result types returned directly:
PickResultSingle { item, permissionResolution }PickResultMultiple { items, permissionResolution }
- New public methods:
pickImage(single image),pickVideo(single video),pickMultiImage(multi images)
PickOptionssimplified:- Removed
allowMultipleandmediaType maxImagesnow applies only to images and is enforced cross-platform
- Removed
- Limited access bottom sheet UX:
- Closes by default after Manage/Open Settings when no items are visible
- Codebase reorg:
src/core/(models),src/platform/(permission manager),src/ui/(limited picker)
- Web compatibility: removed
dart:iofrom library code - README overhauled (quick start, use cases, API overview)
- Tests updated; FVM test run green
- New concrete result types returned directly:
-
0.0.118 Sep 2025Release notes
Open source →Initial release
- Adaptive media picker with unified API across platforms (Android, iOS, Web, Desktop).
- Permission handling via
permission_handler, including:- Android 13+ granular Photos/Videos permissions and limited access detection.
- iOS Photos limited/full access handling with settings prompt.
- Desktop: treated as granted; relies on system file dialogs.
- Limited access flow with built-in bottom-sheet picker powered by
photo_manager. - Image/video picking backed by
image_pickerwith desktop/web camera fallback to gallery. - Options for multi-select, max image count, and image quality/size hints.
- Re-exports
ImageSourcefor consumer convenience. - Example app demonstrating common flows and UI states.
- Test suite (package and example) and FVM compatibility.