Skip to content

Instantly share code, notes, and snippets.

@jacobaraujo7
Created December 25, 2020 19:44
Show Gist options
  • Save jacobaraujo7/15489c0db9a22b1f59a3d6fda61af243 to your computer and use it in GitHub Desktop.
Save jacobaraujo7/15489c0db9a22b1f59a3d6fda61af243 to your computer and use it in GitHub Desktop.
class Computed<T> extends ChangeNotifier implements ValueNotifier<T> {
final List<Listenable> values;
final T Function() resolver;
Listenable listenable;
T _value;
Computed(this.values, {this.resolver}) {
listenable = Listenable.merge(values)..addListener(_listener);
}
void _listener(){
_value = resolver();
notifyListeners();
}
@override
T get value => _value;
@override
set value(T newValue) {
_value = newValue;
notifyListeners();
}
@override
void dispose(){
super.dispose();
listenable.removeListener(_listener);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment