See what happened on screen
Review Flutter screen evidence alongside session activity on Android, iOS, and macOS, with correlated visual trees when configured.
Capture the UI around an issue so you can compare what rendered with logs, gestures, and telemetry. Periodic screenshots create a visual session history, and manual capture lets you inspect a particular moment.
Flutter uses the native Android and iOS screenshot implementations. On macOS,
AnsightFlutterCaptureBoundary captures the Flutter compositor instead; its
automaticCaptureOptions use the same settings shown below:
final options = createOptionsBuilder()
.withSessionJpegCapture(
const AnsightSessionJpegCaptureOptions(
intervalMilliseconds: 2000,
quality: 60,
maxWidth: 480,
mode: AnsightSessionJpegCaptureMode.screenshotAndVisualTree,
captureKeyboardPresence: true,
),
)
.build();
Capture one frame:
await Ansight.instance.captureScreenFrame(
options: const AnsightSessionJpegCaptureOptions(
quality: 70,
maxWidth: 720,
),
);
The resident host may select host-side capture for a simulator or emulator. A physical iPhone or iPad uses in-app capture through the paired runtime. A macOS desktop app captures only Flutter content inside the capture boundary; native AppKit content is not included. Disable periodic capture during trend-focused measurements unless visual evidence is required.
Visual-Tree and Keyboard Metadata
AnsightSessionJpegCaptureMode supports:
screenshotOnly, the default, for JPEG frames without an SDK visual-tree snapshot.screenshotAndVisualTreeto capture registered native and Flutter sources with each app-owned screenshot and correlate them through the screenshot timestamp.screenshotWithVisualTreeOnTouchto capture visual trees on touch down and touch up instead of for every frame. Move and cancel events do not trigger a tree.
Install Flutter instrumentation or otherwise register a session visual-tree provider before selecting a tree mode. Touch-triggered mode also requires touch capture. Payloads follow the compact visual-tree v2 contract.
On macOS, the boundary captures a timestamp-correlated Flutter visual tree for
screenshotAndVisualTree. Pointer down and up records captured inside the
boundary retain Flutter tree evidence when touch-triggered mode is selected.
Pass automaticCaptureOptions: null for manual-only capture and call
AnsightFlutterCaptureController.capture(...) from app-owned scheduling.
captureKeyboardPresence defaults to false. It records native keyboard presence only—not keyboard contents or dimensions—and remains useful with host-owned simulator/emulator screenshots.