handleAccelerometerEvent method

void handleAccelerometerEvent(
  1. AccelerometerEvent event
)

Lock capture orientation according to the current status of the device, which enables the captured file stored the correct orientation.

Implementation

void handleAccelerometerEvent(AccelerometerEvent event) {
  if (!mounted ||
      pickerConfig.lockCaptureOrientation != null ||
      innerController == null ||
      !controller.value.isInitialized ||
      controller.value.isPreviewPaused ||
      controller.value.isRecordingVideo ||
      controller.value.isTakingPicture) {
    return;
  }
  final x = event.x, y = event.y, z = event.z;
  final DeviceOrientation? newOrientation;
  if (x.abs() > y.abs() && x.abs() > z.abs()) {
    if (x > 0) {
      newOrientation = DeviceOrientation.landscapeLeft;
    } else {
      newOrientation = DeviceOrientation.landscapeRight;
    }
  } else if (y.abs() > x.abs() && y.abs() > z.abs()) {
    if (y > 0) {
      newOrientation = DeviceOrientation.portraitUp;
    } else {
      newOrientation = DeviceOrientation.portraitDown;
    }
  } else {
    newOrientation = null;
  }
  // Throttle.
  if (newOrientation != null && lockedCaptureOrientation != newOrientation) {
    lockedCaptureOrientation = newOrientation;
    realDebugPrint('Locking new capture orientation: $newOrientation');
    controller.lockCaptureOrientation(newOrientation);
  }
}