ChangeNotifier class mixin
A class that can be extended or mixed in that provides a change notification API using VoidCallback for notifications.
It is O(1) for adding listeners and O(N) for removing listeners and dispatching notifications (where N is the number of listeners).
Using ChangeNotifier subclasses for data models
A data structure can extend or mix in ChangeNotifier to implement the Listenable interface and thus become usable with widgets that listen for changes to Listenables, such as ListenableBuilder.
The following example implements a simple counter that utilizes a
ListenableBuilder to limit rebuilds to only the Text widget containing
the count. The current count is stored in a ChangeNotifier subclass, which
rebuilds the ListenableBuilder's contents when its value is changed.
link
To create a local project with this code sample, run:
flutter create --sample=foundation.ChangeNotifier.1 mysample
In this case, the ChangeNotifier subclass encapsulates a list, and notifies
the clients any time an item is added to the list. This example only supports
adding items; as an exercise, consider adding buttons to remove items from
the list as well.
link
To create a local project with this code sample, run:
flutter create --sample=foundation.ChangeNotifier.2 mysample
See also:
- ValueNotifier, which is a ChangeNotifier that wraps a single value.
- Implemented types
- Implementers
- CupertinoTabController
- DataTableSource
- DraggableScrollableController
- FocusManager
- FocusNode
- InspectorSelection
- KeepAliveHandle
- MouseTracker
- MultiSelectableSelectionContainerDelegate
- PlatformRouteInformationProvider
- RenderEditablePainter
- RestorableProperty
- RestorationManager
- ScrollbarPainter
- ScrollController
- SemanticsOwner
- ShortcutManager
- ShortcutRegistry
- SliverOverlapAbsorberHandle
- SnapshotController
- SnapshotPainter
- TabController
- ToggleablePainter
- TwoDimensionalChildDelegate
- ValueNotifier
- ViewportOffset
Constructors
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 -
Register a closure to be called when the object changes.
override
-
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 (calls to addListener will throw after the object is disposed).
-
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 Methods
-
debugAssertNotDisposed(
ChangeNotifier notifier) → bool - Used by subclasses to assert that the ChangeNotifier has not yet been disposed.
-
maybeDispatchObjectCreation(
ChangeNotifier object) → void -
Dispatches event of the
object
creation to FlutterMemoryAllocations.instance.