🚀 Flutter Dio API Handler
A lightweight, clean, and scalable API handling layer built on top of Dio.
Designed for simplicity with powerful error handling using ApiResult.
✨ Features
- ✅ Simple API calling structure
- ✅ Built-in success & failure handling (
ApiResult) - ✅ Centralized error handling
- ✅ Clean and minimal architecture
- ✅ Easy to plug into any Flutter project
- ✅ Supports all HTTP methods (GET, POST, PUT, DELETE)
📦 Installation
Add dependency:
dependencies:
dio_api_handler: 1.0.0
⚙️ Setup
Initialize the API client once (recommended in main.dart):
void main() {
DioApiHandler.init(
config: DioApiHandlerConfig(
baseUrl: () => "api.example.com",
token: () => null, // Optional
onError: (dynamic error, int? statusCode) {
debugPrint("Show Error pop up or message");
},
),
);
runApp(const MyApp());
}
🔑 Set Token (Optional)
ApiClient.setToken("your_access_token");
Remove token:
ApiClient.clearToken();
📡 Making API Calls
Future<ApiResult<Map<String, dynamic>>> getAllUsers() {
return ApiHandler.request<Map<String, dynamic>>(
request: () => ApiClient.dio.get("/users"),
response: (data) => data,
);
}
📊 Handling Response
final result = await getAllUsers();
if (result is ApiSuccess) {
print(result.data);
} else if (result is ApiFailure) {
print(result.message);
}
🧠 Custom Parsing
Future<ApiResult<List<User>>> getUsers() {
return ApiHandler.request<List<User>>(
request: () => ApiClient.dio.get("/users"),
response: (data) =>
(data as List).map((e) => User.fromJson(e)).toList(),
);
}
🏗️ Structure
lib/
├── api_client.dart
├── api_handler.dart
├── api_result.dart
└── exports.dart
❌ Error Handling
All errors are automatically wrapped into:
ApiFailure(
message: String,
errorDetails: dynamic
statusCode: int?,
)
🔄 Available Methods
- GET
- POST
- PUT
- DELETE
(Handled via ApiClient.dio)
🔥 Best Practices
- Initialize
ApiClientonce - Use
ApiHandler.requestfor all API calls - Avoid using Dio directly in UI
- Parse response inside
responsecallback
🚀 Future Improvements
- Token refresh & retry mechanism
- Request logging toggle
- Global error mapper
- Pagination support
📄 License
MIT License
💙 Support My Work
If you find this package helpful, consider sponsoring 🙌