anchor.diff:      return MouseRegion(
         onEnter: (e) {
           final chartSize = _getChartSize();
  -        if (chartSize == null) {
  +        if (chartSize == null || _touchHandler == null) {
             return;
           }
   
  -        final LineTouchResponse response =
  -            _touchHandler?.handleTouch(FlPanStart(e.localPosition), chartSize);
  -        if (_canHandleTouch(response, touchData)) {
  -          touchData.touchCallback(response);
  -        }
  +        final response = _touchHandler!.handleTouch(FlPanStart(e.localPosition), chartSize);
  +        touchData.touchCallback?.call(response);
         },
         onExit: (e) {
           final chartSize = _getChartSize();
  -        if (chartSize == null) {
  +        if (chartSize == null || _touchHandler == null) {
             return;
           }
   
  -        final LineTouchResponse response =
  -            _touchHandler?.handleTouch(FlPanEnd(Offset.zero, Velocity.zero), chartSize);
  -        if (_canHandleTouch(response, touchData)) {
  -          touchData.touchCallback(response);
  -        }
  +        final response = _touchHandler!.handleTouch(FlPanEnd(Offset.zero, Velocity.zero), chartSize);
  +        touchData.touchCallback?.call(response);
         },
         onHover: (e) {
           final chartSize = _getChartSize();
  -        if (chartSize == null) {
  +        if (chartSize == null || _touchHandler == null) {
             return;
           }
   
  -        final LineTouchResponse response =
  -            _touchHandler?.handleTouch(FlPanMoveUpdate(e.localPosition), chartSize);
  -        if (_canHandleTouch(response, touchData)) {
  -          touchData.touchCallback(response);
  -        }
  +        final response =
  +            _touchHandler!.handleTouch(FlPanMoveUpdate(e.localPosition), chartSize);
  +        touchData.touchCallback?.call(response);
         },
         child: GestureDetector(
           onLongPressStart: (d) {
             final chartSize = _getChartSize();
  -          if (chartSize == null) {
  -            return;
  -          }
  -
  -          final LineTouchResponse response =
  -              _touchHandler?.handleTouch(FlLongPressStart(d.localPosition), chartSize);
  -          if (_canHandleTouch(response, touchData)) {
  -            touchData.touchCallback(response);
  -          }
  +          if (chartSize == null || _touchHandler == null) {
  +            return;
  +          }
  +
  +          final response =
  +              _touchHandler!.handleTouch(FlLongPressStart(d.localPosition), chartSize);
  +          touchData.touchCallback?.call(response);
           },
           onLongPressEnd: (d) {
             final chartSize = _getChartSize();
  -          if (chartSize == null) {
  -            return;
  -          }
  -
  -          final LineTouchResponse response =
  -              _touchHandler?.handleTouch(FlLongPressEnd(d.localPosition), chartSize);
  -          if (_canHandleTouch(response, touchData)) {
  -            touchData.touchCallback(response);
  -          }
  +          if (chartSize == null || _touchHandler == null) {
  +            return;
  +          }
  +
  +          final response =
  +              _touchHandler!.handleTouch(FlLongPressEnd(d.localPosition), chartSize);
  +          touchData.touchCallback?.call(response);
           },
           onLongPressMoveUpdate: (d) {
             final chartSize = _getChartSize();
  -          if (chartSize == null) {
  -            return;
  -          }
  -
  -          final LineTouchResponse response =
  -              _touchHandler?.handleTouch(FlLongPressMoveUpdate(d.localPosition), chartSize);
  -          if (_canHandleTouch(response, touchData)) {
  -            touchData.touchCallback(response);
  -          }
  +          if (chartSize == null || _touchHandler == null) {
  +            return;
  +          }
  +
  +          final response =
  +              _touchHandler!.handleTouch(FlLongPressMoveUpdate(d.localPosition), chartSize);
  +          touchData.touchCallback?.call(response);
           },
           onPanCancel: () {
             final chartSize = _getChartSize();
  -          if (chartSize == null) {
  -            return;
  -          }
  -
  -          final LineTouchResponse response = _touchHandler?.handleTouch(
  +          if (chartSize == null || _touchHandler == null) {
  +            return;
  +          }
  +
  +          final response = _touchHandler!.handleTouch(
                 FlPanEnd(Offset.zero, const Velocity(pixelsPerSecond: Offset.zero)), chartSize);
  -          if (_canHandleTouch(response, touchData)) {
  -            touchData.touchCallback(response);
  -          }
  +          touchData.touchCallback?.call(response);
           },
           onPanEnd: (DragEndDetails details) {
             final chartSize = _getChartSize();
  -          if (chartSize == null) {
  -            return;
  -          }
  -
  -          final LineTouchResponse response =
  -              _touchHandler?.handleTouch(FlPanEnd(Offset.zero, details.velocity), chartSize);
  -          if (_canHandleTouch(response, touchData)) {
  -            touchData.touchCallback(response);
  -          }
  +          if (chartSize == null || _touchHandler == null) {
  +            return;
  +          }
  +
  +          final response =
  +          _touchHandler!.handleTouch(FlPanEnd(Offset.zero, details.velocity), chartSize);
  +          touchData.touchCallback?.call(response);
           },
           onPanDown: (DragDownDetails details) {
             final chartSize = _getChartSize();
  -          if (chartSize == null) {
  -            return;
  -          }
  -
  -          final LineTouchResponse response =
  -              _touchHandler?.handleTouch(FlPanStart(details.localPosition), chartSize);
  -          if (_canHandleTouch(response, touchData)) {
  -            touchData.touchCallback(response);
  -          }
  +          if (chartSize == null || _touchHandler == null) {
  +            return;
  +          }
  +
  +          final response = _touchHandler!.handleTouch(FlPanStart(details.localPosition), chartSize);
  +          touchData.touchCallback?.call(response);
           },
           onPanUpdate: (DragUpdateDetails details) {
             final chartSize = _getChartSize();
  -          if (chartSize == null) {
  -            return;
  -          }
  -
  -          final LineTouchResponse response =
  -              _touchHandler?.handleTouch(FlPanMoveUpdate(details.localPosition), chartSize);
  -          if (_canHandleTouch(response, touchData)) {
  -            touchData.touchCallback(response);
  -          }
  +          if (chartSize == null || _touchHandler == null) {
  +            return;
  +          }
  +
  +          final response =
  +              _touchHandler!.handleTouch(FlPanMoveUpdate(details.localPosition), chartSize);
  +          touchData.touchCallback?.call(response);
           },
           child: CustomPaint(
             key: _chartKey,
  
positive.code:   }
  
    void _handleBuiltInTouch(LineTouchResponse touchResponse) {
      if (widget.data.lineTouchData.touchCallback != null) {
        widget.data.lineTouchData.touchCallback(touchResponse);
      }
  
      if (touchResponse.touchInput is FlPanStart ||
          touchResponse.touchInput is FlPanMoveUpdate ||
  
negative.code:     );
    }
  
    LineChartData _withTouchedIndicators(LineChartData lineChartData) {
      if (!lineChartData.lineTouchData.enabled || !lineChartData.lineTouchData.handleBuiltInTouches) {
        return lineChartData;
      }
  