endFrame method
Ends a frame and publishes collected timing information.
Implementation
void endFrame({Duration? totalDuration, Duration? buildDuration}) {
_needsPaint = false;
_hadBuildThisFrame = false;
_widgetFrameCount++;
final timing = WidgetFrameTiming(
frameNumber: _widgetFrameCount,
buildDuration: buildDuration ?? _currentBuildDuration,
layoutDuration: _currentLayoutDuration,
paintDuration: _currentPaintDuration,
totalDuration: totalDuration ?? Duration.zero,
timestamp: DateTime.now(),
);
_recentTimings.add(timing);
if (_recentTimings.length > _maxRecentTimings) {
_recentTimings.removeAt(0);
}
for (final callback in _frameTimingCallbacks) {
callback(timing);
}
}