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
@override
@protected
@mustCallSuper
void dispose() {
super.dispose();
value.clear();
}