scheduleTask<T> method

Future<T> scheduleTask <T>(
  1. TaskCallback<T> task,
  2. Priority priority,
  3. {String debugLabel,
  4. Flow flow}
)

以给定的priority调度给定的task ,并返回一个Future ,该Future会完成该task的最终返回值.

debugLabelflow用于将任务报告给时间轴 ,以供分析时使用.

Processing model

任务将帧之间执行,在优先顺序,但不包括由当前跳过任务schedulingStrategy . 任务应该很短(例如,最多一毫秒),以免导致常规帧回调延迟.

如果动画正在运行,包括例如,一个ProgressIndicator指示存在待决任务,则具有低于优先级的任务Priority.animation将不运行(至少,不与defaultSchedulingStrategy ;这可以通过以下方式配置schedulingStrategy ).

Implementation

Future<T> scheduleTask<T>(
  TaskCallback<T> task,
  Priority priority, {
  String debugLabel,
  Flow flow,
}) {
  final bool isFirstTask = _taskQueue.isEmpty;
  final _TaskEntry<T> entry = _TaskEntry<T>(
    task,
    priority.value,
    debugLabel,
    flow,
  );
  _taskQueue.add(entry);
  if (isFirstTask && !locked)
    _ensureEventLoopCallback();
  return entry.completer.future;
}