diff --git a/lib/src/view/flutter_slider_widget.dart b/lib/src/view/flutter_slider_widget.dart index 0d97dd9..9703436 100644 --- a/lib/src/view/flutter_slider_widget.dart +++ b/lib/src/view/flutter_slider_widget.dart @@ -435,8 +435,9 @@ class _FlutterSliderState extends State _arrangeHandlersPosition(); _drawHatchMark(); - - setState(() {}); + if (mounted) { + setState(() {}); + } }); } @@ -911,8 +912,9 @@ class _FlutterSliderState extends State {double lockedHandlersDragOffset = 0, double tappedPositionWithPadding = 0, bool selectedByTap = false}) { - if (widget.disabled || (widget.handler != null && widget.handler!.disabled)) - return; + if (!mounted || + widget.disabled || + (widget.handler != null && widget.handler!.disabled)) return; _handlersDistance = widget.lockDistance ?? _upperValue! - _lowerValue!; @@ -1042,6 +1044,7 @@ class _FlutterSliderState extends State if (widget.lockHandlers || lockedHandlersDragOffset > 0) { _lockedHandlers('leftHandler'); } + setState(() {}); if (selectedByTap) { @@ -1164,7 +1167,8 @@ class _FlutterSliderState extends State void _rightHandlerMove(PointerEvent pointer, {double tappedPositionWithPadding = 0, bool selectedByTap = false}) { - if (widget.disabled || + if (!mounted || + widget.disabled || (widget.rightHandler != null && widget.rightHandler!.disabled)) return; _handlersDistance = widget.lockDistance ?? _upperValue! - _lowerValue!; @@ -1477,12 +1481,15 @@ class _FlutterSliderState extends State ), feedback: Container()), onPointerMove: (_) { + if (!mounted) return; + __dragging = true; _leftHandlerMove(_); }, onPointerDown: (_) { - if (widget.disabled || + if (!mounted || + widget.disabled || (widget.handler != null && widget.handler!.disabled)) return; _renderBoxInitialization(); @@ -1508,6 +1515,8 @@ class _FlutterSliderState extends State _callbacks('onDragStarted', 0); }, onPointerUp: (_) { + if (!mounted) return; + __dragging = false; _adjustLeftHandlerPosition(); @@ -1559,6 +1568,8 @@ class _FlutterSliderState extends State } void _hideTooltips() { + if (!mounted) return; + if (!_tooltipData.alwaysShowTooltip!) { _leftTooltipOpacity = 0; _rightTooltipOpacity = 0; @@ -1602,6 +1613,8 @@ class _FlutterSliderState extends State // color: Colors.blue.withOpacity(0.7), )), onPointerMove: (_) { + if (!mounted) return; + __dragging = true; if (!_tooltipData.disabled! && @@ -1611,6 +1624,7 @@ class _FlutterSliderState extends State _rightHandlerMove(_); }, onPointerDown: (_) { + if (!mounted) return; if (widget.disabled || (widget.rightHandler != null && widget.rightHandler!.disabled)) return; @@ -1640,6 +1654,8 @@ class _FlutterSliderState extends State _callbacks('onDragStarted', 1); }, onPointerUp: (_) { + if (!mounted) return; + __dragging = false; _adjustRightHandlerPosition(); @@ -1699,6 +1715,8 @@ class _FlutterSliderState extends State void _stopHandlerAnimation( {Animation? animation, AnimationController? controller}) { + if (!mounted) return; + if (widget.handlerAnimation.reverseCurve != null) { if (animation!.isCompleted) controller!.reverse(); @@ -1728,6 +1746,8 @@ class _FlutterSliderState extends State opacity: 0, child: Listener( onPointerUp: (_) { + if (!mounted) return; + if (widget.selectByTap && !__dragging) { tappedPositionWithPadding = _distance(); if (_distanceFromLeftHandler! < _distanceFromRightHandler!) { @@ -1773,6 +1793,8 @@ class _FlutterSliderState extends State setState(() {}); }, onPointerMove: (_) { + if (!mounted) return; + __dragging = true; if (_slidingByActiveTrackBar) { @@ -1815,6 +1837,8 @@ class _FlutterSliderState extends State } }, onPointerDown: (_) { + if (!mounted) return; + _leftTapAndSlide = false; _rightTapAndSlide = false; _slidingByActiveTrackBar = false;