didDetachRenderer method

  1. @override
void didDetachRenderer([
  1. RenderObjectElement? flutterWidgetElement
])
override

Implementation

@override
void didDetachRenderer([flutter.RenderObjectElement? flutterWidgetElement]) {
  super.didDetachRenderer(flutterWidgetElement);

  // Keep the renderStyle → renderObject pairing alive during `willDetachRenderer`
  // because Flutter may still hit-test/paint the render tree until `unmount()`
  // completes. Removing the pairing too early can make renderStyle APIs (e.g.
  // `effectiveTransformMatrix`) think there's no render box and assert.
  renderStyle.removeRenderObject(flutterWidgetElement);

  if (!renderStyle.hasRenderBox()) {
    // Cancel running transition.
    renderStyle.cancelRunningTransition();

    // Cancel running animation.
    renderStyle.cancelRunningAnimation();

    ownerView.window.unwatchViewportSizeChangeForElement(this);
  }
}