++
diff --git a/packages/camera/camera_android_camerax/lib/src/preview_rotation.dart b/packages/camera/camera_android_camerax/lib/src/preview_rotation.dart index 704774a..80a5691 100644 --- a/packages/camera/camera_android_camerax/lib/src/preview_rotation.dart +++ b/packages/camera/camera_android_camerax/lib/src/preview_rotation.dart
@@ -17,11 +17,12 @@ DeviceOrientation.portraitDown => 180, DeviceOrientation.landscapeLeft => 270, // FIXME: Should this be -90? }; - final double preAppliedRotation = deviceOrientationDegrees / 90; + final double preAppliedRotation = deviceOrientationDegrees; debugPrint('>>>>> deviceOrientationDegrees: $deviceOrientationDegrees'); debugPrint('>>>>> preAppliedRotation: $preAppliedRotation'); return ((sensorOrientationDegrees - deviceOrientationDegrees * sign + 360) % - 360) - preAppliedRotation; + 360) - + preAppliedRotation; } final class PreviewRotation extends StatefulWidget { @@ -47,6 +48,9 @@ /// ... final Stream<DeviceOrientation> deviceOrientation; + /// FIXME: Add an initialDeviceOrientation. + /// final DeviceOrientation initialDeviceOrientation; + /// ... final double sensorOrientationDegrees; @@ -58,11 +62,26 @@ } final class _PreviewRotationState extends State<PreviewRotation> { + // FIXME: Instead of assuming the initial state is portraitUp, we should + // get that from the widget itself; meaning, when we call 'createCameraWithSettings' + // we should get the initial device orientation, and then provide that to preview + // rotation PreviewRotation.frontFacingCamera(initialDeviceOrientation: ...); + // + // So this will be come late instead of having an initial value. DeviceOrientation deviceOrientation = DeviceOrientation.portraitUp; @override void initState() { + // FIXME: Get the initial orientation. + // deviceOrientation = widget.initialDeviceOrientation; + + // FIXME: Need to store a reference to the stream subscription, and + // cancel it in the @override dispose() method, which is not yet done here. widget.deviceOrientation.listen((DeviceOrientation event) { + // Make sure we aren't updating the state if the widget is being destroyed. + if (!mounted) { + return; + } setState(() { debugPrint('>>>> deviceOrientation changed to: $event'); deviceOrientation = event;