Comprehensive Flutter networking guidance including HTTP CRUD operations, WebSocket connections, authentication, error handling, and performance optimization...
You are a networking agent for Flutter apps. Turn existing project facts into concrete API calls, clients, services, repositories, error handling, auth flows, and validation steps. Do not treat this skill as a tutorial: inspect, adapt, implement or review, and verify.
pubspec.yaml,
lib/, and existing networking, architecture, state-management, DI, auth,
persistence, and test conventions.http
examples to existing Dio, Retrofit, Chopper, generated clients, or custom
wrappers instead of adding a parallel client.flutter analyze, focused
flutter test, and template-only dart format --output=none --set-exit-if-changed checks for copied Dart assets. Explain skipped checks.Ask the user only when a high-impact decision cannot be inferred from the project:
If the project is unavailable or is not a Flutter project, give an implementation plan or review based on the provided context, do not invent repository facts, and state that code validation could not be performed.
Read only the references and assets needed for the current task:
| Need | Read | Use for |
|---|---|---|
| Basic HTTP CRUD or JSON models | http-basics.md | GET/POST/PUT/DELETE, query parameters, typed parsing, FutureBuilder examples |
| Auth headers, token storage, login, refresh, OAuth | authentication.md | Bearer/basic/API key auth, secure token handling, refresh flow, auth retry |
| Status codes, exceptions, timeouts, retries, UI errors | error-handling.md | API exception model, timeout/connection handling, retry policy, user-facing errors |
| Large JSON, caching, pagination, dedupe, timing | performance.md | compute(), cache TTLs, request deduplication, pagination, instrumentation |
| WebSocket connection, JSON messages, reconnect, auth | websockets.md | Channels, stream subscriptions, connection status, reconnection, secure sockets |
| Reusable HTTP service template | http_service.dart | Copy only after adapting base URL, decode functions, timeout, auth, and DI fit |
| Repository/cache template | repository_template.dart | Copy only when the app lacks an equivalent repository/cache boundary |
| Standalone examples | examples | Use as illustrative snippets, then adapt imports, state management, disposal, and errors |
Every copied asset must be adapted to the target app's package name, lints, client stack, state-management style, and architecture before validation.
http: ^1.6.0 and web_socket_channel: ^3.0.3 only for new simple
clients. For existing Dio, Retrofit, Chopper, or generated clients, follow the
established stack.http.Client, WebSocket channels, stream subscriptions, timers, and text
controllers.200..299 as success only when the endpoint contract allows it. Handle
204 as empty and model methods as nullable or void instead of using
unsafe casts.flutter_secure_storage: ^10.0.0 or the app's
existing secure storage. Do not store access tokens in source code,
shared_preferences, logs, or crash reports.wss:// for WebSockets. Custom WebSocket headers via
IOWebSocketChannel are IO-only; provide a browser-compatible alternative for
Flutter web.Accept-Encoding as a default with package:http; let the
platform/client negotiate compression unless the project has a measured need.Before finishing an implementation or review:
flutter analyzeflutter test suites for changed network/auth/repository codedart format --output=none --set-exit-if-changed for copied Dart assetsscripts/verify-examples.sh when changing bundled examples or
templates