flutter-dio

Original🇺🇸 English
Translated

HTTP Networking with Dio, Retry & Caching Patterns

3installs
Added on

NPX Install

npx skill4agent add dhruvanbhalara/skills flutter-dio

Tags

Translated version includes tags in frontmatter

Networking with Dio

  • Use Dio as the primary HTTP client package.
  • Use type-safe model classes with
    fromJson
    /
    toJson
    factories 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
      DioException
      into domain-specific
      Failure
      types.
  • Register interceptors centrally via
    injectable
    for 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 or
    SharedPreferences
  • All API communication MUST use HTTPS