| Kiến Trúc Quản Lý Trạng Thái Đa Tầng (Multi-Model) Với ScopedModel Thực Chiến

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

Khi ứng dụng Flutter của bạn phát triển lớn hơn, một Model đơn lẻ không thể gánh vác toàn bộ logic của ứng dụng. Bạn cần phân tách thành các Model nhỏ chuyên biệt (như UserModel, ProductModel, ThemeModel) và quản lý chúng khoa học.

1. Phân tách Model theo nhóm chức năng

  • UserModel: Quản lý thông tin tài khoản, đăng nhập, phân quyền.
  • EmployeeModel: Quản lý danh sách nhân sự, chức năng thêm/sửa/xóa nhân viên.
  • ConfigModel: Quản lý chế độ sáng/tối (Dark Mode), ngôn ngữ ứng dụng.

2. Lồng ghép Multi-Model lồng nhau trong cây Widget

Để cung cấp nhiều Model cùng lúc cho ứng dụng, bạn có thể xếp chồng các ScopedModel lên nhau ở gốc ứng dụng (main.dart):

ScopedModel<UserModel>(
  model: userModel,
  child: ScopedModel<EmployeeModel>(
    model: employeeModel,
    child: MyApp(),
  ),
)

3. Thiết kế MainModel gộp (Aggregate Pattern)

Giải pháp tối ưu hơn để tránh lồng nhau quá sâu là tạo một lớp MainModel kế thừa từ tất cả các Model con bằng cách sử dụng sức mạnh with (Mixins) của Dart:

class MainModel extends Model with UserModel, EmployeeModel, ConfigModel {}

Từ đó, toàn bộ ứng dụng chỉ cần lắng nghe duy nhất một thực thể MainModel cực kỳ gọn gàng!