initPlatformState method

Future<void> initPlatformState()

Implementation

Future<void> initPlatformState() async {
  // wait user accept permissions to init widget completely on android
  if (Platform.isAndroid) {
    _permissionStreamSub =
        CamerawesomePlugin.listenPermissionResult()!.listen((res) {
      if (res) {
        initPlatformState();
      }
      if (widget.onPermissionsResult != null) {
        widget.onPermissionsResult!(res);
      }
    });
  }
  hasPermissions = await CamerawesomePlugin.checkAndRequestPermissions();
  if (widget.onPermissionsResult != null) {
    widget.onPermissionsResult!(hasPermissions);
  }
  if (!hasPermissions!) {
    return;
  }

  // Init orientation stream
  if (widget.onOrientationChanged != null) {
    _orientationStreamSub = CamerawesomePlugin.getNativeOrientation()
        .listen(widget.onOrientationChanged);
  }

  // All events sink need to be done before camera init
  if (Platform.isIOS) {
    _initImageStream();
  }
  // init camera --
  await CamerawesomePlugin.init(
    widget.sensor.value,
    widget.imagesStreamBuilder != null,
    captureMode: widget.captureMode.value,
  );
  if (Platform.isAndroid) {
    _initImageStream();
  }
  _initAndroidPhotoSize();
  _initPhotoSize();
  camerasAvailableSizes = await CamerawesomePlugin.getSizes();
  if (widget.selectDefaultSize != null) {
    widget.photoSize.value = widget.selectDefaultSize!(camerasAvailableSizes);
  } else {
    widget.photoSize.value = camerasAvailableSizes[0];
  }
  // start camera --
  try {
    started = await CamerawesomePlugin.start();
  } catch (e) {
    await _retryStartCamera(3);
  }

  if (widget.onCameraStarted != null) {
    widget.onCameraStarted!();
  }
  _initFlashModeSwitcher();
  _initZoom();
  _initSensor();
  _initCaptureMode();
  _initAudioMode();
  _initManualBrightness();
  _initBrightnessStream();
  if (mounted) setState(() {});
}