distinct method
Only call callback when value actually changes (distinct)
Implementation
void distinct(void Function(T value) callback,
[bool Function(T previous, T current)? equals]) {
T? previousValue;
bool hasBeenSet = false;
void listener() {
final currentValue = value;
if (!hasBeenSet) {
hasBeenSet = true;
previousValue = currentValue;
callback(currentValue);
return;
}
final areEqual = equals?.call(previousValue as T, currentValue) ??
(previousValue == currentValue);
if (!areEqual) {
previousValue = currentValue;
callback(currentValue);
}
}
addListener(listener);
}