FramePerfRecord class

An immutable per-frame performance record captured by FramePerfWatcher.

Carries the fields FrameTiming actually exposes (buildMicros, rasterMicros, vsyncOverheadMicros, totalSpanMicros, vsyncStartUs) plus the per-frame attribution join, blocks: a map from block name (a widget build span, a layout span, ...) to how much time it consumed inclusive of its nested children (micros), exclusive of them (selfMicros), and how many times it ran during that frame (count).

blocks serializes to a plain JSON object of nested objects:

{"Widget.build": {"micros": 600, "selfMicros": 400, "count": 5}}

Constructors

FramePerfRecord({required int frameNumber, required int buildMicros, required int rasterMicros, required int vsyncOverheadMicros, required int totalSpanMicros, required DateTime time, required Map<String, ({int count, int micros, int selfMicros})> blocks, int? vsyncStartUs, int? atUs, String? interactionId, String? linkedBy})

Properties

atUs → int
Monotonic microsecond timestamp from FlutterTimeline.now, captured at construction unless the caller supplies one explicitly. Comparable across every telescope record type regardless of wall-clock skew; time stays the wall-clock field for display.
final
blocks → Map<String, ({int count, int micros, int selfMicros})>
Per-block attribution for this frame: block name to its inclusive duration (micros), its duration exclusive of directly nested children (selfMicros), and how many times it ran.
final
buildMicros → int
final
frameNumber → int
The engine's frame number, as reported by FrameTiming.frameNumber.
final
hashCode → int
The hash code for this object.
no setterinherited
interactionId → String?
Correlates this record to others captured during the same logical interaction (a tap, a navigation), when the capturing site knows one.
final
linkedBy → String?
How interactionId was derived: zone | frame | window. window means no interaction was open at capture: interactionId is null and analysis joins the record by atUs. Null when the capturing site does not link at all.
final
rasterMicros → int
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
time → DateTime
final
totalSpanMicros → int
final
vsyncOverheadMicros → int
final
vsyncStartUs → int?
The vsync signal timestamp for this frame, from FrameTiming.timestampInMicroseconds(FramePhase.vsyncStart).
final

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toJson() → Map<String, dynamic>
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited