queueRun<T> static method

PostFrameTask<T> queueRun<T>(
  1. FutureOr<T> action(), {
  2. List<ScrollController> scrollControllers = const [],
  3. int maxWaitFrames = 5,
  4. bool waitForEndOfFrame = true,
  5. int endOfFramePasses = 2,
  6. Duration? timeout,
  7. PostFramePredicate? predicate,
  8. void onError(
    1. Object error,
    2. StackTrace stackTrace
    )?,
})

Enqueue an advanced post-frame run ensuring sequential execution order. Tasks are processed one at a time; each waits for its own stabilization parameters. Useful when multiple callers need serialized layout-sensitive updates.

Implementation

static PostFrameTask<T> queueRun<T>(
  FutureOr<T> Function() action, {
  List<ScrollController> scrollControllers = const [],
  int maxWaitFrames = 5,
  bool waitForEndOfFrame = true,
  int endOfFramePasses = 2,
  Duration? timeout,
  PostFramePredicate? predicate,
  void Function(Object error, StackTrace stackTrace)? onError,
}) {
  final entry = _QueuedPostFrameAction<T>(
    action: action,
    scrollControllers: scrollControllers,
    maxWaitFrames: maxWaitFrames,
    waitForEndOfFrame: waitForEndOfFrame,
    endOfFramePasses: endOfFramePasses,
    timeout: timeout,
    predicate: predicate,
    onError: onError,
  );
  _queue.add(entry);
  _processQueue();
  return entry.task; // Task is pre-created with its own completer.
}