init
This commit is contained in:
33
lib/core/permission/permission_service.dart
Normal file
33
lib/core/permission/permission_service.dart
Normal file
@@ -0,0 +1,33 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user