sayspec_flutter_recorder library

SaySpec Flutter recording SDK.

Drop-in instrumentation for a Flutter app under test. It records taps, drags, text entry, navigation, lifecycle and explicit markers with widget identity, monotonic timing and host-aligned clock calibration, then streams bounded batches to the SaySpec desktop app.

Classes

SaySpecClockCalibration
Aligns device monotonic time with host time.
SaySpecRecorder
Records widget-level Flutter evidence and streams it to the SaySpec host.
SaySpecRecorderEnvelope
Everything the host needs to attribute and interpret one recording session.
SaySpecRecorderEvent
One recorded interaction, navigation or lifecycle entry.
SaySpecRecorderOptions
Options for one recording session.
SaySpecRecorderOverlay
Small draggable Record/Stop control drawn above the app while SaySpec launched it for recording.
SaySpecRecorderSchema
Wire contract between the SaySpec Flutter recording SDK and the SaySpec desktop host.
SaySpecRecorderTransport
Posts bounded event batches to the SaySpec host and receives the host's pending recorder commands in the same HTTP round trip.
SaySpecWidgetIdentity
Best-effort stable identity for the widget that produced an event.

Enums

SaySpecRecordingState
Host-visible recording state.

Functions

calibrateClock({required String endpoint, required Stopwatch monotonic, String? sessionToken, int samples = 3, Client? client}) → Future<SaySpecClockCalibration>
Measures host↔device offset using the minimum-round-trip sample of samples requests, which is the standard NTP-style estimate.
describeTextField(Element editable) → SaySpecWidgetIdentity
Identity of the text field that owns a focused EditableText element.
describeWidget(Element element, {bool includeBounds = true}) → SaySpecWidgetIdentity
Derives a durable widget identity from a live Element.
isInteractiveWidget(Widget widget) → bool
Widgets a reviewer would name, so a recorded action points at them instead of at Flutter's internal viewport wrappers.