| Lưu dữ liệu Local trong Flutter: SharedPreferences hay SQLite?

Được viết bởi thanhdt vào ngày 27/01/2026 lúc 17:12 | 32 lượt xem

Bạn muốn lưu chế độ “Dark Mode” mà người dùng đã chọn? Hay bạn muốn lưu danh sách việc cần làm (Todo List) để khi tắt App bật lại vẫn còn?

Đó gọi là Local Storage (Lưu trữ nội bộ). Trong Flutter, có 3 cách phổ biến để làm việc này, tùy thuộc vào độ phức tạp của dữ liệu.

1. SharedPreferences (Dành cho dữ liệu nhỏ)

Đây là cách đơn giản nhất. Nó lưu dữ liệu dưới dạng Key-Value (Chìa khóa – Giá trị).

Khi nào dùng?

  • Lưu cài đặt App (Âm thanh: Bật/Tắt, Ngôn ngữ: Tiếng Việt).
  • Lưu Token đăng nhập.

Cách dùng:

// Lưu dữ liệu
final prefs = await SharedPreferences.getInstance();
await prefs.setInt('counter', 10);

// Lấy dữ liệu
final int? counter = prefs.getInt('counter');

2. SQLite (Dành cho dữ liệu có cấu trúc)

Nếu bạn cần lưu danh sách hàng ngàn sản phẩm có quan hệ với nhau (Product, Category…), SharedPreferences sẽ “gãy”. Lúc này bạn cần một Database thực thụ như SQLite.

Khi nào dùng?

  • App ghi chú, App quản lý chi tiêu offline.
  • Cần truy vấn phức tạp (Tìm kiếm, Sắp xếp).

Thư viện phổ biến: sqflite.

3. Hive (Dành cho tốc độ – NoSQL)

Hive là một Database siêu nhanh, viết hoàn toàn bằng Dart, không cần Native Code. Nó nhanh hơn SQLite và dễ dùng hơn rất nhiều.

Khi nào dùng?

  • Khi bạn cần hiệu năng cao và không muốn viết câu lệnh SQL (SELECT * FROM…).
  • Hầu hết các App hiện đại đều chuyển sang dùng Hive hoặc Isar.

Bảng so sánh nhanh

Tiêu chí SharedPreferences SQLite Hive
Loại dữ liệu Key-Value đơn giản Bảng (Table) quan hệ Object (NoSQL)
Tốc độ Nhanh (với ít dữ liệu) Trung bình Cực nhanh
Độ khó Dễ nhất Khó nhất Trung bình

Bạn đã biết cách lưu dữ liệu, lấy API, vẽ giao diện. Vậy Flutter có thực sự “thần thánh” như lời đồn không? Nó có nhược điểm gì so với đối thủ sừng sỏ là React Native?

Bài tiếp theo sẽ là màn so găng nảy lửa: Flutter vs React Native.

👉 So sánh Flutter với React Native & Native: Ai là vua?


Đón xem bài tiếp theo: So sánh Flutter với React Native: Nên học cái nào năm 2026?**