checkPermissions method
Check permissions status.
Implementation
Future<PermissionsRequestResult> checkPermissions(
List<PermissionData> permissions) async {
final filteredPermissions =
await filterByVersion(await filterByPlatform(permissions));
final methodChannel = MethodChannelPermissionRequestPage.instance;
final grantedPermissions = <PermissionData>[];
final deferredPermissions = <PermissionData>[];
final deniedPermissions = <PermissionData>[];
PermissionType permissionType;
Permission permissionObj;
for (final p in filteredPermissions) {
permissionType = p.permissionType;
permissionObj = permissionType.toPermissionObj();
if (permissionType == PermissionType.systemAlertWindow) {
if (await methodChannel.canDrawOverlays()) {
grantedPermissions.add(p);
} else {
if (p.isNecessary) {
deniedPermissions.add(p);
} else {
deferredPermissions.add(p);
}
}
} else {
if (permissionType == PermissionType.locationAlways) {
permissionObj = Permission.location;
}
if (await permissionObj.isGranted) {
grantedPermissions.add(p);
} else {
if (p.isNecessary) {
deniedPermissions.add(p);
} else {
deferredPermissions.add(p);
}
}
}
}
return PermissionsRequestResult(
grantedPermissions: grantedPermissions,
deferredPermissions: deferredPermissions,
deniedPermissions: deniedPermissions,
);
}