collectFrames function

Future<FrameWindow> collectFrames(
  1. Future<void> action()
)

Collects FrameTimings while action runs and returns the window.

Implementation

Future<FrameWindow> collectFrames(Future<void> Function() action) async {
  final timings = <FrameTiming>[];
  // The callback receives a batch per frame — append, not replace.
  void onTimings(List<FrameTiming> batch) => timings.addAll(batch);
  SchedulerBinding.instance.addTimingsCallback(onTimings);
  try {
    await action();
  } finally {
    SchedulerBinding.instance.removeTimingsCallback(onTimings);
  }
  return FrameWindow(timings);
}