detach method
Mark this render object as detached from its PipelineOwner.
Typically called only from the parent's detach, and by the owner to mark the root of a tree as detached.
Subclasses with children should override this method to
detach all their children after calling the inherited method,
as in super.detach().
Implementation
@override
void detach() {
  _animationController
    ?..removeStatusListener(_handleAnimationStatusChange)
    ..dispose();
  _animationController = null;
  _animation
    ?..removeListener(_handleAnimationUpdate)
    ..dispose();
  _animation = null;
  _selectionBehavior?.selectionController?.removeListener(
    _handleSelectionControllerChange,
  );
  _markerAnimationController?.dispose();
  _markerAnimationController = null;
  _markerAnimation?.dispose();
  _markerAnimation = null;
  _dataLabelAnimationController?.dispose();
  _dataLabelAnimationController = null;
  _dataLabelAnimation?.dispose();
  _dataLabelAnimation = null;
  parent?.selectionController
    ?..removeSelectionListener(_handleSelection)
    ..removeDeselectionListener(_handleDeselection);
  super.detach();
}