diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f9e7b8b..77399c34 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,9 @@ To know more about breaking changes, see the [Migration Guide][]. ## Unreleased -*None.* +**Fixes** + +- 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. ## 3.8.3 diff --git a/android/src/main/kotlin/com/fluttercandies/photo_manager/core/PhotoManagerPlugin.kt b/android/src/main/kotlin/com/fluttercandies/photo_manager/core/PhotoManagerPlugin.kt index 0eee982e..3052fd80 100644 --- a/android/src/main/kotlin/com/fluttercandies/photo_manager/core/PhotoManagerPlugin.kt +++ b/android/src/main/kotlin/com/fluttercandies/photo_manager/core/PhotoManagerPlugin.kt @@ -54,6 +54,18 @@ class PhotoManagerPlugin( needPermissions: MutableList, ) { } + + override fun onLimitedSelectionChanged() { + // Send a notification to Flutter that the media library has changed + // so that any listeners can refresh their asset lists + notifyChannel.onOuterChange( + null, + "update", + null, + null, + 0 + ) + } } } diff --git a/android/src/main/kotlin/com/fluttercandies/photo_manager/permission/PermissionsListener.kt b/android/src/main/kotlin/com/fluttercandies/photo_manager/permission/PermissionsListener.kt index 46b0e0e5..091ac3cf 100644 --- a/android/src/main/kotlin/com/fluttercandies/photo_manager/permission/PermissionsListener.kt +++ b/android/src/main/kotlin/com/fluttercandies/photo_manager/permission/PermissionsListener.kt @@ -8,4 +8,12 @@ interface PermissionsListener { grantedPermissions: MutableList, needPermissions: MutableList ) + + /** + * Called when the user completes the limited photo selection picker (Android 14+). + * This allows the app to refresh its asset list after the user modifies their selection. + */ + fun onLimitedSelectionChanged() { + // Default empty implementation for backward compatibility + } } diff --git a/android/src/main/kotlin/com/fluttercandies/photo_manager/permission/impl/PermissionDelegate34.kt b/android/src/main/kotlin/com/fluttercandies/photo_manager/permission/impl/PermissionDelegate34.kt index 4a10c2d5..2e2130db 100644 --- a/android/src/main/kotlin/com/fluttercandies/photo_manager/permission/impl/PermissionDelegate34.kt +++ b/android/src/main/kotlin/com/fluttercandies/photo_manager/permission/impl/PermissionDelegate34.kt @@ -106,6 +106,8 @@ class PermissionDelegate34 : PermissionDelegate() { if (requestCode == CODE_REQUEST_LIMITED) { val handler = resultHandler ?: return resultHandler = null + // Notify the listener that the user has completed the limited selection + permissionsUtils.permissionsListener?.onLimitedSelectionChanged() handler.reply(1) return }