minor fix

This commit is contained in:
Thibault Deckers 2021-10-27 18:43:12 +09:00
parent 1bb8e59a8c
commit 07934bbf9e

View file

@ -12,6 +12,7 @@ class MagnifierController {
final StreamController<ScaleBoundaries> _scaleBoundariesStreamController = StreamController.broadcast(); final StreamController<ScaleBoundaries> _scaleBoundariesStreamController = StreamController.broadcast();
final StreamController<ScaleStateChange> _scaleStateChangeStreamController = StreamController.broadcast(); final StreamController<ScaleStateChange> _scaleStateChangeStreamController = StreamController.broadcast();
bool _disposed = false;
late MagnifierState _currentState, initial, previousState; late MagnifierState _currentState, initial, previousState;
ScaleBoundaries? _scaleBoundaries; ScaleBoundaries? _scaleBoundaries;
late ScaleStateChange _currentScaleState, previousScaleState; late ScaleStateChange _currentScaleState, previousScaleState;
@ -55,6 +56,7 @@ class MagnifierController {
bool get isZooming => scaleState.state == ScaleState.zoomedIn || scaleState.state == ScaleState.zoomedOut; bool get isZooming => scaleState.state == ScaleState.zoomedIn || scaleState.state == ScaleState.zoomedOut;
void dispose() { void dispose() {
_disposed = true;
_stateStreamController.close(); _stateStreamController.close();
_scaleBoundariesStreamController.close(); _scaleBoundariesStreamController.close();
_scaleStateChangeStreamController.close(); _scaleStateChangeStreamController.close();
@ -78,7 +80,7 @@ class MagnifierController {
} }
void setScaleState(ScaleState newValue, ChangeSource source, {Offset? childFocalPoint}) { void setScaleState(ScaleState newValue, ChangeSource source, {Offset? childFocalPoint}) {
if (_currentScaleState.state == newValue) return; if (_disposed || _currentScaleState.state == newValue) return;
previousScaleState = _currentScaleState; previousScaleState = _currentScaleState;
_currentScaleState = ScaleStateChange(state: newValue, source: source, childFocalPoint: childFocalPoint); _currentScaleState = ScaleStateChange(state: newValue, source: source, childFocalPoint: childFocalPoint);
@ -86,13 +88,15 @@ class MagnifierController {
} }
void _setState(MagnifierState state) { void _setState(MagnifierState state) {
if (_currentState == state) return; if (_disposed || _currentState == state) return;
_currentState = state; _currentState = state;
_stateStreamController.add(state); _stateStreamController.add(state);
} }
void setScaleBoundaries(ScaleBoundaries scaleBoundaries) { void setScaleBoundaries(ScaleBoundaries scaleBoundaries) {
if (_scaleBoundaries == scaleBoundaries) return; if (_disposed || _scaleBoundaries == scaleBoundaries) return;
_scaleBoundaries = scaleBoundaries; _scaleBoundaries = scaleBoundaries;
_scaleBoundariesStreamController.add(scaleBoundaries); _scaleBoundariesStreamController.add(scaleBoundaries);
@ -105,7 +109,8 @@ class MagnifierController {
} }
void _setScaleState(ScaleStateChange scaleState) { void _setScaleState(ScaleStateChange scaleState) {
if (_currentScaleState == scaleState) return; if (_disposed || _currentScaleState == scaleState) return;
_currentScaleState = scaleState; _currentScaleState = scaleState;
_scaleStateChangeStreamController.add(_currentScaleState); _scaleStateChangeStreamController.add(_currentScaleState);
} }