DisposeAwareValueNotifier<T> mixin

A mixin for ValueNotifiers whose async methods may write to value after the notifier has already been disposed (e.g. an in-flight network request completes after the widget that owned the controller has been torn down).

Without this guard, the inherited ValueNotifier.notifyListeners throws an assertion error in debug mode when called on a disposed instance.

Apply this mixin to any ValueNotifier subclass whose value setter may be reached from an async context:

class MyController extends ValueNotifier<MyState>
    with DisposeAwareValueNotifier<MyState> { … }

After the notifier is disposed, any subsequent value write is silently discarded. Use the disposed getter to check disposal state if you also need to skip other side effects (e.g. setting up event subscriptions) that follow an async operation.

Superclass constraints
Mixin applications

Properties

disposed → bool
Whether dispose has been called on this notifier.
no setter
hashCode → int
The hash code for this object.
no setterinherited
hasListeners → bool
Whether any listeners are currently registered.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
value ↔ T
The current value stored in this notifier.
getter/setter pairinherited-getteroverride-setter

Methods

addListener(VoidCallback listener) → void
Register a closure to be called when the object changes.
inherited
dispose() → void
Discards any resources used by the object.
override
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
notifyListeners() → void
Call all the registered listeners.
inherited
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that are notified when the object changes.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited