requestStoragePermission static method

Future<void> requestStoragePermission()

Implementation

static Future<void> requestStoragePermission() async {
  if (Platform.isAndroid) {
    final DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
    final AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
    int sdkVersion = androidInfo.version.sdkInt;
    if (sdkVersion >= 33) {
      // Android 13+ (API 33+): Request separate media permissions
      await Permission.photos.request();
      await Permission.videos.request();
      await Permission.audio.request();

      if (await Permission.photos.isGranted ||
          await Permission.videos.isGranted ||
          await Permission.audio.isGranted) {
        debugPrint("βœ… Storage permissions granted.");
      } else {
        debugPrint("❌ Storage permissions denied.");
      }
    } else {
      var status = await Permission.storage.status;

      if (status.isGranted) {
        debugPrint("βœ… Storage permission already granted.");
        return;
      }

      if (status.isDenied) {
        debugPrint("πŸš€ Requesting storage permission...");
        status = await Permission.storage.request();
      }

      if (status.isPermanentlyDenied) {
        debugPrint(
            "❌ Storage permission permanently denied. Redirecting to settings.");
        openAppSettings(); // Open settings for manual permission
      } else if (status.isDenied) {
        debugPrint("❌ Storage permission denied.");
      } else {
        debugPrint("βœ… Storage permission granted.");
      }
    }
  } else {
    debugPrint("⚠️ handle ios permission request");
  }
}