dispose method
- @protected
- @mustCallSuper
Called when this object is removed from the tree permanently.
The framework calls this method when this State
object will never
build again. After the framework calls dispose, the State
object is
considered unmounted and the mounted property is false. It is an error
to call setState at this point. This stage of the lifecycle is terminal:
there is no way to remount a State
object that has been disposed.
Subclasses should override this method to release any resources retained by this object (e.g., stop any active animations).
If a State
's build method depends on an object that can itself
change state, for example a ChangeNotifier
or Stream
, or some
other object to which one can subscribe to receive notifications, then
be sure to subscribe and unsubscribe properly in initState,
didUpdateWidget, and dispose:
- In initState, subscribe to the object.
- In didUpdateWidget unsubscribe from the old object and subscribe to the new one if the updated widget configuration requires replacing the object.
- In dispose, unsubscribe from the object.
If you override this, make sure to end your method with a call to super.dispose().
See also:
- deactivate, which is called prior to dispose.
Implementation
@protected
@mustCallSuper
void dispose() {
assert(_debugLifecycleState == _StateLifecycle.ready);
assert(() {
_debugLifecycleState = _StateLifecycle.defunct;
return true;
}());
}