- Services
- Case Studies
- Technologies
- NextJs development
- Flutter development
- NodeJs development
- ReactJs development
- About
- Contact
- Tools
- Blogs
- FAQ
How to Integrate Dio for API Calls in Flutter
Includes setup, basic requests, error handling, interceptors, and best practices for robust API integration.

How to integrate Dio for API calls in Flutter
In today’s interconnected world, almost every mobile application needs to communicate with web servers. When building Flutter applications, Dio stands out as a powerful and flexible HTTP client that makes API integration a breeze. Let’s dive into how we can effectively implement Dio in our Flutter projects.

Getting Started with Dio
First things first, we need to add Dio to our project. Add the following dependency to your pubspec.yaml file:
dependencies: dio: ^5.3.2After adding the dependency, run:
flutter pub getSetting Up Dio Client
Creating a well-structured Dio client is crucial for maintaining clean and maintainable code. Here’s how we can set up a basic Dio instance:
import 'package:dio/dio.dart';
class DioClient { final Dio _dio = Dio();
DioClient() { _dio.options.baseUrl = 'https://api.example.com'; _dio.options.connectTimeout = const Duration(milliseconds: 5000); _dio.options.receiveTimeout = const Duration(milliseconds: 3000);
// Add interceptors for logging _dio.interceptors.add(LogInterceptor( requestBody: true, responseBody: true, )); }}
Making API Calls
Now that we have our Dio client set up, let’s look at how to make different types of API calls:
GET Request
Future<dynamic> getUsers() async { try { final response = await _dio.get('/users'); return response.data; } catch (error) { throw handleError(error); }}POST Request
Future<dynamic> createUser(Map<String, dynamic> userData) async { try { final response = await _dio.post('/users', data: userData); return response.data; } catch (error) { throw handleError(error); }}Error Handling
Proper error handling is crucial for a robust application. Here’s a simple error handler:
dynamic handleError(DioError error) { switch (error.type) { case DioErrorType.connectionTimeout: return 'Connection timed out'; case DioErrorType.receiveTimeout: return 'Receive timeout in connection'; case DioErrorType.badResponse: return _handleErrorResponse(error.response?.statusCode); default: return 'Something went wrong'; }}
String _handleErrorResponse(int? statusCode) { switch (statusCode) { case 400: return 'Bad request'; case 401: return 'Unauthorized'; case 403: return 'Forbidden'; case 404: return 'Not found'; case 500: return 'Internal server error'; default: return 'Something went wrong'; }}Using Interceptors
Interceptors are powerful tools in Dio that allow you to monitor and transform requests and responses:
class AuthInterceptor extends Interceptor { @override void onRequest(RequestOptions options, RequestInterceptorHandler handler) { options.headers['Authorization'] = 'Bearer your-token-here'; handler.next(options); }}
// Add to Dio instance_dio.interceptors.add(AuthInterceptor());Best Practices
- Always implement proper error handling
- Use interceptors for common operations like adding headers
- Set appropriate timeouts
- Implement retry mechanisms for failed requests
- Use response type adapters for automatic JSON parsing
Remember to handle the disposal of Dio instances properly when they’re no longer needed to prevent memory leaks.

สร้างเว็บไซต์ 1 เว็บ ต้องใช้งบเท่าไหร่? เจาะลึกทุกองค์ประกอบ website development cost อยากสร้างเว็บไซต์แต่ไม่มั่นใจในเรื่องของงบประมาณ อ่านสรุปเจาะลึกตั้งแต่ดีไซน์, ฟังก์ชัน และการดูแล พร้อมตัวอย่างงบจริงจาก Till it’s done ที่แผนชัด งบไม่บานปลายแน่นอน
Next.js สอน 14 ขั้นตอนเบื้องต้น: สร้างโปรเจกต์แรกใน 30 นาที เริ่มต้นกับ Next.js ใน 14 ขั้นตอนเพียงแค่ 30 นาที พร้อม SSR/SSG และ API Routes ด้วยตัวอย่างโค้ดง่าย ๆ อ่านต่อเพื่อสร้างโปรเจ็กต์แรกได้ทันทีที่นี่
วิธีสมัคร Apple Developer Account เพื่อนำแอปขึ้น App Store ทีละขั้นตอน อยากปล่อยแอปบน App Store ระดับโลก มาอ่านคู่มือสมัคร Apple Developer Account พร้อมเคล็ดลับ TestFlight และวิธีอัปโหลดที่ง่ายในบทความเดียวนี้ได้เลย
TypeScript Interface คืออะไร? อธิบายพร้อมวิธีใช้และข้อแตกต่างจาก Type เรียนรู้วิธีใช้ TypeScript Interface เพื่อสร้างโครงสร้างข้อมูลที่ปลอดภัยและเข้าใจง่าย พร้อมเปรียบเทียบข้อดีข้อแตกต่างกับ Type ที่คุณต้องรู้ ถูกรวมเอาไว้ในบทความนี้แล้ว
Material-UI (MUI) คืออะไร อยากสร้าง UI สวยงามและเป็นมืออาชีพในเวลาอันรวดเร็วใช่ไหม มาทำความรู้จักกับ Material-UI (MUI) ที่ช่วยให้คุณพัฒนาแอปพลิเคชันบน React ได้ง่ายและดูดีในทุกอุปกรณ์
เปรียบเทียบ 3 วิธีติดตั้ง install node js บน Ubuntu: NVM vs NodeSource vs Official Repo แบบไหนดีที่สุด? เรียนรู้วิธีติดตั้ง Node.js บน Ubuntu ด้วย NVM, NodeSource หรือ Official Repo เลือกวิธีที่เหมาะกับความต้องการของคุณ พร้อมเปรียบเทียบ เพื่อการพัฒนาที่มีประสิทธิภาพ! พูดคุยกับซีอีโอ
We'll be right here with you every step of the way.
We'll be here, prepared to commence this promising collaboration.
Whether you're curious about features, warranties, or shopping policies, we provide comprehensive answers to assist you.