queueRun<T> static method
PostFrameTask<T>
queueRun<T>(
- FutureOr<
T> action(), { - List<
ScrollController> scrollControllers = const [], - int maxWaitFrames = 5,
- bool waitForEndOfFrame = true,
- int endOfFramePasses = 2,
- Duration? timeout,
- PostFramePredicate? predicate,
- void onError(
- Object error,
- 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.
}