getStoragePermission static method

Future<bool> getStoragePermission({
  1. String? permissionContent,
  2. String? deniedContent,
})

Implementation

static Future<bool> getStoragePermission(
    {String? permissionContent, String? deniedContent}) async {
  var sdkVersion = 0;
  if (Platform.isAndroid) {
    var sdk = await DeviceInfoPlugin().androidInfo;
    sdkVersion = sdk.version.sdkInt;
  } else {
    sdkVersion = 0;
  }
  if (sdkVersion < 33 && Platform.isAndroid) {
    final permission = await Permission.storage.status;
    if (permission != PermissionStatus.granted &&
        permission != PermissionStatus.permanentlyDenied) {
      const newPermission = Permission.storage;
      var deniedPopupValue = await mirrorFlyPermissionDialog(
          icon: filePermission,
          content:
              permissionContent ?? getTranslated("filePermissionContent"),
          dialogStyle: AppStyleConfig.dialogStyle);
      if (deniedPopupValue) {
        var newp = await newPermission.request();
        if (newp.isGranted) {
          return true;
        } else {
          var popupValue = await customPermissionDialog(
              icon: filePermission,
              content: deniedContent ?? getPermissionAlertMessage("storage"),
              dialogStyle: AppStyleConfig.dialogStyle);
          if (popupValue) {
            openAppSettings();
            return false;
          } else {
            return false;
          }
        }
      } else {
        return newPermission.status.isGranted;
      }
    } else {
      return permission.isGranted;
    }
  } else if (Platform.isIOS) {
    final photos = await Permission.photos.status;
    final storage = await Permission.storage.status;

    const newPermission = [
      Permission.photos,
      Permission.storage,
      // Permission.audio
    ];
    if ((photos != PermissionStatus.granted &&
            photos != PermissionStatus.permanentlyDenied) ||
        (storage != PermissionStatus.granted &&
            storage != PermissionStatus.permanentlyDenied)) {
      LogMessage.d("showing mirrorfly popup", "");
      var deniedPopupValue = await mirrorFlyPermissionDialog(
          icon: filePermission,
          content:
              permissionContent ?? getTranslated("filePermissionContent"),
          dialogStyle: AppStyleConfig.dialogStyle);
      if (deniedPopupValue) {
        var newp = await newPermission.request();
        PermissionStatus? photo = newp[Permission.photos];
        PermissionStatus? storage = newp[Permission.storage];
        // var audio = await newPermission[2].isGranted;
        if (photo!.isGranted && storage!.isGranted) {
          return true;
        } else if (photo.isPermanentlyDenied ||
            storage!.isPermanentlyDenied) {
          var popupValue = await customPermissionDialog(
              icon: filePermission,
              content: deniedContent ?? getPermissionAlertMessage("storage"),
              dialogStyle: AppStyleConfig.dialogStyle);
          if (popupValue) {
            openAppSettings();
            return false;
          } else {
            return false;
          }
        } else {
          return false;
        }
      } else {
        return false; //PermissionStatus.denied;
      }
    } else {
      LogMessage.d("showing mirrorfly popup",
          "${photos.isGranted} ${storage.isGranted}");
      return (photos.isGranted && storage.isGranted);
      // ? photos
      // : photos;
    }
  } else {
    return getAndroid13Permission();
  }
}