hasPermission method

  1. @override
Future<bool?> hasPermission()
override

Checks whether a camera is available and accessible.

Implementation

@override
Future<bool?> hasPermission() async {
  bool? status;
  try {
    final cameras = await availableCameras();
    if (cameras.isNotEmpty) {
      await CameraController(cameras[0], ResolutionPreset.max).initialize();
      status = true;
    } else {
      status = null;
    }
    return status;
  } catch (error) {
    if (error is CameraException) {
      switch (error.code) {
        // User denied the camera access request
        case 'CameraAccessDenied':
        // User has previously denied the camera access request
        case 'CameraAccessDeniedWithoutPrompt':
          status = false;
          break;
        case 'CameraAccessRestricted': // Parental Control
        default:
          status = null;
          break;
      }
    } else {
      status = null;
    }
    return status;
  }
}