detach method
override
    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() {
  _tap.dispose();
  _longPress.dispose();
  _offset.removeListener(markNeedsPaint);
  _showCursor.removeListener(_showHideCursor);
  super.detach();
  _foregroundRenderObject?.detach();
  _backgroundRenderObject?.detach();
}