request static method

Future<RPPermissionStatus> request(
  1. RPPermissionType type, {
  2. List<String> healthDataTypes = const [],
})

Asks the OS for type through requester and returns the outcome.

healthDataTypes is only used for RPPermissionType.health, which is not a single permission: Apple HealthKit and Android Health Connect authorise each data type separately. Without any, there is nothing to ask for and that type resolves to RPPermissionStatus.unsupported.

Never throws — an error in requester resolves to RPPermissionStatus.unknown rather than interrupting the consent flow.

Implementation

static Future<RPPermissionStatus> request(
  RPPermissionType type, {
  List<String> healthDataTypes = const [],
}) async {
  if (type == RPPermissionType.health && healthDataTypes.isEmpty) {
    return RPPermissionStatus.unsupported;
  }

  final requester = RPPermissions.requester;
  if (requester == null) {
    debugPrint('$RPPermissions - $type cannot be requested, because no '
        'RPPermissions.requester has been set.');
    return RPPermissionStatus.unsupported;
  }

  try {
    return await requester(type, healthDataTypes: healthDataTypes);
  } catch (error) {
    debugPrint('$RPPermissions - error requesting $type - error: $error');
    return RPPermissionStatus.unknown;
  }
}