cancel sensor subscription when dispose
This commit is contained in:
parent
90dab5cd65
commit
21130bad54
1 changed files with 6 additions and 2 deletions
|
|
@ -114,6 +114,8 @@ class _PanoramaState extends State<Panorama> with SingleTickerProviderStateMixin
|
||||||
AnimationController _controller;
|
AnimationController _controller;
|
||||||
double screenOrientation = 0.0;
|
double screenOrientation = 0.0;
|
||||||
Vector3 orientation = Vector3(0, radians(90), 0);
|
Vector3 orientation = Vector3(0, radians(90), 0);
|
||||||
|
StreamSubscription _orientationSubscription;
|
||||||
|
StreamSubscription _screenOrientSubscription;
|
||||||
|
|
||||||
void _handleScaleStart(ScaleStartDetails details) {
|
void _handleScaleStart(ScaleStartDetails details) {
|
||||||
_lastFocalPoint = details.localFocalPoint;
|
_lastFocalPoint = details.localFocalPoint;
|
||||||
|
|
@ -231,14 +233,14 @@ class _PanoramaState extends State<Panorama> with SingleTickerProviderStateMixin
|
||||||
switch (widget.sensorControl) {
|
switch (widget.sensorControl) {
|
||||||
case SensorControl.Orientation:
|
case SensorControl.Orientation:
|
||||||
motionSensors.orientationUpdateInterval = Duration.microsecondsPerSecond ~/ 60;
|
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));
|
orientation.setFrom(Vector3(event.yaw, event.pitch, event.roll));
|
||||||
_updateView();
|
_updateView();
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case SensorControl.AbsoluteOrientation:
|
case SensorControl.AbsoluteOrientation:
|
||||||
motionSensors.absoluteOrientationUpdateInterval = Duration.microsecondsPerSecond ~/ 60;
|
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));
|
orientation.setFrom(Vector3(event.yaw, event.pitch, event.roll));
|
||||||
_updateView();
|
_updateView();
|
||||||
});
|
});
|
||||||
|
|
@ -256,6 +258,8 @@ class _PanoramaState extends State<Panorama> with SingleTickerProviderStateMixin
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
|
_orientationSubscription?.cancel();
|
||||||
|
_screenOrientSubscription?.cancel();
|
||||||
_controller.dispose();
|
_controller.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue