Tải bản đầy đủ (.pdf) (52 trang)

Tìm hiểu FLUTTER và xây dựng ứng dụng hướng dẫn nấu ăn (báo cáo cuối kì đồ án 1)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.5 MB, 52 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

TRẦN ANH TUẤN-19522481
VÕ ĐƠNG PHONG-19522015

BÁO CÁO ĐỒ ÁN 1
TÌM HIỂU FLUTTER VÀ XÂY DỰNG ỨNG DỤNG
HƯỚNG DẪN NẤU ĂN

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

TP. HỒ CHÍ MINH, 2022


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

TRẦN ANH TUẤN - 19522481
VÕ ĐƠNG PHONG - 19522015

BÁO CÁO ĐỒ ÁN 1
TÌM HIỂU FLUTTER VÀ XÂY DỰNG ỨNG DỤNG
HƯỚNG DẪN NẤU ĂN

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN
ThS HUỲNH HỒ THỊ MỘNG TRINH



TP. HỒ CHÍ MINH, 2022


LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đại học
Công nghệ Thơng tin – ĐHQG TP.HCM, nhóm em đã được trang bị các kiến thức cơ
bản, các kỹ năng thực tế để có thể hồn thành Đồ án 1 của mình. Để hồn thành Đồ án
này, nhóm em xin gửi lời cảm ơn chân thành đến:
Đầu tiên, nhóm em xin chân thành cảm ơn và bày tỏ lòng biết ơn sâu sắc nhất đến
ThS Huỳnh Hồ Thị Mộng Trinh, cảm ơn cơ đã tận tình chỉ bảo, hướng dẫn, truyền đạt
những kinh nghiệm, kiến thức chuyên môn và các tài liệu liên quan để nhóm có thể hồn
thanh đề tài tốt nhất. Nhóm xin gửi đến cơ những lời tri ân nhất đối với những điều mà
cơ đã dành cho nhóm.
Nhóm cũng xin chân thành cảm ơn toàn thể quý thầy cơ trong khoa Cơng Nghệ
Phần Mềm và tồn thể q thầy cô của Trường Đại Học Công Nghệ Thông Tin TP.HCM.
Q thầy cơ đã ln tận tình truyền đạt những kiến thức, kinh nghiệm quý báu cũng như
tạo mọi điều kiện thuận lợi nhất cho nhóm trong suốt q trình học tập tại trường và đặc
biệt hơn là trong suốt quá trình thực hiện đồ án này.


NHẬN XÉT CỦA GIÁO VIÊN
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................

...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................


MỤC LỤC

CHƯƠNG 1. TỔNG QUAN ................................................................................................... 1
1.1. Lý do chọn đề tài ........................................................................................................... 1
1.2. Các ứng dụng tương tự .................................................................................................. 2
1.2.1. Ứng dụng Sách nấu ăn ............................................................................................. 2
1.2.2. Ứng dụng Cookpad .................................................................................................. 2
1.2.3. Ứng dụng Cooky ...................................................................................................... 3
1.3. Mục tiêu của đề tài ........................................................................................................ 4
1.4. Đối tượng nghiên cứu.................................................................................................... 4
1.5. Phạm vi nghiên cứu ....................................................................................................... 5
CHƯƠNG 2. TÌM HIỂU CƠNG NGHỆ ................................................................................ 6
2.1. Lịch sử ........................................................................................................................... 6
2.2. Tổng quan ...................................................................................................................... 6
2.2.1. Ngôn ngữ Dart .......................................................................................................... 6
2.2.2. Complier: AOT và JIT ............................................................................................. 7
2.2.3. Cấu trúc .................................................................................................................... 7
2.3. Ưu, nhược điểm ............................................................................................................. 9
2.3.1. Ưu điểm .................................................................................................................... 9

2.3.2. Nhược điểm .............................................................................................................. 9
2.4. Khi nào nên sử dụng Flutter ........................................................................................ 10
2.5. So sánh cơ bản Flutter và React Native ...................................................................... 10
CHƯƠNG 3. PHÂN TÍCH THIẾT KẾ ỨNG DỤNG .......................................................... 12
3.1. Phân tích ...................................................................................................................... 12


3.1.1. Danh sách yêu cầu hệ thống ................................................................................... 12
3.1.1. Đặc tả Usecase ...................................................................................................... 14
3.2. Thiết kế ........................................................................................................................ 24
3.2.1. Thiết kế cơ sở dữ liệu ............................................................................................. 24
3.2.2. Thiết kế giao diện .................................................................................................. 30
3.2.2.1.

Màn hình khởi động ứng dụng .......................................................................... 31

3.2.2.2.

Màn hình đăng nhập .......................................................................................... 32

3.2.2.3.

Màn hình trang chủ ........................................................................................... 33

3.2.2.4.

Màn hình chi tiết cơng thức nấu ăn ................................................................... 34

3.2.2.5.


Màn hình bình luận bài đăng ............................................................................. 35

3.2.2.6.

Màn hình trang bếp của người dùng khác ......................................................... 36

3.2.2.7.

Màn hình tìm kiếm cơng thức nấu ăn ................................................................ 37

3.2.2.8.

Màn hình đăng cơng thức .................................................................................. 38

3.2.2.9.

Màn hình trang bếp cá nhân .............................................................................. 40

CHƯƠNG 4. KẾT LUẬN ..................................................................................................... 43
4.1. Kết quả đạt được ......................................................................................................... 43
4.2. Ưu điểm, hạn chế ........................................................................................................ 43
4.2.1. Ưu điểm .................................................................................................................. 43
4.2.2. Nhược điểm ............................................................................................................ 43
4.3. Hướng phát triển .......................................................................................................... 43


MỤC LỤC HÌNH ẢNH
Hình 1. Ứng dụng Sách nấu ăn ...................................................................................................... 2
Hình 2. Ứng dụng Cookpad ........................................................................................................... 3
Hình 3. Ứng dụng Cooky............................................................................................................... 4

Hình 4. Logo Flutter ...................................................................................................................... 6
Hình 5. Cấu trúc Flutter ................................................................................................................. 8
Hình 6. Sơ đồ Usecase ................................................................................................................. 14
Hình 7. Sơ đồ Logic ..................................................................................................................... 25
Hình 8. Màn hình khởi động ứng dụng ....................................................................................... 31
Hình 9. Màn hình đăng nhập ....................................................................................................... 32
Hình 10. Màn hình trang chủ ....................................................................................................... 33
Hình 11. Màn hình chi tiết cơng thức nấu ăn .............................................................................. 34
Hình 12. Màn hình bình luận bài đăng ........................................................................................ 35
Hình 13. Màn hình trang bếp của người khác ............................................................................. 36
Hình 14. Màn hình tìm kiếm cơng thức nấu ăn ........................................................................... 37
Hình 15. màn hình đăng cơng thức nấu ăn .................................................................................. 38
Hình 16. Màn hình trang bếp cá nhân ......................................................................................... 40
Hình 17. Sơ đồ kiến trúc hệ thống ............................................................................................... 42


MỤC LỤC BẢNG
Bảng 1. Bảng so sánh Flutter với React Native ........................................................................... 11
Bảng 2. Danh sách các yêu cầu nghiệp vụ .................................................................................. 12
Bảng 3. Danh sách các actors ...................................................................................................... 14
Bảng 4. Danh sách các Use-case ................................................................................................. 14
Bảng 5. Đặc tả chức năng đăng nhập bằng google ...................................................................... 15
Bảng 6. Đặc tả chức năng xem công thức nấu ăn ........................................................................ 16
Bảng 7. Đặc tả chức năng lưu món ăn ......................................................................................... 16
Bảng 8. Đặc tả chức năng tìm kiếm cơng thức nấu ăn ................................................................ 17
Bảng 9. Đặc tả chức năng like bài đăng ...................................................................................... 18
Bảng 10. Đặc tả chức năng bình luận bài đăng ........................................................................... 19
Bảng 11. Đặc tả chức năng xem thông tin trang bếp của người khác ......................................... 19
Bảng 12. Đặc tả chức năng kết bạn bếp....................................................................................... 20
Bảng 13. Đặc tả chức năng quản lý công thức nấu ăn ................................................................. 20

Bảng 14. Đặc tả chức năng quản lý trang bếp cá nhân ................................................................ 21
Bảng 15. Đặc tả chức năng đăng xuất ......................................................................................... 23
Bảng 16. Danh sách các bảng trong sơ đồ Logic ........................................................................ 25
Bảng 17. Danh sách trường bảng USER ..................................................................................... 26
Bảng 18. Danh sách trường bảng FOOD ..................................................................................... 27
Bảng 19. Danh sách trường bản COMMENT ............................................................................. 27
Bảng 20. Danh sách trường bản INGREDIENT ......................................................................... 28
Bảng 21. Danh sách trường bản METHOD ................................................................................ 28
Bảng 22. Danh sách trường bản METHOD_IMAGE ................................................................. 28
Bảng 23. Danh sách trường bản SAVEFOOD ............................................................................ 29
Bảng 24. Danh sách trường bảng FOLLOWING ........................................................................ 29
Bảng 25. Danh sách trường bảng LIKE ...................................................................................... 29
Bảng 26. Danh sách các màn hình ............................................................................................... 30
Bảng 27. Bảng thành phần màn hình đăng nhập ......................................................................... 32
Bảng 28. Bảng thành phần màn hình trang chủ ........................................................................... 33
Bảng 29. Bảng thành phần màn hình chi tiết công thức nấu ăn .................................................. 34
Bảng 30. Bảng thành phần màn hình bình luận bài đăng ............................................................ 35
Bảng 31. Bảng thành phần màn hình trang bếp của người dùng khác ........................................ 36
Bảng 32. Bảng thành phần màn hình tìm kiếm cơng thức nấu ăn ............................................... 37
Bảng 33. Bảng thành phần màn hình đăng cơng thức nấu ăn ..................................................... 38
Bảng 34. Bảng thành phần màn hình trang bếp cá nhân ............................................................. 40


CHƯƠNG 1. TỔNG QUAN
1.1. Lý do chọn đề tài
Bếp núc dường như là chuyện quá xa xỉ đối với những người suốt ngày bận rộn
với guồng quay công việc, sự bận rộn khiến họ cảm thấy mệt mỏi và lười biếng khi
phải đối mặt với căn bếp mỗi khi về nhà. Với cảm nhận của em, việc suy nghĩ hôm
nay nên ăn gì, mua gì, nấu như thế nào dường như là một chuyện vô cùng nặng nhọc,
nghĩ cũng không muốn nghĩ chút nào.

Theo cách ghi chép thông thường, những người nội trợ gặp khó khăn khi ghi
chép các cơng thức ra giấy như quên, mất sổ ghi,… Việc lưu trữ cũng như tìm kiếm
từng trang cơng thức rất mất thời gian.
Tuy nhiên, việc đi ăn ngoài hiện nay càng ngày càng có nhiều bất cập, an tồn
vệ sinh thực phẩm ln khơng được bảo đảm, giá cả món ăn đắt hơn so với thực tế
cộng với thái độ cùng cung cách phục vụ của nhân viên vẫn còn chưa ổn định.
Với thời đại công nghệ 4.0 hiện nay, việc vào bếp và nấu nướng đã trở nên khá
dễ dàng. Chỉ cần có Internet, chúng ta có thể truy cập vào bất kì trang Web nấu nướng
nào hoặc tải về các ứng dụng dạy nấu ăn trên điện thoại, các bước tiếp theo đương
nhiên là chỉ cần làm theo hướng dẫn sẵn có.
Để tiếp cận đến nhiều người dùng, các nhà phát triển ứng dụng mong muốn ứng
dụng hướng dẫn nấu ăn của họ chạy được trên nhiều nền tảng đặc biệt là Android, iOS,
Windows, MacOS và web. Thay vì phải tìm hiểu nhiều ngơn ngữ, cơng nghệ khác
nhau ứng với từng nền tảng thì hiện nay trên thị trường có nhiều cơng cụ hỗ trợ lập
trình đa nền tảng như Flutter, React Native, Ionic,… giúp các nhà phát triển ứng dụng
tiết kiệm thời gian, chi phí dành cho quá trình phát triển ứng dụng.
Trong số đó có Flutter mặc dù là cơng cụ ra đời muộn nhưng có tốc độ phát
triển vượt trội và nhiều ưu điểm so với các công nghệ đi trước, nhiều công ty công
nghệ lớn sử dụng Flutter để phát triển sản phẩm của mình như Google, Alibaba,
Tencent… Flutter phổ biến như vậy nhờ vào tính năng hot reload feature cho phép các
nhà phát triển và nhà thiết kế trải nghiệm các thay đổi ngay lập tức. Điều này giúp phát
triển nhanh hơn. Không giống như React Native, Flutter hỗ trợ thiết kế giao diện người
dùng dựa trên widget và do đó cung cấp sự phát triển nhanh chóng của các ứng dụng
đa nền tảng.
1


Dựa trên những cơ sở và nhu cầu thực tế đó, nhóm em quyết định tìm hiểu về Flutter
và sử dụng framework này để xây dựng ứng dụng hướng dẫn nấu ăn.
1.2. Các ứng dụng tương tự

1.2.1. Ứng dụng Sách nấu ăn
Sách nấu ăn là ứng dụng nấu ăn với bộ sưu tập có hơn 13900 cơng thức chế
biến món ngon được cập nhật liên tục. Ngoài việc hướng dẫn cơng thức nấu, ứng dụng
cịn hướng dẫn những mẹo vặt hay để việc nấu ăn trở nên dễ dàng hơn.
Ưu điểm:
• Nhiều cơng thức món ngon và được cập nhật liên tục.
• Hướng dẫn nấu chi tiết, đơn giản, dễ hình dung.
• Mẹo vặt nấu ăn cho món ngon thêm hồn hảo.
• Lưu và chia sẻ bài viết với mọi người.
Nhược điểm:
• Khơng cho phép tạo cơng thức nấu ăn của riêng người dùng.
• Khơng cho phép tạo cộng động trong ứng dụng.
• Chỉ có chủ ứng dụng mới có thể thêm, bớt cơng thức.
• UI/UX của ứng dụng khá tệ.

Hình 1. Ứng dụng Sách nấu ăn

1.2.2. Ứng dụng Cookpad
Cookpad cung cấp cho bạn hàng ngàn công thức nấu ăn ngon, đơn giản và dễ
2


làm từ cộng đồng, bạn có thể nhắn tin trực tiếp với tác giả của món ăn bạn muốn học
để họ giải đáp vấn đề bạn thắc mắc.
Ưu điểm:
• Dễ dàng chia sẻ, xuất bản công thức nấu ăn của riêng mình.
• Giao diện thân thiện, tìm kiếm các cơng thức nâu ăn dễ dàng.
• Số lượng người dùng Việt lớn, hỗ trợ tiếng Việt tốt.
• Nhiều cơng thức nấu ăn để lựa chọn.
• Tạo mơi trường kết nối tốt cho những người yêu nấu nướng.

Nhược điểm:
• Chỉ cho phép tìm kiếm theo ngơn ngữ quốc gia mà bạn đăng ký.
• Ít tính năng hỗ trợ.
• Chỉ sử dụng được khi online

Hình 2. Ứng dụng Cookpad

1.2.3. Ứng dụng Cooky
Hiện ứng dụng đang sở hữu hơn 31.000 công thức nấu ăn khác nhau từ món Á
cho đến món u với hình ảnh minh họa chi tiết. Ngoài việc hướng dẫn kỹ năng nấu ăn,
Cooky còn là nơi để người dùng giải trí, xem video các món ăn ngon, học thêm những
mẹo vặt nhà bếp,….
Ưu điểm:
• Có cộng đồng người dùng Việt lớn, hỗ trợ tiếng Việt tốt.
3


• Giao diện thân thiện, dễ sử dụng.
• Có nhiều tính năng hỗ trợ như: mua hàng online, đăng ký tham gia lớp
học nấu ăn online,..
• Dễ dàng chia sẻ cơng thức nấu ăn của riêng mình.
• Tạo mơi trường kết nối tốt cho những người yêu nấu nướng.
Nhược điểm:
• Đây là ứng dụng nấu ăn thuần Việt 100% nên cộng đồng người dùng chỉ
giới hạn ở Việt Nam.
• Chỉ sử dụng được khi online

Hình 3. Ứng dụng Cooky

1.3. Mục tiêu của đề tài

-

Nghiên cứu về các công nghệ lập trình Flutter.

-

Tìm hiểu các nghiệp vụ của một ứng dụng hướng dẫn nấu ăn trong thực
tế.
Áp dụng và triển khai các kiến thức đã nghiên cứu và học hỏi vào hiện

-

thực hóa ứng dụng.
1.4. Đối tượng nghiên cứu
-

Cơng nghệ:
• Flutter
• Dart
4


• Firebase
-

Người dùng có niềm đam mê nấu nướng, có nhu cầu tìm kiếm cơng thức nấu
ăn trên nền tảng ứng dụng di động.

1.5. Phạm vi nghiên cứu
-


Xây dựng ứng dụng di động bằng Flutter, service được xây dựng bằng ngơn
ngữ Dart

-

Xây dựng ứng dụng hướng đến người dùng có nhu cầu tìm kiếm cơng thức
nấu ăn trên mạng.

5


CHƯƠNG 2. TÌM HIỂU CƠNG NGHỆ
2.1. Lịch sử

Hình 4. Logo Flutter

Flutter là một SDK phần mềm mã nguồn mở được tạo ra bời Google. Phiên
bản đầu tiên của Flutter được gọi là “Sky” và chạy trên hệ điều hành Android. Nó
được cơng bộ tại hội nghị nhà phát triển Dart 2015, với dự định ban đầu để có thể kết
xuất ổn định ở mức 120 khung hình trên giây. Vào ngày 4 tháng 12 năm 2018, Flutter
1.0 đã được phát hành tại sự kiện Flutter Live, là phiên bản ổn định đầu tiên của
khung ứng dụng này. Vào 11/12/2019, sự kiện Flutter Interact diễn ra và công bố rất
nhiều sự nâng cấp cùng với sự ra đời của Flutter 1.12. Tính tới 30/04/2021, phiên bản
mới nhất là 2.0.6 .
2.2. Tổng quan
Flutter là UI framework của Google để tạo ra các giao diện chất lượng cao trên
iOS và Android trong khoảng thời gian ngắn. Flutter hoạt động với những code sẵn
có được sử dụng bởi các lập trình viên, các tổ chức.
2.2.1. Ngơn ngữ Dart

Dart là ngơn ngữ lập trình đa mục đích ban đầu được phát triển bởi Google và
sau đó được Ecma (ECMA-408) phê chuẩn làm tiêu chuẩn. Nó được sử dụng để xây
dựng các ứng dụng web, server, máy tính để bàn và thiết bị di động. Dart là một ngôn
ngữ hướng đối tượng, được xác định theo lớp, với cơ chế garbage-collected, sử dụng
cú pháp kiểu C để dịch mã tùy ý sang JavaScript. Nó hỗ trợ interface, mixin, abstract,
6


generic, static typing và sound type (2 cái cuối có thể hiểu là type-safe). Dart là ngôn
ngữ mã nguồn mở và miễn phí, được phát triển trên GitHub. Hiện nay Dart đã release
phiên bản 2.2.
Các nhà phát triển tại Google và các nơi khác sử dụng Dart để tạo các ứng
dụng chất lượng cao, quan trọng cho iOS, Android và web. Với các tính năng nhắm
đến sự phát triển phía khách hàng, Dart rất phù hợp cho cả ứng dụng di động và web.
Dart cung cấp tối ưu hóa việc biên dịch trước thời hạn để có được dự đốn
hiệu suất cao và khởi động nhanh trên các thiết bị di động và web.
Dart quen thuộc với nhiều nhà phát triển hiện có, nhờ vào cú pháp và định
hướng đối tượng khơng gây ngạc nhiên của nó. Nếu bạn đã biết C ++, C # hoặc Java,
bạn có thể làm việc hiệu quả với Dart chỉ sau vài ngày.
2.2.2. Complier: AOT và JIT
Flutter hỗ trợ cả hai cách biên dịch là AOT(Ahead Of Time) compiler và
JIT(Just In Time) compiler
Ahead Of Time (AOT): Với AOT thì trình biên dịch chuyển ngơn ngữ Dart
thẳng sang Native Code giúp hiệu năng tốt nhất có thể (tức là khi chạy chương trình,
nó sẽ biên dịch từ đầu đến cuối)
Just In Time (JIT): Còn với JIT cho phép hot reloading hoạt động, giúp phát
triển sản phẩm nhanh và tiện dụng hơn (được hiểu như việc debug trong ngôn ngữ
khác là debug hàm nào chạy hàm đó thì ở đây nó sẽ viết đến đâu biên dịch ngay đến
đấy)
2.2.3. Cấu trúc


7


Hình 5. Cấu trúc Flutter

Cấu trúc trong Flutter bao gồm :
• Flutter engine: Phương tiện của Flutter.
• Foundation Library: Thư viện nền tảng.
• Widgets
Flutter engine là một thời gian chạy di động cho các ứng dụng di động chất
lượng cao và chủ yếu dựa trên ngơn ngữ C++. Nó triển khai các thư viện lõi của
Flutter bao gồm hoạt ảnh và đồ họa, I/O tệp và mạng, kiến trúc plugin, hỗ trợ trợ
năng và thời gian chạy dart để phát triển, biên dịch và chạy các ứng dụng Flutter. Nó
sử dụng thư viện đồ họa mã nguồn mở của Google, Skia, để hiển thị đồ họa cấp thấp..
Trong Flutter, mọi thứ đều là một widget, đó là khái niệm cốt lõi của
framework này. Widget trong Flutter về cơ bản là một thành phần giao diện người
dùng ảnh hưởng và kiểm soát chế độ xem và giao diện của ứng dụng. Nó đại diện cho
một mơ tả bất biến về một phần của giao diện người dùng và bao gồm đồ họa, văn
bản, hình dạng và hoạt ảnh được tạo bằng các widget. Các widget tương tự như các
thành phần React.

8


2.3. Ưu, nhược điểm
2.3.1. Ưu điểm
-

Flutter là bộ open-source SDK , tức là miễn phí và mở – cộng đồng


developer có thể cùng tham gia phát triển.
-

Giao diện đẹp ( impressive UI) : Flutter cung cấp rất nhiều các widget,

với nhiều sự lựa chọn. Giao diện khá đẹp và sắc nét.
-

Viết code ứng dụng nhanh hơn: Như các bạn đã biết, tầng Framework của

Flutter được viết bằng Dart- một ngôn ngữ hướng đối tượng hỗ trợ JIT(Just
In Time), tức là hỗ trợ hot reload trong quá trình viết code. Với hot reload
bạn có thể cập nhật ứng dụng rất nhanh khi source code của bạn thay đổi mà
không cần phải build lại bằng việc nhấn nút hot reload. Trong quá trình viết
ứng dụng, bạn sẽ thấy rõ điểm ưu việt này của hot reload.
-

Native Performance: Trải nghiệm native hay độ mượt của ứng dụng tốt

như native. Ngôn ngữ Dart hỗ trợ AOT( Ahead of Time), tức là complile sẽ
nhanh hơn- giúp cải thiện perfomance và startup time.
-

Thời gian xây dựng ứng dụng nhanh hơn, chi phí thấp hơn: Viết code

nhanh, chỉ 1 basecode chạy trên 2 nền tảng Android, iOS vì vậy thời gian
test, fix bugs sẽ nhanh hơn, tiết kiệm chi phí xây dựng app hơn
-


Hiện nay, Flutter đang rất được ưa chuộng với các developer bởi sự linh

hoạt, đơn giản và nhanh chóng trong việc phát triển sản phẩm.
2.3.2. Nhược điểm
-

Flutter vẫn chưa thật hồn thiện. Vì là một ứng dụng mới nên Flutter vẫn

chưa đạt mức hoàn hảo. Thực tế, nhiều tính năng nâng cao của Flutter vẫn
chưa được hỗ trợ; nhiều thư viện chưa được thử nghiệm chính thức cịn tồn
tại hạn chế khi so sánh với các bản sao gốc (như là Google Maps)..
-

Dart khá "non nớt". Về cơ bản Dart khá giống với Swift và Kotlin, nhưng

có ít tính năng hơn, hoặc những tính năng hiện có chưa được tồn diện.
-

Các ứng dụng Flutter khá "nặng". Chúng chiếm nhiều dung lượng và mất

nhiều thời gian để tải xuống hoặc cập nhật .
9


-

Giao diện không giống 100% so với phiên bản gốc. Về cơ bản, Flutter

không tạo ra các thành phần gốc mà sao chép khơng hồn tồn các thiết kế
Material Design của Android và các thành phần riêng của iOS bằng thư viện

Cupertino. Thư viện này sẽ hiển thị, đặc biệt với các phiên bản hệ thống chứa
các trường văn bản hoặc các nút - những thành phần biến đổi bên ngồi
nhưng khơng thay đổi bên trong Flutter.
-

Framework thay đổi nhanh chóng gây khó khăn cho việc duy trì mã.

Thêm vào đó, Flutter chưa chắc sẽ được là ứng dụng trong tương lai khi
Google liên tục loại bỏ các dự án của ứng dụng này.
2.4. Khi nào nên sử dụng Flutter
Thực tế Flutter chưa đủ hoàn thiện để xử lý các dự án phức tạp, ít nhất là ở thời
điểm hiện tại. Tuy nhiên, nó lại là một giải pháp tốt đối với những dự án nhỏ, phù hợp
với các công ty mới thành lập.
Bạn có thể sử dụng Flutter khi muốn thử nghiệm ứng dụng của mình. Cụ thể,
nếu có ý tưởng về một ứng dụng dành cho thiết bị di động, nhưng bạn khơng chắc liệu
đó có phải là một ứng dụng tốt hay không, hãy xây dựng MVP trên Flutter để cắt giảm
chi phí và theo dõi hoạt động của ứng dụng đó. Nếu thành cơng, bạn nên chuyển
chúng thành các ứng dụng di động native.
Ngoài ra, nếu có nguồn lực hạn chế thì Flutter cũng là một giải pháp không tồi.
Việc phát triển hai ứng dụng riêng biệt sẽ tiêu tốn nhiều thời gian và tiền bạc. Flutter
có thể giúp các cơng ty tái sử dụng mã code, giúp họ biến ý tưởng của mình thành hiện
thực mà không cần quá nhiều vốn đầu tư.
2.5.

So sánh cơ bản Flutter và React Native
Hai Framework phát triển ứng dụng di động đa nền tảng phổ biến nhất hiện nay

là Flutter và React Native . Hai “thế lực” này được hỗ trợ bởi hai trong số những công
ty công nghệ lớn nhất trên thế giới: Flutter được tạo ra bởi Google và React Native
được tạo ra bởi Facebook.

React Native phổ biến hơn Flutter, một phần nhờ vào sự liên kết của React
Native với React-web framework phổ biến. React Native cũng đã tồn tại lâu hơn nên
lượng người dùng của nó lớn hơn. Do đó, nhu cầu hiện tại đối với các công ty phát
triển ứng dụng dựa trên React Native cao hơn so với các công ty phát triển ứng dụng
10


dựa trên Flutter.
Dù vậy, Flutter vẫn đang phát triển nhanh chóng. Flutter thì phù hợp với các dự
án focus về animation, các layout phức tạp, với thế mạnh sử dụng bộ render tự làm,
giao tiếp trực tiếp với GPU và một SDK để viết anim dễ dàng. Cực kỳ phù hợp với các
team native (đang có nhu cầu làm thêm các UX có hiệu năng cao vào app native có
sẵn). Flutter Developer hiện tại chưa nhiều, sẽ khó tìm người hơn
Sau tất cả, mục đích của ngơn ngữ cross-platform như Flutter và React Native
là giúp giảm thời gian đưa ra thị trường sử dụng, và việc phát triển app di động sẽ hiệu
quả hơn, hấp dẫn đối với cả người lập trình và người sử dụng.
Sau đây là bảng so sánh giữa Flutter và React Native:

Định nghĩa

Flutter

React Native

Là công cụ phát triển UI của

Là một Framework giúp xây

Google dành cho phát triển


dựng ứng dụng native iOS và

các ứng dụng dành cho di

Android bằng Javascript

động, máy tính, và trang web được phát triển bởi
chỉ với một codebase

Facebook.

Người sáng lập

Google

Facebook

Thời gian phát hành chính
thức
Ngơn ngữ lập trình

Tháng 12/ 2018, trong sự
kiện Google I/O
Dart

Tháng 3 / 2015, trong sự kiện
F8 Conference
Javascript

Miễn phí và mã nguồn mở






Khi nào nên sử dụng

-

Nếu bạn muốn thử

nghiệm ứng dụng của mình
-

Nếu bạn chỉ xây dựng

một dự án nhỏ
-

Nếu bạn muốn trải

nghiệm công nghệ mới

-

Nếu bạn biết lập trình

Javascript
-


Nếu bạn cần xây dựng

ứng dụng phức tạp với nhiều
thư viện hỗ trợ
-

Nếu bạn mới bắt đầu

học, cần các tài liệu và sự hỗ
trợ của cộng đồng.
Bảng 1. Bảng so sánh Flutter với React Native

11


CHƯƠNG 3. PHÂN TÍCH THIẾT KẾ ỨNG
DỤNG
3.1. Phân tích
3.1.1. Danh sách yêu cầu hệ thống
Qua khảo sát từ những người dùng có nhu cầu, cũng như tham khảo các ứng
dụng khác, nhóm em đã đưa ra danh sách thể hiện các nghiệp vụ mà ứng dụng cần
có:
Bảng 2. Danh sách các yêu cầu nghiệp vụ

STT

Tên yêu cầu

Ghi chú


1

Đăng nhập bằng google

Người dùng sử dụng tài khoản google
để đăng nhập vào ứng dụng.

2

Xem chi tiết cơng thức nấu ăn

Người dùng có thể xem chi tiết cơng
thức nấu ăn của mình hoặc của người
khác chia sẻ trên ứng dụng.

3

Tìm kiếm cơng thức món ăn

Người dùng có thể tìm kiếm món ăn
theo tên món trên thanh tìm kiếm.

4

Lịch sử xem món ăn

Người dùng có thể xem lịch sử các
món ăn đã tìm kiếm gần đây.

5


Lưu món ăn

Người dùng có thể lưu cơng thức nấu
ăn với món ăn mà mình u thích.

6

Like bài đăng cơng thức nấu ăn

Người dùng có thể like bài đăng cơng
thức nấu ăn để bài đăng được nổi bật.

7

Bình luận bài đăng cơng thức nấu
ăn

Người dùng có thể bình luận trực tiếp
cho chủ nhân của công thức qua ứng
dụng để hỏi thêm về công thức và
nguyên liệu trong trường hợp công
thức không rõ ràng.

8

Xem thông tin trang bếp của người
dùng khác

Người dùng có thể xem thơng tin trang

bếp của người dùng khác.

9

Kết bạn bếp với người dùng khác

Người dùng có thể kết bạn bếp với
người dùng khác bằng cách theo dõi
hoặc hủy theo dõi người đó.

12


10

Đăng cơng thức nấu ăn

Người dùng có thể đăng cơng thức nấu
ăn của mình lên ứng dụng

11

Quản lý cơng thức nấu ăn

Người dùng có thể đăng hoặc xóa các
cơng thức đã đăng.

12

Quản lý trang bếp cá nhân


Người dùng có thể xem món đã lưu,
món của tơi, bạn bè.

13


3.1.2. Đặc tả Usecase

Hình 6. Sơ đồ Usecase
Bảng 3. Danh sách các actors

STT Tên Actor

Ý nghĩa/Ghi chú

1

Người đã đăng nhập vào hệ thống, có thể chia sẻ
cơng thức nấu ăn, xem công thức ngươi dùng
khác chia sẻ,…

User

Bảng 4. Danh sách các Use-case

STT

Tên Use-case


Ý nghĩa/Ghi chú

1

Đăng nhập bằng google

Người dùng sử dụng tài khoản google
để đăng nhập vào ứng dụng.

2

Xem công thức nấu ăn

Người dùng có thể xem chi tiết cơng
thức nấu ăn của mình hoặc của người
khác chia sẻ trên ứng dụng.

3

Lưu món ăn

Người dùng có thể lưu cơng thức nấu
ăn với món ăn mà mình u thích.

4

Tìm kiếm cơng thức nấu ăn

Người dùng có thể tìm kiếm món ăn theo
tên món trên thanh tìm kiếm. Ngồi ra,

người dùng cịn có thể xem lịch sử các
món ăn đã tìm kiếm gần đây

5

Like bài đăng

Người dùng có thể like bài đăng công
thức nấu ăn để bài đăng được nổi bật.
14


6

Bình luận bài đăng

Người dùng có thể bình luận trực tiếp cho
chủ nhân của công thức qua ứng dụng để
hỏi thêm về công thức và nguyên liệu
trong trường hợp công thức không rõ ràng.

7

Xem thông tin trang bếp của
người khác

Người dùng có thể xem thơng tin trang
bếp của người dùng khác.

8


Kết bạn bếp

Người dùng có thể kết bạn bếp với người
dùng khác bằng cách theo dõi hoặc hủy
theo dõi người đó.

9

Quản lý cơng thức nấu ăn

Người dùng có thể đăng hoặc xóa các
cơng thức đã đăng.

10

Quản lý trang bếp cá nhân

Người dùng có thể thể xem được món đã
lưu, món của mình, bạn bè của mình. Ngồi
ra, người dùng có thể xóa món đã lưu, hủy
theo dõi bạn bè

11

Đăng xuất

Người dùng đăng xuất khỏi hệ thống
Bảng 5. Đặc tả chức năng đăng nhập bằng google


Mã Use-Case

UC1

Tên Use-Case

Đăng nhập bằng google

Mô tả tóm tắt

Người dùng dùng tài khoản google để đăng nhập vào ứng dụng

Điều kiện trước

PRE-1. Thiết bị của người dùng phải có kết nối Interner
PRE-2. Người dùng đã có tài khoản google

Điều kiện sau

Người dùng đăng nhập thành công

15


Dịng sự kiện chính

Dịng sự kiện phụ

1. Người dùng truy cập vào ứng dụng
2. Nhấn nút “Đăng nhập bằng Google”

3. Người dùng chọn tài khoản google của mình để đăng
nhập
4. Hệ thống xác thực thông tin đăng nhập thành công và
cho phép người dùng truy cập vào hệ thống
Đăng nhập hệ thống không thành công
1. Hệ thống xác thực thông tin đăng nhập không thành công
và hiển thị thông báo

Bảng 6. Đặc tả chức năng xem công thức nấu ăn

Mã Use-Case

UC2

Tên Use-Case

Xem cơng thức nấu ăn.

Mơ tả tóm tắt

Người dùng xem công thức nấu ăn được chia sẻ trên ứng dụng.

Điều kiện trước

PRE-1. Thiết bị của người dùng phải kết nối Internet.
PRE-2. Người dùng đã đăng nhập vào hệ thống.

Điều kiện sau
Dịng sự kiện chính


Dịng sự kiện phụ

Khơng có.
1. Ngươi dùng khởi động ứng dụng.
2. Hệ thống cập nhập các công thức nấu ăn được chia sẻ về
ứng dụng
3. Người dùng chọn công thức muốn xem
4. Hệ thống hiển thị cơng thức cho người dùng
Khơng có

Bảng 7. Đặc tả chức năng lưu món ăn

Mã Use-Case

UC3

Tên Use-Case

Lưu món ăn

Mơ tả tóm tắt

Người dùng lưu cơng thức nấu ăn với món ăn mà mình muốn
lưu.

16


Điều kiện trước


PRE-1. Thiết bị của người dùng phải kết nối Internet.
PRE-2. Người dùng đã đăng nhập vào hệ thống.

Điều kiện sau

Khơng có

Dịng sự kiện chính

Dịng sự kiện phụ

1. Người dùng khởi động ứng dụng
2. Nhấn vào biểu tượng Lưu trên bài đăng công thức nấu
ăn
3. Hệ thống sẽ lưu và hiển thị cơng thức nấu ăn đó vào mục
“Món đã lưu” ở trang bếp cá nhân
Khơng có

Bảng 8. Đặc tả chức năng tìm kiếm cơng thức nấu ăn

Mã Use-Case

UC4

Tên Use-Case

Tìm kiếm cơng thức nấu ăn

Mơ tả tóm tắt


Người dùng tìm kiếm món ăn theo nhu cầu thơng qua tên món
ăn.

Điều kiện trước

PRE-1. Thiết bị của người dùng phải kết nối Internet.
PRE-2. Người dùng đã đăng nhập vào hệ thống.

Điều kiện sau

Khơng có

Dịng sự kiện chính

Tìm kiếm thành cơng
1. Người dùng khởi động ứng dụng
2. Người dùng nhập thông tin cần tìm kiếm vào thanh tìm
kiếm
3. Hệ thống truy xuất trong database những cơng thức có từ
khóa trong nội dung tìm kiếm và hiển thị cho người
dùng
Xem lịch sử món ăn đã tìm kiếm gần đây
1. Hệ thống sẽ lưu lại những món ăn bạn đã xem gần đây
2. Người dùng vào trang tìm kiếm
3. Người dùng xem mục “Món bạn đã xem”
4. Hệ thống sẽ hiển thị món ăn bạn đã xem gần đây

17



×