ChangeNotifier class Null safety
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).
Improve rebuilds performance using AnimatedBuilder
Despite the name, AnimatedBuilder is not limited to Animations. Any subtype of Listenable (such as ChangeNotifier and ValueNotifier) can be used with an AnimatedBuilder to rebuild only certain parts of a widget when the Listenable notifies its listeners. This technique is a performance improvement that allows rebuilding only specific widgets leaving others untouched.
The following example implements a simple counter that utilizes an
AnimatedBuilder to limit rebuilds to only the Text widget. The current count
is stored in a ValueNotifier, which rebuilds the AnimatedBuilder's contents
when its value is changed.
To create a local project with this code sample, run:
flutter create --sample=cupertino.AnimatedBuilder.2 mysample
flutter create --sample=cupertino.AnimatedBuilder.2 mysample
See also:
- ValueNotifier, which is a ChangeNotifier that wraps a single value.
- Implemented types
- Implementers
- CupertinoTabController
- DataTableSource
- DraggableScrollableController
- FocusManager
- FocusNode
- KeepAliveHandle
- MouseTracker
- MultiSelectableSelectionContainerDelegate
- PlatformRouteInformationProvider
- RasterWidgetController
- RasterWidgetDelegate
- RenderEditablePainter
- RestorableProperty
- RestorationManager
- ScrollbarPainter
- ScrollController
- SemanticsOwner
- ShortcutManager
- ShortcutRegistry
- SliverOverlapAbsorberHandle
- TabController
- ToggleablePainter
- ValueNotifier
- ViewportOffset
Constructors
Properties
- hashCode → int
-
The hash code for this object.
read-onlyinherited
- hasListeners → bool
-
Whether any listeners are currently registered.
protected">@protectedread-only
- runtimeType → Type
-
A representation of the runtime type of the object.
read-onlyinherited
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).
mustCallSuper">@mustCallSuper
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a non-existent method or property is accessed.
inherited
-
notifyListeners(
) → void -
Call all the registered listeners.
protected">@protectedvisibleForTesting">@visibleForTesting
-
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.