import 'package:permission_handler/permission_handler.dart'; class PermissionService { PermissionService._(); static Future request(Permission permission) async { final status = await permission.status; if (status.isGranted || status.isLimited) return true; final next = await permission.request(); return next.isGranted || next.isLimited; } static Future> requestAll( Iterable permissions, ) { return permissions.toList().request(); } static Future ensure( Permission permission, { bool openSettingsWhenPermanentlyDenied = true, }) async { final granted = await request(permission); if (granted) return true; final status = await permission.status; if (openSettingsWhenPermanentlyDenied && status.isPermanentlyDenied) { await openAppSettings(); } return false; } }