unmount method

  1. @override
void unmount()
override

Transition from the "inactive" to the "defunct" lifecycle state.

Called when the framework determines that an inactive element will never be reactivated. At the end of each animation frame, the framework calls unmount on any remaining inactive elements, preventing inactive elements from remaining inactive for longer than a single animation frame.

After this function is called, the element will not be incorporated into the tree again.

Any resources this element holds should be released at this point. For example, RenderObjectElement.unmount calls RenderObject.dispose and nulls out its reference to the render object.

See the lifecycle documentation for Element for additional information.

Implementations of this method should end with a call to the inherited method, as in super.unmount().

Implementation

@override
void unmount() {
  assert(
    !renderObject.debugDisposed!,
    'A RenderObject was disposed prior to its owning element being unmounted: '
    '$renderObject',
  );
  final RenderObjectWidget oldWidget = widget as RenderObjectWidget;
  super.unmount();
  assert(
    !renderObject.attached,
    'A RenderObject was still attached when attempting to unmount its '
    'RenderObjectElement: $renderObject',
  );
  oldWidget.didUnmountRenderObject(renderObject);
  _renderObject!.dispose();
  _renderObject = null;
}