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
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