- Dio & HTTP Client là gì?
Trong quá trình phát triển ứng dụng Flutter, ứng dụng thường cần trao đổi dữ liệu với máy chủ (Backend). Ví dụ, khi người dùng mở ứng dụng bán hàng, ứng dụng cần lấy danh sách sản phẩm từ cơ sở dữ liệu; khi đăng nhập, ứng dụng cần gửi tài khoản và mật khẩu đến máy chủ để xác thực.
Để thực hiện những công việc này, ứng dụng cần một thành phần giúp gửi yêu cầu và nhận phản hồi thông qua HTTP. Thành phần đó được gọi là HTTP Client.
Trong Flutter, lập trình viên có thể sử dụng thư viện http hoặc Dio. Dio là một thư viện HTTP Client dành cho Dart, hỗ trợ gửi yêu cầu HTTP và xử lý phản hồi từ máy chủ. Dio cung cấp nhiều chức năng như cấu hình thời gian chờ, quản lý Header, xử lý lỗi, tải lên và tải xuống tệp, cũng như sử dụng Interceptor để xử lý các yêu cầu một cách tập trung.
- Dio hoạt động như thế nào?
Khi người dùng thực hiện một thao tác cần dữ liệu từ máy chủ, ứng dụng Flutter sẽ gọi một hàm sử dụng Dio để gửi yêu cầu đến API. Máy chủ tiếp nhận yêu cầu, xử lý nghiệp vụ và trả về phản hồi. Sau đó, ứng dụng đọc dữ liệu nhận được và cập nhật giao diện.
Ví dụ, khi người dùng mở trang sản phẩm, quy trình có thể diễn ra như sau:
Flutter gửi yêu cầu GET → Backend nhận yêu cầu → Backend truy vấn cơ sở dữ liệu → Backend trả về danh sách sản phẩm → Flutter xử lý dữ liệu và hiển thị sản phẩm trên màn hình
Dio không trực tiếp truy vấn cơ sở dữ liệu. Nó chỉ đảm nhiệm việc giao tiếp HTTP giữa ứng dụng và máy chủ.
- Cách sử dụng Dio trong Flutter
Trước tiên, thêm thư viện Dio vào dự án bằng lệnh:
flutter pub add dio
Sau đó, có thể tạo một yêu cầu lấy danh sách sản phẩm:
import 'package:dio/dio.dart';
Future<void> getProducts() async {
final dio = Dio();
try {
final response = await dio.get(
'https://example.com/api/products',
);
print(response.data);
} on DioException catch (e) {
print('Lỗi khi lấy sản phẩm: ${e.message}');
}
}
Trong ví dụ trên, Dio() tạo đối tượng dùng để gửi yêu cầu HTTP. Phương thức get() gửi yêu cầu GET đến API. Từ khóa await cho phép chờ kết quả của thao tác bất đồng bộ mà không chặn toàn bộ giao diện ứng dụng.
response.data chứa dữ liệu mà máy chủ trả về. Nếu yêu cầu gặp lỗi, chương trình có thể bắt lỗi thông qua DioException.
Địa chỉ example.com chỉ là địa chỉ minh họa. Khi áp dụng vào dự án thật, cần thay bằng địa chỉ API thực tế.
- Một số chức năng quan trọng của Dio
- Request và Response: Dio hỗ trợ gửi yêu cầu và nhận phản hồi từ máy chủ thông qua các phương thức HTTP như
GET,POST,PUT,PATCHvàDELETE. - Base URL: Có thể thiết lập địa chỉ API chung để không phải viết lại toàn bộ URL trong từng yêu cầu.
- Timeout: Cho phép quy định thời gian tối đa chờ kết nối hoặc chờ máy chủ phản hồi. Nếu vượt quá thời gian này, ứng dụng có thể xử lý lỗi phù hợp.
- Interceptor: Cho phép can thiệp vào quá trình gửi yêu cầu hoặc nhận phản hồi. Ví dụ, ứng dụng có thể tự động thêm token xác thực vào Header của các yêu cầu.
- Upload và Download: Hỗ trợ tải tệp lên máy chủ hoặc tải tệp từ máy chủ về thiết bị.
- Khi nào nên sử dụng Dio?
Dio phù hợp với những ứng dụng có nhiều chức năng giao tiếp với API, cần quản lý token, xử lý lỗi tập trung hoặc tải dữ liệu và tệp. Đối với ứng dụng nhỏ, thư viện http cũng có thể đáp ứng tốt nhu cầu cơ bản.
Khi phát triển dự án thực tế, nên tổ chức phần gọi API trong các lớp Service hoặc Repository thay vì viết trực tiếp trong mọi widget. Cách tổ chức này giúp mã nguồn dễ đọc, dễ kiểm thử và dễ bảo trì hơn.
- Kết luận
Dio là một thư viện quan trọng trong quá trình phát triển ứng dụng Flutter có kết nối Backend. Việc hiểu cách gửi yêu cầu, nhận phản hồi và xử lý lỗi bằng Dio giúp lập trình viên xây dựng các chức năng như đăng nhập, lấy danh sách sản phẩm và tạo đơn hàng. Dio thường được sử dụng kết hợp với REST API, JSON Serialization và API Error Handling để hoàn thiện quá trình giao tiếp dữ liệu.








Khoá học lập trình game con rắn cho trẻ em




