callOnceWhenReady<T> method
void
callOnceWhenReady<T>({
- required VoidCallback callback,
- required ValueListenable<
T> trigger, - required bool readyWhen(
- T triggerValue
Runs callback
when trigger
's value satisfies the readyWhen
function.
When calling callOnceWhenReady :
- If trigger
's value satisfies readyWhen
, then the callback
will
be immediately triggered.
- Otherwise, the callback
will be triggered when trigger
's value
changes to equal readyWhen
.
Any listeners set by callOnceWhenReady will auto dispose, or be removed after the callback is run.
Implementation
void callOnceWhenReady<T>({
required VoidCallback callback,
required ValueListenable<T> trigger,
required bool Function(T triggerValue) readyWhen,
}) {
if (readyWhen(trigger.value)) {
callback();
} else {
VoidCallback? triggerListener;
triggerListener = () {
if (readyWhen(trigger.value)) {
callback();
trigger.removeListener(triggerListener!);
_listenables.remove(trigger);
_listeners.remove(triggerListener);
}
};
addAutoDisposeListener(trigger, triggerListener);
}
}