A class that can be used to derive a value based on data from another Listenable or Listenables.


The value will be recomputed when the provided listenable notifies the listeners that values have changed.

Simple Example

final email = ValueNotifier<String>('a');

// Determine whether or not the email is valid using a (hacky) validator.
final emailValid = ComputedValueNotifier(
  () => email.value.contains('@'),

// The function provided to ComputedValueNotifier is immediately executed,
// and the computed value is available synchronously.
print(emailValid.value); // prints 'false'.

// When the email ValueNotifier is changed, the function will be run again!
email.value = 'a@b.com';
print(emailValid.value); // prints 'true'.

Additional information

Thanks to Brian Egan for the gist