1. Danh sách tính năng
2.14. Thống kê luyện tập
2.14.1. Xem biểu đồ thống kê luyện tập trong tuần
Tóm tắt
Người dùng có thể theo dõi lượng calo tiêu hao do tập luyện theo tuần (theo thời gian).
Dòng sự kiện
Các yêu cầu đặc biệt
Khoảng thời gian mặc định là trong tuần hiện tại.
Dòng sự kiện chính
Hành động của tác nhân Phản ứng của hệ thống 1. Người dùng chọn xem mục Cá
nhân
2. Hiển thị màn hình chứa biểu đồ theo dõi lượng calories tập luyện theo tuần
Dòng sự kiện phụ
Hành động của tác nhân Phản ứng của hệ thống Không có
68
Trạng thái hệ thống khi bắt đầu thực hiện use-case
Đã truy cập hệ thống thành công.
Trạng thái hệ thống sau khi thực hiện use-case
Trạng thái không thay đổi.
Điểm mở rộng
Không có.
2.14.2. Thay đổi thời gian biểu đồ thống kê luyện tập
Tóm tắt
Người dùng có thể thay đổi thời gian hiển thị lượng calories tập luyện của biều đồ.
Dòng sự kiện Dòng sự kiện chính
Hành động của tác nhân Phản ứng của hệ thống 1. Người dùng chọn xem mục Cá
nhân
2. Hiển thị màn hình chứa biểu đồ theo dõi lượng calories tập luyện theo tuần
3. Chọn thay đổi thời gian xem 4. Hiển thị công cụ lựa chọn khoảng thời gian
5. Xác nhận 6. Hiển thị lượng calories tập luyện theo ngày trong khoảng thời gian được chọn
Dòng sự kiện phụ
Hành động của tác nhân Phản ứng của hệ thống Không có
69
Các yêu cầu đặc biệt
Khoảng thời gian mặc định là trong tuần hiện tại.
Trạng thái hệ thống khi bắt đầu thực hiện use-case
Đã truy cập hệ thống thành công.
Trạng thái hệ thống sau khi thực hiện use-case
Trạng thái không thay đổi.
Điểm mở rộng
Không có.
2.15. Hình ảnh quá trình
2.15.1. Xem hình ảnh quá trình trước – sau
Tóm tắt
70
Dòng sự kiện
Các yêu cầu đặc biệt
Không có.
Trạng thái hệ thống khi bắt đầu thực hiện use-case
Đã truy cập hệ thống thành công.
Trạng thái hệ thống sau khi thực hiện use-case
Trạng thái không thay đổi.
Điểm mở rộng
Không có.
2.15.2. Cập nhật hình ảnh quá trình trước – sau
Tóm tắt
Người dùng có thể cập nhật hình ảnh trước và sau trong quá trình sử dụng ứng dụng.
Dòng sự kiện chính
Hành động của tác nhân Phản ứng của hệ thống 1. Người dùng chọn xem mục Cá
nhân
2. Hiển thị màn hình chứa công cụ hiển thị hình ảnh trước - sau của người dùng
Dòng sự kiện phụ
Hành động của tác nhân Phản ứng của hệ thống Không có
71
Dòng sự kiện
Các yêu cầu đặc biệt
Không có.
Trạng thái hệ thống khi bắt đầu thực hiện use-case
Đã truy cập hệ thống thành công.
Trạng thái hệ thống sau khi thực hiện use-case
Trạng thái không thay đổi.
Điểm mở rộng
Không có.
Dòng sự kiện chính
Hành động của tác nhân Phản ứng của hệ thống 1. Người dùng chọn xem mục Cá
nhân
2. Hiển thị màn hình chứa công cụ hiển thị hình ảnh trước - sau của người dùng
3. Chọn cập nhật hình ảnh trước/sau 4. Hiển thị công cụ để chọn hình ảnh từ thư viện hoặc chụp ảnh
5. Chọn hình ảnh từ thư viện 6. Cập nhật hình ảnh và lưu vào cơ sở dữ liệu
Dòng sự kiện phụ
Hành động của tác nhân Phản ứng của hệ thống
1. Chọn hình ảnh từ chụp ảnh 2. Chuyển hướng sang ứng dụng camera của thiết bị
3. Chụp ảnh 4. Cập nhât hình ảnh và lưu vào cơ sở dữ liệu
72
2.16. Thực hiện luyện tập
2.16.1. Bắt đầu phiên tập
Tóm tắt
Người dùng có thể bắt đầu phiên luyện tập dựa trên bộ bài tập đã chọn.
Dòng sự kiện Dòng sự kiện chính
Hành động của tác nhân Phản ứng của hệ thống
1. Người dùng chọn một bộ luyện tập 2. Hiển thị danh sách các bài tập 3. Chọn bắt đầu bộ luyện tập 4. Hiển thị màn hình phiên luyện tập 5. Chọn nút "Bắt đầu" 6. Phiên luyện tập bắt đầu
Dòng sự kiện phụ
Hành động của tác nhân Phản ứng của hệ thống Không có
73
Các yêu cầu đặc biệt
Không có.
Trạng thái hệ thống khi bắt đầu thực hiện use-case
Chưa bắt đầu phiên tập.
Trạng thái hệ thống sau khi thực hiện use-case
Phiên tập đang chạy.
Điểm mở rộng
Không có.
2.16.2. Tạm dừng phiên tập
Tóm tắt
Người dùng có thể tạm dừng phiên luyện tập đã chọn.
Dòng sự kiện
Các yêu cầu đặc biệt
Không có.
Dòng sự kiện chính
Hành động của tác nhân Phản ứng của hệ thống
1. Người dùng chọn một bộ luyện tập 2. Hiển thị danh sách các bài tập 3. Chọn bắt đầu bộ luyện tập 4. Hiển thị màn hình phiên luyện tập 5. Chọn nút "Bắt đầu" 6. Phiên luyện tập bắt đầu
7. Chọn nút "Tạm dừng" 8. Phiên luyện tập tạm dừng
Dòng sự kiện phụ
Hành động của tác nhân Phản ứng của hệ thống Không có
74
Trạng thái hệ thống khi bắt đầu thực hiện use-case
Phiên tập đang chạy.
Trạng thái hệ thống sau khi thực hiện use-case
Phiên tập đang tạm dừng.
Điểm mở rộng
Không có.
2.16.3. Tiếp tục phiên tập
Tóm tắt
Người dùng có thể tiếp tục phiên luyện tập đã chọn.
Dòng sự kiện
Các yêu cầu đặc biệt
Không có.
Dòng sự kiện chính
Hành động của tác nhân Phản ứng của hệ thống
1. Người dùng chọn một bộ luyện tập 2. Hiển thị danh sách các bài tập 3. Chọn bắt đầu bộ luyện tập 4. Hiển thị màn hình phiên luyện tập 5. Chọn nút "Bắt đầu" 6. Phiên luyện tập bắt đầu
7. Chọn nút "Tạm dừng" 8. Phiên luyện tập tạm dừng 9. Chọn nút "Tiếp tục" 10.Phiên luyện tập tiếp tục
Dòng sự kiện phụ
Hành động của tác nhân Phản ứng của hệ thống Không có
75
Trạng thái hệ thống khi bắt đầu thực hiện use-case
Phiên tập đang tạm dừng.
Trạng thái hệ thống sau khi thực hiện use-case
Phiên tập đang chạy.
Điểm mở rộng
Không có.
2.16.4. Bỏ qua bài tập
Tóm tắt
Người dùng có thể bỏ qua bài tập trong phiên luyện tập đã chọn.
Dòng sự kiện
Các yêu cầu đặc biệt
Không có.
Dòng sự kiện chính
Hành động của tác nhân Phản ứng của hệ thống
1. Người dùng chọn một bộ luyện tập 2. Hiển thị danh sách các bài tập 3. Chọn bắt đầu bộ luyện tập 4. Hiển thị màn hình phiên luyện tập 5. Chọn nút "Bắt đầu" 6. Phiên luyện tập bắt đầu
7. Chọn nút "Bỏ qua" 8. Phiên luyện tập bỏ qua bài tập hiện tại, hiển thị bài tập tiếp theo
Dòng sự kiện phụ
Hành động của tác nhân Phản ứng của hệ thống Không có
76
Trạng thái hệ thống khi bắt đầu thực hiện use-case
Phiên tập đang chạy.
Trạng thái hệ thống sau khi thực hiện use-case
Trạng thái không thay đổi.
Điểm mở rộng
Không có.
2.16.5. Kết thúc phiên tập
Tóm tắt
Người dùng có thể dừng hoàn toàn phiên luyện tập đã chọn.
Dòng sự kiện
Các yêu cầu đặc biệt
Không có.
Dòng sự kiện chính
Hành động của tác nhân Phản ứng của hệ thống
1. Người dùng chọn một bộ luyện tập 2. Hiển thị danh sách các bài tập 3. Chọn bắt đầu bộ luyện tập 4. Hiển thị màn hình phiên luyện tập 5. Chọn nút "Bắt đầu" 6. Phiên luyện tập bắt đầu
7. Chọn nút "Dừng" 8. Hiển thị dialog xác nhận đóng phiên luyện tập hay không? 9. 9. Chọn "Đồng ý" 10.Phiên luyện tập đóng lại, hiển thị
thống kê
Dòng sự kiện phụ
Hành động của tác nhân Phản ứng của hệ thống
77
Trạng thái hệ thống khi bắt đầu thực hiện use-case
Phiên tập đang chạy.
Trạng thái hệ thống sau khi thực hiện use-case
Phiên tập chưa bắt đầu.
Điểm mở rộng
Không có.
2.17. Đề xuất lộ trình
2.17.1. Xây dựng lộ trình tập luyện và dinh dưỡng
Tóm tắt
Người dùng có thể xây dựng một lộ trình gồm các bài tập và món ăn dựa trên thông tin cá nhân để đạt được mục tiêu đề ra.
78
Dòng sự kiện
Các yêu cầu đặc biệt
Không có.
Trạng thái hệ thống khi bắt đầu thực hiện use-case
Đã truy cập hệ thống thành công.
Trạng thái hệ thống sau khi thực hiện use-case
Trạng thái không thay đổi.
Dòng sự kiện chính
Hành động của tác nhân Phản ứng của hệ thống
1. Người dùng lần đầu đăng nhập 2. Hiển thị màn hình yêu cầu nhập các thông tin cơ bản + mục tiêu
3. Hoàn tất nhập các thông tin cơ bản + mục tiêu
4. Xây dựng lộ trình gồm danh sách các bài tập và món ăn mỗi ngày để đặt được mục tiêu
Dòng sự kiện phụ
Hành động của tác nhân Phản ứng của hệ thống 1. Người dùng hoàn thành một lộ
trình
2. Hiển thị thành quả, thống kê
3. Hiển thị đề xuất tạo lộ trình mới
4. Xác nhận 5. Hiển thị màn hình yêu cầu nhập
mục tiêu
6. Hoàn tất nhập mục tiêu 7. Xây dựng lộ trình dựa trên thông tin cơ bản và mục tiêu mới
79
Điểm mở rộng
Không có.
2.17.2. Cập nhật cân nặng
Tóm tắt
Người dùng có thể cập nhật cân năng trong lúc lộ trình đang diễn ra.
Dòng sự kiện
Các yêu cầu đặc biệt
Không có.
Trạng thái hệ thống khi bắt đầu thực hiện use-case
Đã truy cập hệ thống thành công.
Trạng thái hệ thống sau khi thực hiện use-case
Trạng thái không thay đổi.
Dòng sự kiện chính
Hành động của tác nhân Phản ứng của hệ thống
1. Người dùng chọn mục "Lộ trình" 2. Hiển thị màn hình chứa các thông tin về lộ trình
3. Chọn cập nhật cân nặng 4. Hiển thị công cụ nhập cân nặng mới
5. Nhập cân nặng mới 6. Lưu vào cơ sở dữ liệu
Dòng sự kiện phụ
Hành động của tác nhân Phản ứng của hệ thống Không có
80
Điểm mở rộng
Không có.
2.17.3. Cập nhật tiến trình
Tóm tắt
Người dùng có thể cập nhật tiến trình mỗi ngày của lộ trình tập luyện và dinh dưỡng.
Dòng sự kiện
Các yêu cầu đặc biệt
Không có.
Trạng thái hệ thống khi bắt đầu thực hiện use-case
Đã truy cập hệ thống thành công.
Trạng thái hệ thống sau khi thực hiện use-case
Trạng thái không thay đổi.
Dòng sự kiện chính
Hành động của tác nhân Phản ứng của hệ thống
1. Người dùng chọn mục "Lộ trình" 2. Hiển thị màn hình chứa các thông tin về lộ trình
3. Chọn xem tiến trình 4. Hiển thị danh sách tiến trình 5. Thực hiện tương tác với tập luyện
hoặc dinh dưỡng
6. Cập nhật các thông tin liên quan
7. Khi đạt được lượng calories tiêu chuẩn mỗi ngày
8. Cập nhật tiến trình và lưu vào cơ sở dữ liệu
Dòng sự kiện phụ
Hành động của tác nhân Phản ứng của hệ thống Không có
81 Điểm mở rộng Không có. 3. Sơ đồ hoạt động 3.1. Xác thực người dùng Truy cập hệ thống
82
Đăng xuất
83
84
3.4. Quản lý bài tập
85
3.6. Theo dõi bước chân
3.7. Theo dõi lượng thức ăn
86
3.9. Fasting (hỗ trợ quá trình không ăn uống)
3.10. Thống kê cân nặng
87
3.12. Thống kê bước chân
3.13. Thống kê dinh dưỡng
88
89
90
91
93
5. Kiến trúc
Kiến trúc hệ thống
94
105
CHƯƠNG IV – TỔNG KẾT 1. Kết quả đạt được
Thông qua đồ án này, nhóm đã hoàn toàn vận dụng được Flutter trong việc xây dựng ứng dụng di động cũng như tận dụng được GetX cho State Management để tối ưu hiệu suất ứng dụng. Bên cạnh đó, thông qua Flutter, nhóm cũng đã có thể làm việc với Firebase, SQLite để quản lý dữ liệu của ứng dụng.
Nhóm không chỉ tích lũy được những kiến thức và kinh nghiệm về Flutter mà còn có cả về luyện tập và dinh dưỡng một cách khoa học từ việc nghiên cứu cho ứng dụng này. Từ đó, nhóm đã xây dựng nên một hệ thống có thể hỗ trợ việc luyện tập và dinh dưỡng nhầm đạt được mục tiêu cân nặng một cách khoa học, trước tiên là dành cho bản thân sử dụng, và sau đó là dành cho tất cả mọi người có nhu cầu. Mã nguồn của ViPT được lưu trữ tại đây: GitHub Repository
Video minh họa sản phẩm: Youtube
2. Hạn chế
Tuy nhiên, hiện tại ứng dụng chỉ đang hoạt động trên nền tảng Android. Điều đó cho thấy rằng nhóm vẫn chưa tận dụng được hết khả năng của Flutter trong việc xây dựng ứng dụng đa nền tảng.
3. Hướng phát triển
Xây dựng lộ trình tự chọn
Tính năng này sẽ cho phép người dùng tùy chỉnh đề xuất lộ trình cho bản thân. Người dùng sẽ có thể tùy chọn những bài tập yêu thích của mình cũng như những món ăn yêu thích của mình. Từ sự tùy chỉnh đó của người dùng, hệ thống sẽ tự động đề xuất sao cho phù hợp với mục tiêu nhưng vẫn đảm bảo được tính khoa học của việc luyện tập và dinh dưỡng.
106 Tính năng này sẽ hỗ trợ cho người dùng theo dõi việc chạy bộ của mình. Tại đây, người dùng có thể theo dõi khoảng cách, thời gian đã chạy/đi bộ cũng như có thể xem quãng đường đã chạy/đi bộ một cách trực quan với bản đồ được tích hợp bên trong ứng dụng.
Thử thách
Tính năng này cho phép người dùng bắt đầu tham gia những hoạt động thử thách và đạt được những thành tựu, thành tích có thể chia sẻ với bạn bè thông qua mạng xã hội. Tại đây, sau khi hoàn thành thử thách, người dùng nhận được một huy hiệu trong ứng dụng và có thể xem thành tích của riêng mình cũng như của những người tham gia khác để thi đua, cạnh tranh và phát triển.
Thành tựu
Tính năng này cung cấp đa dạng những loại huy hiệu mà người dùng có thể đạt được thông qua hoạt động luyện tập, ăn uống, đi bộ, chạy bộ, thực hiện thử thách, v.v.
Âm thanh
Với tính năng này, người dùng có thể tùy chỉnh những bài nhạc sẽ được bật trong phiên luyện tập của mình cũng như có thể tùy chỉnh bật/tắt/thay đổi giọng nói hướng dẫn của phiên tập.
Hơn thế nữa
Hiện tại, hệ thống đề xuất lộ trình của ứng dụng đang hoạt động ở mức đề xuất dựa trên mục tiêu cân nặng. Từ đó cùng với những thông tin từ phía người dùng, hệ thống sẽ gợi ý một mức calories mục tiêu mỗi ngày cho người dùng trong việc luyện tập và ăn uống (kèm theo đó là danh sách bài tập và món ăn theo ngày được gợi ý để đạt được mức calories đó). Tuy nhiên, hệ thống có thể mở rộng mức đề xuất hơn nữa, không chỉ đề xuất dựa trên mục tiêu cân nặng của người dùng, mà thêm vào đó là cả mục tiêu về tăng cơ, giảm mỡ, giữ vóc dáng, v.v. Khi đó, hệ thống sẽ đòi hỏi nhiều thông tin đầu vào hơn từ người dùng, nhưng đổi lại thì việc đề xuất sẽ chính
107 xác hơn khi đầu ra của việc đề xuất sẽ không chỉ là calories mục tiêu mỗi ngày (kèm theo những cái đã kể trên), mà còn có thêm mục tiêu của khối lượng các thành phần dinh dưỡng chính mỗi ngày (protein, fat, carbs). Từ đó thì người dùng có thể linh hoạt hơn trong việc tùy chỉnh các mục tiêu cho việc đề xuất, điều này sẽ làm cho việc đề xuất của hệ thống trở nên phù hợp với từng người dùng khác nhau (đề xuất bài tập, món ăn mỗi ngày với lượng thời gian, thành phần chính xác hơn).
Việc cho phép người dùng có thể tùy chỉnh mục tiêu đề xuất một cách cụ thể là bởi vì đối với mỗi người, trên thực tế, sẽ có lượng calories mỗi ngày khác nhau, và sẽ có chênh lệch so với mức mà ứng dụng đề xuất. Cho nên khi người dùng có thể linh hoạt trong việc tùy chỉnh sẽ giúp cho hệ thống tạo lộ trình một cách chính xác hơn.
108
TÀI LIỆU THAM KHẢO
1. “Flutter documentation”. [Online]. Available: https://docs.flutter.dev/