stopAndAnalyse method

Future<ScreenPerformance> stopAndAnalyse(
  1. String screenName
)

Stop recording and analyse — call this after screen interaction

Implementation

Future<ScreenPerformance> stopAndAnalyse(String screenName) async {
  print('  ⏹️  Stopping recording, analysing frames...');

  List<FrameData> frames;
  try {
    frames = List.of(_frameEvents);
    if (frames.isEmpty) {
      // No Flutter.Frame events — fall back to timeline parsing.
      final timeline = await vmService.getVMTimeline();
      frames = parseTimelineFrames([
        for (final e in timeline.traceEvents ?? <TimelineEvent>[])
          if (e.json != null) e.json!.cast<String, dynamic>(),
      ]);
    }
  } finally {
    await _stopListening();
    // Always turn timeline recording back off — leaving it running burns
    // ring-buffer and CPU on-device for the rest of the session.
    try {
      await vmService.setVMTimelineFlags([]);
    } catch (_) {}
  }

  final memoryKb = await _getMemoryKb();

  return ScreenPerformance(
    screenName: screenName,
    frames: frames,
    memoryKb: memoryKb,
  );
}