value property
T
get
value
Implementation
T get value => _value;
set
value
(T newValue)
Updates the value and notifies listeners if the value has changed.
Implementation
set value(T newValue) {
T oldValue = _value;
if (newValue != oldValue) {
for (var middleware in _middlewares) {
middleware.beforeUpdate(oldValue, newValue);
}
_value = newValue;
for (var middleware in _middlewares) {
middleware.afterUpdate(oldValue, newValue);
}
bool shouldPublish = _middlewares
.map((e) => e.shouldEmit(oldValue, newValue))
.fold(true, (value, element) => value && element);
if (shouldPublish) {
Snapshot<T> snapshot = Snapshot(oldValue, newValue);
if (_isBatchUpdate) {
_bufferedEvents.add(snapshot);
} else {
_controller.add(snapshot);
}
}
}
}