createCamera method

Future<CameraController?> createCamera({
  1. CameraDescription? description,
})

Implementation

Future<CameraController?> createCamera({CameraDescription? description}) async {
  if (value.error != null) {
    value = value.copyWith();
  }

  var cameraDescription = description ?? value.cameraDescription;
  var cameras = value.cameras;

  // Fetch camera descriptions if description is not available
  if (cameraDescription == null) {
    cameras = await availableCameras();
    if (cameras.isNotEmpty) {
      cameraDescription = cameras[0];
    } else {
      cameraDescription = const CameraDescription(
        name: 'Simulator',
        lensDirection: CameraLensDirection.front,
        sensorOrientation: 0,
      );
    }
  }

  // create camera controller
  _cameraController = CameraController(
    cameraDescription,
    GAPManager.cameraConfig.resolutionPreset,
    imageFormatGroup: GAPManager.cameraConfig.imageFormatGroup,
    enableAudio: false,
  );
  _cameraController!.addListener(() {
    if (_cameraController?.value.hasError == true) {
      value = value.copyWith(error: CameraExceptions.createCamera);
      return;
    }
  });

  return await _safeCall(
    checkHasCamera: false,
    callback: () async {
      await _cameraController!.initialize();
      value = value.copyWith(cameraDescription: cameraDescription, cameras: cameras);
      if (_cameraController!.description.lensDirection == CameraLensDirection.back) {
        unawaited(_cameraController!.setFlashMode(value.flashMode));
      }
    },
    customException: CameraExceptions.createCamera,
  );
}