WeakChangeNotifier class mixin

A class that can be extended or mixed in that provides a change notification API using VoidCallback for notifications. It is a modified version of Flutter's ChangeNotifier that uses WeakReference for its listeners.

This prevents the notifier from holding a strong reference to its listeners, a common source of memory leaks if removeListener is not called. Listeners are automatically marked for removal when they are garbage collected.

It is O(1) for adding listeners and O(N) for removing listeners and dispatching notifications (where N is the number of listeners).

Implemented types

Constructors

WeakChangeNotifier.new()

Properties

hashCode int
The hash code for this object.
no setterinherited
hasListeners bool
Whether any listeners are currently registered.
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited

Methods

addListener(VoidCallback listener) → void
Implements the Listenable interface.
override
addSingleExecutionListener(VoidCallback listener) → void
Registers a listener that will be called only once when the object notifies its listeners. After the listener is called, it is automatically removed.
addStrongRefListener({required VoidCallback strongRefListener}) → void
Register a closure to be called when the object notifies its listeners.
dispose() → void
Discards any resources used by the object. After this is called, the object is not in a usable state and should be discarded.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
notifyListeners() → void
Call all the registered listeners.
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that are notified when the object changes.
override
toString() String
A string representation of this object.
inherited

Operators

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

Static Properties

printGarbageCollectionStatus bool
getter/setter pair