GetStream is the lightest and most performative way of working
with events at Dart. You sintaxe is like StreamController, but it works
with simple callbacks. In this way, every event calls only one function.
There is no buffering, to very low memory consumption.
event add will add a object to stream. addError will add a error
to stream. listen is a very light StreamSubscription interface.
Is possible take the last value with value property.
debounce is similar to interval, but sends the last value.
Useful for Anti DDos, every time the user stops typing for 1 second,
When listener emits the last "value", when time hits,
it calls callback with the last "value" emitted. [...]
Similar to ever, but takes a list of listeners, the condition
for the callback is common to all listeners,
and the callback is executed to each one of them. The Worker is
common to all, so worker.dispose() will cancel all streams.
Ignore all changes in listener during time (1 sec by default) or until
condition is met (can be a bool expression or a bool Function()),
It brings the 1st "value" since the period of time, so
if you click a counter button 3 times in 1 sec, it will show you "1"
(after 1 sec of the first press)
click counter 3 times in 1 sec, it will show you "4" (after 1 sec)
click counter 2 times in 1 sec, it will show you "7" (after 1 sec). [...]
once() will execute only 1 time when condition is met and cancel
the subscription to the listener stream right after that.
condition defines when callback is called, and
can be a bool or a bool Function(). [...]