reportFP method

void reportFP()

Reports First Paint (FP) when the first visual change is rendered. This includes any non-default background colors, borders, box shadows, or any visible content. FP always occurs before or at the same time as FCP.

Implementation

void reportFP() {
  if (_currentRouteMetrics == null) return;

  final metrics = _currentRouteMetrics!;
  // Don't report if already reported or not initialized
  if (metrics.fpReported || metrics.navigationStartTime == null) return;

  // Record first paint phase
  _loadingState.recordPhase(LoadingState.phaseFirstPaint, parameters: {
    'timeSinceNavigationStart': DateTime.now().difference(metrics.navigationStartTime!).inMilliseconds,
  });

  metrics.fpReported = true;
  metrics.fpTime = DateTime.now().difference(metrics.navigationStartTime!).inMilliseconds.toDouble();

  // Fire the FP callback
  if (onFP != null) {
    onFP!(metrics.fpTime, metrics.initialEvaluatedState);
  }

  // Fire the route-aware callback
  if (onRouteFP != null) {
    onRouteFP!(metrics.fpTime, metrics.routePath);
  }
}