handleAccelerometerEvent method
void
handleAccelerometerEvent(
- 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);
}
}