ValueNotifier<T> class
A ChangeNotifier that holds a single value.
When value is replaced with a new value that is not equal to the old
value as evaluated by the equality operator (==), this class notifies its
listeners.
Limitations
Notifications are triggered based on equality (==), not on mutations
within the value itself. As a result, changes to mutable objects that do not
affect their equality will not cause listeners to be notified.
For example, a ValueNotifier<List<int>> will not notify listeners when
the contents of the existing list are modified in-place; it only notifies
when a new value is assigned to the value property (i.e. value = newValue),
where equality is determined by ==.
Because of this behavior, ValueNotifier is best used with immutable data types.
For mutable data types, consider extending ChangeNotifier directly and calling notifyListeners manually when changes occur.
// Copyright 2013 The Flutter Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// ignore_for_file: avoid_print
import 'package:listen/listen.dart';
void main() {
final counter = ValueNotifier<int>(0);
counter.addListener(() {
print('Value changed: ${counter.value}');
});
counter.value = 5; // Prints: Value changed: 5
counter.value = 10; // Prints: Value changed: 10
counter.value = 10; // Does not print because the value is == 10
counter.dispose();
}
- Inheritance
-
- Object
- ChangeNotifier
- ValueNotifier
- Implemented types
- Implementers
Constructors
- ValueNotifier(T _value)
- Creates a ChangeNotifier that wraps this value.
Properties
- 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 pairoverride-getter
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.
inherited
-
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.
override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited