detach method

  1. @override
void detach()
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() {
  _painter?.dispose();
  _painter = null;
  super.detach();
  // Since we're disposing of our painter, we won't receive change
  // notifications. We mark ourselves as needing paint so that we will
  // resubscribe to change notifications. If we didn't do this, then, for
  // example, animated GIFs would stop animating when a DecoratedBox gets
  // moved around the tree due to GlobalKey reparenting.
  markNeedsPaint();
}