dispose method
Discards any resources used by the object. After this is called, the object is not in a usable state and should be discarded (calls to addListener and removeListener will throw after the object is disposed).
This method should only be called by the object's owner.
Implementation
@mustCallSuper
void dispose() {
_listeners = null;
}