request static method

Requests runtime permission authorization from the user.

Displays the host OS permission dialog if not previously determined.

Example:

final status = await BloomPermissions.request(BloomPermission.camera);

Implementation

static Future<BloomPermissionStatus> request(BloomPermission permission) async {
  if (_simulatedPermissions.containsKey(permission)) {
    final sim = _simulatedPermissions[permission]!;
    logger.info('BloomPermissions: [SIMULATED] Permission result for $permission -> $sim');
    return sim;
  }

  try {
    logger.info('BloomPermissions: Requesting runtime permission for $permission');
    final phPermission = permission.toPermissionHandler();
    final status = await phPermission.request();
    final bloomStatus = status.toBloomStatus();
    logger.info('BloomPermissions: Permission result for $permission -> $bloomStatus');
    return bloomStatus;
  } catch (e) {
    logger.warn('BloomPermissions: Failed to request permission $permission: $e');
    return BloomPermissionStatus.denied;
  }
}