requestStoragePermission method
Request storage permission
Implementation
@override
Future<String> requestStoragePermission() async {
// Handle storage permissions differently based on platform and Android version
if (Platform.isAndroid) {
try {
final androidVersion = await methodChannel.invokeMethod<int>(
'getAndroidVersion',
);
// For Android 13+ (API 33+)
if (androidVersion != null && androidVersion >= 33) {
// Request modern storage permissions
debugPrint(
'Using modern storage permissions for Android $androidVersion',
);
final result = await _invokePermissionMethod(
'requestStoragePermission',
);
// Check if any of the permissions were granted
if (result is Map<dynamic, dynamic>) {
final values = (result as Map<dynamic, dynamic>).values.toList();
if (values.contains('GRANTED')) {
return 'GRANTED';
} else if (values.contains('OPEN_SETTINGS')) {
return 'OPEN_SETTINGS';
} else if (values.contains('SHOW_RATIONALE')) {
return 'SHOW_RATIONALE';
}
return 'DENIED';
}
return result;
}
} catch (e) {
debugPrint('Error checking Android version: $e');
return 'ERROR';
}
}
// Default implementation for older Android versions and iOS
try {
return await _invokePermissionMethod('requestStoragePermission');
} catch (e) {
debugPrint('Error requesting storage permission: $e');
return 'ERROR';
}
}