Picto doesn't capture network requests by default — wrap an http.Client you already use in
PictoHttpClient to turn it on:
import 'package:http/http.dart' as http;
import 'package:picto/network_capture.dart';
final client = PictoHttpClient(http.Client());
Use client exactly as you would the one it wraps — get/post/send/etc. all behave identically. Only what gets recorded changes.
What gets recorded#
Method, URL, HTTP status code, and how long the request took — nothing else. A request that fails at the transport level (no connection, DNS failure, timeout) still records, with a null status code instead of a fabricated one.
What never gets recorded#
Headers and request/response bodies are never captured — not "not yet implemented," a firm design decision. Either can carry an
Authorization header, a session cookie, or arbitrary user data this recorder has no reliable way to redact. See
What We Capture for the same policy applied to on-screen content.
Query parameters are stripped from the recorded URL by default too, since they commonly carry tokens or PII (?token=...,
?email=...) — there's no reliable way to tell those apart from a harmless ?page=2
by shape alone, so the default treats all of them the same way. The real request is unaffected; only the recorded copy loses the query string.
// Keep query parameters in the recording (opt in explicitly):
final client = PictoHttpClient(http.Client(), redactQueryParameters: false);
Watching it in replay#
Recorded requests show up on the event timeline like any other tagged moment — see Tags for how the underlying mechanism works. There's no dedicated dashboard tab for this yet; it's visible per-session in the replay viewer only.