scheduleTransition<T> function

SchedulerTask<T> scheduleTransition<T>(
  1. FutureOr<T> update()
)

Schedules a non-urgent transition task returning a SchedulerTask handle.

Similar to startTransition, but provides the SchedulerTask token allowing cancellation and awaiting completion.

final task = scheduleTransition(() {
  filteredList.value = computeFilter(query.value);
});

Implementation

SchedulerTask<T> scheduleTransition<T>(FutureOr<T> Function() update) {
  _pendingTransitionCount.value++;
  _isTransitionPending.value = true;

  return BloomScheduler.schedule<T>(() async {
    try {
      return await update();
    } finally {
      final remaining = _pendingTransitionCount.value - 1;
      _pendingTransitionCount.value = remaining < 0 ? 0 : remaining;
      _isTransitionPending.value = _pendingTransitionCount.value > 0;
    }
  }, priority: TaskPriority.low);
}