Transport-agnostic HTTP contracts and concrete adapters for Dart and Flutter.
| Package | Purpose |
|---|---|
http_client_contracts |
Core transport-agnostic contract (HttpClient, request/response models, exceptions). |
http_client_dio |
dio adapter that implements HttpClient. |
http_client_http |
package:http adapter that implements HttpClient. |
http_client_contract_test |
Shared conformance test suite for adapter packages. |
example |
Flutter example app using the contracts and adapters. |
Keep feature/business code dependent on http_client_contracts only.
Pick and wire one concrete adapter at your composition root.
flowchart BT
subgraph App["Mobile/Web App"]
CR["Composition Root"]
subgraph Mods["Feature Modules"]
A["Auth"]
F["Feed"]
P["Profile"]
end
end
CP["Contract Package<br/>http_client_contracts<br/>(HttpClient interface)"]
AD["Adapter Package<br/>http_client_dio<br/>(DioHttpClient)"]
NET["External Network / APIs"]
A -->|"depends on"| CP
F -->|"depends on"| CP
P -->|"depends on"| CP
AD -->|"implements interface"| CP
CR -->|"creates/wires"| AD
AD --> NET
linkStyle 3 stroke-dasharray: 10 8
dart pub getUse contracts in app/business layers:
import 'package:http_client_contracts/http_client_contracts.dart';Wire one adapter in composition/infrastructure:
import 'package:http_client_contracts/http_client_contracts.dart';
import 'package:http_client_dio/http_client_dio.dart';
final HttpClient client = DioHttpClient();Run analysis/tests per package while working:
dart analyze
dart testFor adapter behavior validation, use http_client_contract_test in adapter package tests.
- Contracts:
packages/http_client_contracts/README.md - Dio adapter:
packages/http_client_dio/README.md - package:http adapter:
packages/http_client_http/README.md - Contract test suite:
packages/http_client_contract_test/README.md