checkAndRequestPermission method

Future<void> checkAndRequestPermission(
  1. PermissionRequestData requestData, {
  2. void onPermissionGranted()?,
  3. void onPermissionDenied()?,
  4. void onPermissionPermanentDenied()?,
})

Implementation

Future<void> checkAndRequestPermission(
    PermissionRequestData requestData, {
      void Function()? onPermissionGranted,
      void Function()? onPermissionDenied,
      void Function()? onPermissionPermanentDenied,
    }
) async {
  final target = Permission.byValue(requestData.permissionValue);
  final status = await target.status;

  if (status.isGranted) {
    onPermissionGranted?.call();
  } else if (status.isDenied) {
    final reqRes = await target.request();

    if (reqRes.isGranted) {
      onPermissionGranted?.call();
    } else if (reqRes.isPermanentlyDenied) {
      onPermissionPermanentDenied?.call();
    } else {
      onPermissionDenied?.call();
    }
  } else if (status.isPermanentlyDenied) {
    onPermissionPermanentDenied?.call();
  }
}