onNewCameraSelected method

Future<void> onNewCameraSelected()

Implementation

Future<void> onNewCameraSelected() async {
  // final CameraController? oldController = photoController;
  // if (oldController != null) {
  //   photoController = null;
  //   await oldController.dispose();
  // }
  late List<CameraDescription> cameras = <CameraDescription>[]; //TODO
  photoController = CameraController(cameras[0], ResolutionPreset.medium, enableAudio: true);

  photoController!.addListener(() {
    if (mounted) {
      setState(() {});
    }
    if (photoController!.value.hasError) {
      showInSnackBar('Camera error ${photoController!.value.errorDescription}');
    }
  });

  try {
    await photoController!.initialize();
    await Future.wait(<Future<Object?>>[
      ...!kIsWeb ? <Future<Object?>>[photoController!.getMinExposureOffset().then((double value) => _minAvailableExposureOffset = value), photoController!.getMaxExposureOffset().then((double value) => _maxAvailableExposureOffset = value)] : <Future<Object?>>[],
      photoController!.getMaxZoomLevel().then((double value) => _maxAvailableZoom = value),
      photoController!.getMinZoomLevel().then((double value) => _minAvailableZoom = value),
    ]);
  } on CameraException catch (e) {
    switch (e.code) {
      case 'CameraAccessDenied':
        showInSnackBar('Non hai gli accessi alla telecamera.');
        break;
      case 'CameraAccessDeniedWithoutPrompt':
        // iOS only
        showInSnackBar("Perfavore vai nelle impostazioni dell'app e dai gli accessi alla Telecamera.");
        break;
      case 'CameraAccessRestricted':
        // iOS only
        showInSnackBar('Accesso riservato per la Telecamera');
        break;
      case 'AudioAccessDenied':
        showInSnackBar("Non hai gli accessi per registrare l'audio");
        break;
      case 'AudioAccessDeniedWithoutPrompt':
        // iOS only
        showInSnackBar("Perfavore vai nelle impostazioni dell'app e dai gli accessi all'Audio.");
        break;
      case 'AudioAccessRestricted':
        // iOS only
        showInSnackBar("Accesso riservato per la registrazione Audio");
        break;
      default:
        _showCameraException(e);
        break;
    }
  }

  if (mounted) {
    setState(() {});
  }
}