onNewCameraSelected method

Future<void> onNewCameraSelected()

Implementation

Future<void> onNewCameraSelected() async {
  // widget.photoController = widget.photoController = CameraController(widget.xApp.state.cameras[0], ResolutionPreset.max, enableAudio: true);
  await Permission.photos.request();
  widget.photoController!.addListener(() {
    if (mounted) {
      setState(() {});
    }
    if (widget.photoController!.value.hasError) {
      showInSnackBar('Camera error ${widget.photoController!.value.errorDescription}');
    }
  });

  try {
    await widget.photoController!.initialize();
    await widget.photoController!.setFocusMode(FocusMode.locked);

    // for (var cameraDescription in _availableCameras) {
    //   liToggles.add(
    //     SizedBox(
    //       width: 90.0,
    //       child: RadioListTile<CameraDescription>(
    //         title: Icon(getCameraLensIcon(cameraDescription.lensDirection)),
    //         groupValue: widget.photoController?.description,
    //         value: cameraDescription,
    //         onChanged: (value) => widget.photoController!.setDescription(cameraDescription),
    //       ),
    //     ),
    //   );
    // }
    await Future.wait(<Future<Object?>>[
      ...!kIsWeb ? <Future<Object?>>[widget.photoController!.getMinExposureOffset().then((double value) => _minAvailableExposureOffset = value), widget.photoController!.getMaxExposureOffset().then((double value) => _maxAvailableExposureOffset = value)] : <Future<Object?>>[],
      widget.photoController!.getMaxZoomLevel().then((double value) => _maxAvailableZoom = value),
      widget.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(() {});
  }
}