showPicker method

Future<List<MediaViewModel>?> showPicker()

Opens the media picker and returns a list of selected media files.

If the user grants permission, it displays a bottom sheet grid to select images or videos.

Returns a list of MediaViewModel if media is selected, otherwise null.

Implementation

Future<List<MediaViewModel>?> showPicker() async {
  var status = await PhotoManager.requestPermissionExtend(
    requestOption: PermissionRequestOption(
      iosAccessLevel: IosAccessLevel.readWrite, // Ensure full access on iOS
      androidPermission: AndroidPermission(
        type: mediaType == MediaType.video
            ? RequestType.video
            : RequestType.image,
        mediaLocation: true, // Ensure media access on Android 13+
      ),
    ),
  );

  if (kDebugMode) {
    print("status.name");
    print(status.name);
  }

  if (status.isAuth) {
    if (kDebugMode) {
      print("Full access granted");
    }
    await Future.delayed(const Duration(seconds: 1));
    if (context.mounted) {
      return showGridBottomSheet(context, maxLimit);
    }
  } else if (status == PermissionState.limited) {
    await PhotoManager.openSetting();
  }

  return null;
}