From 21130bad5476c96a18379cea209886a95b50bc5c Mon Sep 17 00:00:00 2001 From: Mark Hu Date: Mon, 21 Dec 2020 16:55:08 +0800 Subject: [PATCH] cancel sensor subscription when dispose --- lib/panorama.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/panorama.dart b/lib/panorama.dart index 2bfb600..01115e6 100644 --- a/lib/panorama.dart +++ b/lib/panorama.dart @@ -114,6 +114,8 @@ class _PanoramaState extends State with SingleTickerProviderStateMixin AnimationController _controller; double screenOrientation = 0.0; Vector3 orientation = Vector3(0, radians(90), 0); + StreamSubscription _orientationSubscription; + StreamSubscription _screenOrientSubscription; void _handleScaleStart(ScaleStartDetails details) { _lastFocalPoint = details.localFocalPoint; @@ -231,14 +233,14 @@ class _PanoramaState extends State with SingleTickerProviderStateMixin switch (widget.sensorControl) { case SensorControl.Orientation: motionSensors.orientationUpdateInterval = Duration.microsecondsPerSecond ~/ 60; - motionSensors.orientation.listen((OrientationEvent event) { + _orientationSubscription = motionSensors.orientation.listen((OrientationEvent event) { orientation.setFrom(Vector3(event.yaw, event.pitch, event.roll)); _updateView(); }); break; case SensorControl.AbsoluteOrientation: motionSensors.absoluteOrientationUpdateInterval = Duration.microsecondsPerSecond ~/ 60; - motionSensors.absoluteOrientation.listen((AbsoluteOrientationEvent event) { + _orientationSubscription = motionSensors.absoluteOrientation.listen((AbsoluteOrientationEvent event) { orientation.setFrom(Vector3(event.yaw, event.pitch, event.roll)); _updateView(); }); @@ -256,6 +258,8 @@ class _PanoramaState extends State with SingleTickerProviderStateMixin @override void dispose() { + _orientationSubscription?.cancel(); + _screenOrientSubscription?.cancel(); _controller.dispose(); super.dispose(); }