Cấu trúc các thư mục trong dự án như sau:
47
Chú thích nội dung các thư mục:
1. android: code của ứng dụng Android, thư mục này được Flutter tự động
tạo ra khi tạo mới dự án
2. build: thư mục chứa các file đầu ra để cài đặt lên các máy thật hoặc xuất
bản lên Google Play Store/Apple Store (định dạng .apk/.aab/.ipa)
3. ios: code của ứng dụng iOS, thư mục này được Flutter tự động tạo ra khi
tạo mới dự án
4. lib: chứa toàn bộ code Flutter của dự án
4.1. assets: chứa các tài nguyên tĩnh (static) của dự án, ví dụ như hình ảnh, fonts, icon…
4.2. app: chứa các code cấu hình chung (global) cho dự án, như cấu hình màu sắc, giao diện (themes), các file ngôn ngữ…
4.3. base: các class khuôn mẫu (blueprints) để các class khác kế thừa, ví dụ: BaseScreen (class mẫu cho các màn hình), BaseController (class xử lý logic của màn hình), BaseFirestoreModel (class cha dành cho việc ánh xạ dữ liệu từ Firestore thành các class nhất định, ví dụ như Invoice extends
BaseFirestoreModel)
4.4. helpers: các class tiện ích, cung cấp thêm chức năng cho các class sẵn có (extensions)
4.5. models: các class ánh xạ dữ liệu từ Firestore, ví dụ: Invoice, Building, Floor, Room, Student, Service…
4.6. repositories: các class chịu trách nhiệm xử lý dữ liệu từ Firestore, ví dụ: các thao tác lấy dữ liệu từ Firestore, các thao tác thêm/xóa/cập nhật dữ liệu… đều cần thông qua các repository class
48
4.7. screens: các màn hình/chức năng. Mỗi màn hình là một thư mục chứa, trong đó bao gồm screen, controller, widget con
4.7.1. shared: các màn hình dùng chung cho các quyền admin và student 4.7.2. admin: các màn hình dành cho quyền admin
4.7.3. student: các màn hình dành cho quyền student
4.8. widgets: các thành phần giao diện dùng chung cho dự án, có thể sử dụng lại nhiều lần ở các màn hình