networking
SKILL.md
Networking with Dio
- Use Dio as the primary HTTP client package.
- Use type-safe model classes with
fromJson/toJsonfactories for all request/response bodies. - Handle all HTTP status codes appropriately with typed exceptions (e.g.,
ServerException,NetworkException,UnauthorizedException). - Use proper request timeouts (
connectTimeout,receiveTimeout,sendTimeout).
Dio Interceptors
- Use interceptors for cross-cutting concerns:
- Auth Interceptor: Attach access tokens to headers, handle token refresh on 401.
- Logging Interceptor: Log requests/responses in debug mode via
AppLogger. - Error Interceptor: Transform
DioExceptioninto domain-specificFailuretypes.
- Register interceptors centrally via
injectablefor consistent behavior across all API calls.
Repository Pattern
- DataSources contain only raw Dio API calls — no business logic or mapping
- Repositories orchestrate between remote DataSources and local cache for network data
Retry & Resilience
- Implement retry logic with exponential backoff for transient failures (e.g., 500, timeout).
- Set a maximum retry count (default: 3 retries).
- Cache responses when appropriate to reduce network calls and improve offline UX.
Performance
- Parse JSON in background isolates for large responses (> 1MB) using
compute() - Do NOT block the UI thread with synchronous network operations
Security
- Store tokens via
flutter_secure_storage— never in source code orSharedPreferences - All API communication MUST use HTTPS
Weekly Installs
4
Repository
dhruvanbhalara/skillsGitHub Stars
14
First Seen
12 days ago
Security Audits
Installed on
opencode4
gemini-cli4
antigravity4
claude-code4
github-copilot4
amp4