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