Files
record-tool/lib/core/permission/permission_service.dart
2026-06-03 14:07:10 +08:00

34 lines
910 B
Dart

import 'package:permission_handler/permission_handler.dart';
class PermissionService {
PermissionService._();
static Future<bool> 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<Map<Permission, PermissionStatus>> requestAll(
Iterable<Permission> permissions,
) {
return permissions.toList().request();
}
static Future<bool> 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;
}
}