onPermissionRequest function

Future<PermissionResponse?> onPermissionRequest(
  1. dynamic controller,
  2. dynamic request
)

Implementation

Future<PermissionResponse?> onPermissionRequest(controller, request) async {
  final resources = <PermissionResourceType>[];
  if (request.resources.contains(PermissionResourceType.CAMERA)) {
    final cameraStatus = await Permission.camera.request();
    if (!cameraStatus.isDenied) {
      resources.add(PermissionResourceType.CAMERA);
    }
  }

  if (request.resources.contains(PermissionResourceType.MICROPHONE)) {
    final microphoneStatus = await Permission.microphone.request();
    if (!microphoneStatus.isDenied) {
      resources.add(PermissionResourceType.MICROPHONE);
    }
  }

  // only for iOS and macOS
  if (request.resources
      .contains(PermissionResourceType.CAMERA_AND_MICROPHONE)) {
    final cameraStatus = await Permission.camera.request();
    final microphoneStatus = await Permission.microphone.request();
    if (!cameraStatus.isDenied && !microphoneStatus.isDenied) {
      resources.add(PermissionResourceType.CAMERA_AND_MICROPHONE);
    }
  }

  return PermissionResponse(
      resources: resources,
      action: resources.isEmpty
          ? PermissionResponseAction.DENY
          : PermissionResponseAction.GRANT);
}