anchor.diff:      _pieChartDataTween = visitor(
         _pieChartDataTween,
         widget.data,
  -      (dynamic value) => PieChartDataTween(begin: value),
  -    );
  +      (dynamic value) => PieChartDataTween(
  +          begin: value,
  +          end: widget.data
  +      ),
  +    ) as PieChartDataTween;
     }
   }
   
  
positive.code: class _PieChartState extends AnimatedWidgetBaseState<PieChart> {
    /// We handle under the hood animations (implicit animations) via this tween,
    /// it lerps between the old [PieChartData] to the new one.
    PieChartDataTween _pieChartDataTween;
  
    /// This is used to map the touch events to [PieTouchResponse]
    TouchHandler _touchHandler;
  
    /// This is used to retrieve the offsets for puting widgets upon the chart.
    ///
    /// exposes [PieChartWidgetsPositionHandler.getBadgeOffsets] to retrieve the badge widgets position.
    PieChartWidgetsPositionHandler _widgetsPositionHandler;
  
    /// this is used to retrieve the chart size to handle the touches
    final GlobalKey _chartKey = GlobalKey();
  
negative.code:     return MouseRegion(
        onEnter: (e) {
          final chartSize = _getChartSize();
          if (chartSize == null || _touchHandler == null) {
            return;
          }
  
          final response = _touchHandler!.handleTouch(FlPanStart(e.localPosition), chartSize);
          touchData.touchCallback?.call(response);
        },
        onExit: (e) {
          final chartSize = _getChartSize();
          if (chartSize == null || _touchHandler == null) {
            return;
          }
  
          final response = _touchHandler!.handleTouch(
              FlPanEnd(Offset.zero, const Velocity(pixelsPerSecond: Offset.zero)), chartSize);
          touchData.touchCallback?.call(response);
        },
        onHover: (e) {
          final chartSize = _getChartSize();
          if (chartSize == null || _touchHandler == null) {
            return;
          }
  
          final response = _touchHandler!.handleTouch(FlPanMoveUpdate(e.localPosition), chartSize);
          touchData.touchCallback?.call(response);
        },
        child: GestureDetector(
          onLongPressStart: (d) {
            final chartSize = _getChartSize();
            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 || _touchHandler == null) {
              return;
            }
  
            final response = _touchHandler!.handleTouch(FlLongPressEnd(d.localPosition), chartSize);
            touchData.touchCallback?.call(response);
          },
          onLongPressMoveUpdate: (d) {
            final chartSize = _getChartSize();
            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 || _touchHandler == null) {
              return;
            }
  
            final response = _touchHandler!.handleTouch(
                FlPanEnd(Offset.zero, const Velocity(pixelsPerSecond: Offset.zero)), chartSize);
            touchData.touchCallback?.call(response);
          },
          onPanEnd: (DragEndDetails details) {
            final chartSize = _getChartSize();
            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 || _touchHandler == null) {
              return;
            }
  
            final response =
                _touchHandler!.handleTouch(FlPanStart(details.localPosition), chartSize);
            touchData.touchCallback?.call(response);
          },
          onPanUpdate: (DragUpdateDetails details) {
            final chartSize = _getChartSize();
            if (chartSize == null || _touchHandler == null) {
              return;
            }
  
            final response =
                _touchHandler!.handleTouch(FlPanMoveUpdate(details.localPosition), chartSize);
            touchData.touchCallback?.call(response);
          },
          child: CustomPaint(
            key: _chartKey,
  