ĐẠ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 THÀNH TRUNG – 19522436
NGUYỄN QUỐC TRUNG – 19522429
ĐỒ ÁN 1
TÌM HIỂU FLUTTER VÀ XÂY DỰNG ỨNG DỤNG TRÒ
CHUYỆN ẨN DANH
LEARN ABOUT FLUTTER & BUILDING A ANONYMOUS
CHATTING APP
KHOA CÔNG NGHỆ PHẦN MỀM
TP. HỒ CHÍ MINH, 6,2023
ĐẠ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 THÀNH TRUNG – 19522436
NGUYỄN QUỐC TRUNG – 19522429
ĐỒ ÁN 1
TÌM HIỂU FLUTTER VÀ XÂY DỰNG ỨNG DỤNG TRÒ
CHUYỆN ẨN DANH
LEARN ABOUT FLUTTER & BUILDING A ANONYMOUS
SOCIAL CHAT APP
KHOA CÔNG NGHỆ PHẦN MỀM
GIẢNG VIÊN HƯỚNG DẪN
TH.S HUỲNH TUẤN ANH
TP. HỒ CHÍ MINH, 6,2022
LỜI CẢM ƠN
Lời đầu tiên, nhóm tác giả xin chân thành cảm ơn q thầy cơ khoa Cơng nghệ
Phần mềm, trường Đại Học Công Nghệ Thông Tin, ĐHQG TP.HCM, đã tận tình
hướng dẫn nhóm trong suốt thời gian qua. Những kiến thức mà thầy cô đã truyền
đạt là nền tảng quan trọng để nhóm có thể hồn thành đề tài này.
Nhóm tác giả xin gửi lời cảm ơn chân thành và lòng biết ơn sâu sắc đến ThS.
Huỳnh Tuấn Anh, cảm ơn thầy đã tận tình hướng dẫn và tạo điều kiện tốt nhất cho
nhóm hồn thành đề tài này. Những lời động viên, góp ý chân tình của thầy là động
lực q báu để nhóm vượt qua những khó khăn khi tìm hiểu và thực hiện đề tài.
Trong thời gian hơn 3 tháng thực hiện đề tài, nhóm chúng em đã cố gắng vận dụng
những kiến thức nền tảng đã học, kết hợp học hỏi và tìm hiểu cơng nghệ mới để ứng
dụng xây dựng đề tài môn học. Tuy nhiên trong quá trình thực hiện, do kiến thức và
kinh nghiệm cịn nhiều hạn chế, khó tránh khỏi những thiếu sót. Chính vì vậy, nhóm
tác giả rất mong nhận được sự góp ý từ q thầy cơ để nhóm hồn thiện thêm những
kiến thức mà nhóm đã học tập, làm hành trang q báu cho nhóm trong cơng việc
sau này.
Sau cùng, nhóm tác giả xin kính chúc q thầy cô ở khoa Công nghệ phần mềm
và thầy Huỳnh Tuấn Anh thật dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ
mệnh cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau.
Xin chân thành cảm ơn q thầy cơ !
NHẬN XÉT
(Của giáo viên hướng dẫn)
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
.........................................................................................................................
DANH SÁCH THÀNH VIÊN NHÓM
Tên thành viên
MSSV
Trần Thành Trung
19522436
Nguyễn Quốc Trung
19522429
MỤC LỤC
Chương 1. TỔNG QUAN VỀ ĐỀ TÀI ....................................................................2
1.1. Đặt vấn đề ......................................................................................................2
1.1.1.
Mục tiêu ...............................................................................................2
1.1.2.
Phạm vi ................................................................................................2
1.2. Công cụ sử dụng ............................................................................................3
Chương 2. CƠ SỞ LÝ THUYẾT .............................................................................4
2.1. NodeJS ...........................................................................................................4
2.1.1.
Giới thiệu .............................................................................................4
2.1.2.
Lý do sử dụng ......................................................................................5
2.2. MongoDB ......................................................................................................5
2.2.1.
Giới thiệu .............................................................................................6
2.2.2.
Lý do sử dụng ......................................................................................6
2.3. Flutter.............................................................................................................7
2.3.1.
Giới thiệu .............................................................................................7
2.3.2.
Lý do sử dụng ......................................................................................8
Chương 3. TÌM HIỂU VỀ FLUTTER ......................................................................9
3.1. Giới thiệu chung ............................................................................................9
3.1.1.
Lịch sử phát triển .................................................................................9
3.1.2.
Đối tượng hướng đến.........................................................................10
3.1.3.
Ngôn ngữ sử dụng .............................................................................11
3.2. Công dụng của Flutter .................................................................................12
3.3. Điểm khác biệt của Flutter...........................................................................12
3.4. Cấu trúc cơ bản của một ứng dụng Flutter ..................................................13
3.4.1.1. Widget............................................................................................13
3.4.1.2. Cấu trúc theo Widget .....................................................................14
3.4.1.3. Các nhóm Widget chính ................................................................15
3.4.1.4. Widget Layout ...............................................................................15
3.4.1.5. Stateless , Stateful ..........................................................................15
3.4.2.
Gesture ...............................................................................................16
3.4.3.
State ...................................................................................................16
3.4.4.
Layout ................................................................................................17
3.4.4.1. Single Child Widget ......................................................................18
3.4.4.2. Multiple Child Widget ...................................................................19
3.4.5.
Một số phần quan trọng khác ............................................................19
Chương 4. KHẢO SÁT VÀ PHÂN TÍCH ĐẶC TẢ YÊU CẦU ...........................20
4.1. Nhu cầu thực tế ............................................................................................20
4.2. Khảo sát bằng Google Form ........................................................................20
4.3. Usecase , đặc tả usecase ..............................................................................25
4.3.1.
Sơ đồ usecase ....................................................................................25
4.3.2.
Danh sách usecase .............................................................................26
4.3.3.
Đặc tả chi tiết (Activity, Sequence Diagram) ...................................26
4.3.3.1. Đăng nhập ......................................................................................26
4.3.3.2. Đăng ký ..........................................................................................29
4.3.3.3. Quên mật khẩu ...............................................................................32
4.3.3.4. Chỉnh sửa hồ sơ .............................................................................35
4.3.3.5. Chỉnh sửa cài đặt ...........................................................................38
4.3.3.6. Ghép cặp ........................................................................................41
4.3.3.7. Chat ................................................................................................44
4.3.3.8. Nghe nhạc ......................................................................................47
4.3.3.9. Khiếu nại - Report .........................................................................50
4.3.3.10. Thêm bạn bè ................................................................................53
4.3.3.11. Tìm kiếm bạn bè ..........................................................................56
4.3.3.12. Xem hồ sơ bạn bè ........................................................................59
4.3.3.13. Khiếu nại bạn bè ..........................................................................61
4.3.3.14. Xố bạn bè ...................................................................................64
4.3.3.15. Mời bạn bè vào phịng chat..........................................................67
4.4. Sơ đồ lớp ......................................................................................................71
4.4.1.
Danh sách chi tiết đối tượng và quan hệ ...........................................71
4.4.2.
Mô tả chi tiết từng lớp đối tượng ......................................................72
4.4.2.1. User ................................................................................................72
4.4.2.2. Setting ............................................................................................72
4.4.2.3. Media .............................................................................................72
4.4.2.4. Message .........................................................................................73
4.4.2.5. Friend .............................................................................................73
4.4.2.6. Report ............................................................................................74
Chương 5. THIẾT KẾ HỆ THỐNG .......................................................................74
5.1. Kiến trúc hệ thống .......................................................................................74
5.2. Giao diện tổng quan .....................................................................................76
5.2.1.
Màn hình đăng nhập ..........................................................................76
5.2.2.
Màn hình đăng ký ..............................................................................77
5.2.3.
Màn hình quên mật khẩu ...................................................................78
5.2.4.
Màn hình chính – Home ....................................................................79
5.2.5.
Hồ sơ người dùng ..............................................................................80
5.2.6.
Cài đặt ................................................................................................81
5.2.7.
Danh sách bạn bè ...............................................................................82
5.2.8.
Hồ sơ bạn bè ......................................................................................83
5.2.9.
Phòng chat .........................................................................................84
5.2.9.1. Nhắn tin .........................................................................................84
5.2.9.2. Nghe nhạc ......................................................................................85
5.2.10.
Khiếu nại ...........................................................................................86
Chương 6. PHÁT TRIỂN VÀ CÀI ĐẶT ỨNG DỤNG .........................................87
6.1. Môi trường phát triển ứng dụng ..................................................................87
6.2. Môi trường triển khai ứng dụng ..................................................................87
Chương 7. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ............................................87
7.1. Kết luận........................................................................................................87
7.1.1.
Kết quả đạt được................................................................................87
7.1.1.1. Ưu điểm .........................................................................................87
7.1.1.2. Khuyết điểm...................................................................................88
7.1.2.
Điểm đặc sắc của đề tài .....................................................................88
7.2. Hướng phát triển ..........................................................................................89
Chương 8. TÀI LIỆU THAM KHẢO ....................................................................90
DANH MỤC HÌNH
Hình 2.1-1. NodeJS ............................................................................................................................4
Hình 2.2-1. MongoDB ......................................................................................................................5
Hình 2.3-1. Flutter ..............................................................................................................................7
Hình 2.3-1. FLutter ............................................................................................................................9
Hình 3.1-1. Dart ............................................................................................................................... 11
Hình 3.3-1. Cấu trúc Engine của Flutter .................................................................................. 13
Hình 3.4-1. Cấu trúc Flutter theo Widget................................................................................ 14
Hình 3.4-2. Gesture trong Flutter ............................................................................................... 16
Hình 3.4-3. Layout trong FLutter............................................................................................... 17
Hình 3.4-4. Sing Child Widget trong FLutter........................................................................ 18
Hình 3.4-5. Multiple Child Widget trong Flutter ................................................................. 19
Hình 4.2-1. Độ tuổi khảo sát ...................................................................................................... 21
Hình 4.2-............................................................................................................................................. 21
Hình 4.2-3. Tỷ lệ giới tính khảo sát .......................................................................................... 21
Hình 4.2-4. Các app nhắn tin thường được sử dụng............................................................ 22
Hình 4.2-5. Khảo sát về giao diện sử dụng............................................................................. 22
Hình 4.2-6. Khảo sát về độ bảo mật .......................................................................................... 23
Hình 4.2-7. Khảo sát về màu sắc của app ............................................................................... 24
Hình 4.2-8. Kết hợp giữa trị chuyện và phát nhạc .............................................................. 24
Hình 4.2-9. Độ tin cậy của ứng dụng ........................................................................................ 25
Hình 4.3-1. Sơ đồ Usecase ........................................................................................................... 25
Hình 4.3-2. Sơ đồ hoạt động 'Đăng nhập' ............................................................................... 28
Hình 4.3-3. Sơ đồ tuần tự 'Đăng nhập' ..................................................................................... 29
Hình 4.3-4. Sơ đồ hoạt động 'Đăng ký' .................................................................................... 31
Hình 4.3-5. Sơ đồ tuần tự 'Đăng ký' .......................................................................................... 32
Hình 4.3-6. Sơ đồ hoạt động 'Quên mật khẩu' ....................................................................... 34
Hình 4.3-7. Sơ đồ hoạt động 'Quên mật khẩu' ....................................................................... 35
Hình 4.3-8. Sơ đồ hoạt động 'Chỉnh sửa hồ sơ' ..................................................................... 37
Hình 4.3-9. Sơ đồ tuần tự 'Chỉnh sửa hồ sơ' ........................................................................... 38
Hình 4.3-10. Sơ đồ hoạt động 'Chỉnh sửa cài đặt' ................................................................ 40
Hình 4.3-11. Sơ đồ tuần tự 'Chỉnh sửa cài đặt' ...................................................................... 41
Hình 4.3-12. Sơ đồ hoạt động 'Ghép cặp' ................................................................................ 43
Hình 4.3-13. Sơ đồ tuần tự 'Ghép cặp' ..................................................................................... 44
Hình 4.3-14. Sơ đồ hoạt động 'Chat' ......................................................................................... 46
Hình 4.3-15. Sơ đồ tuần tự 'Chat' ............................................................................................... 47
Hình 4.3-16. Sơ đồ hoạt động 'Nghe nhạc' ............................................................................. 49
Hình 4.3-17. Sơ đồ tuần tự 'Nghe nhạc' ................................................................................... 50
Hình 4.3-18. Sơ đồ hoạt động 'Khiếu nại' ............................................................................... 52
Hình 4.3-19. Sơ đồ tuần tự 'Khiếu nại' ..................................................................................... 53
Hình 4.3-20. Sơ đồ hoạt động 'Thêm bạn bè' ......................................................................... 55
Hình 4.3-21. Sơ đồ tuần tự 'Thêm bạn bè' .............................................................................. 56
Hình 4.3-22. Sơ đồ hoạt động 'Tìm kiếm bạn bè' ................................................................. 58
Hình 4.3-23. Sơ đồ tuần tự 'Tìm kiếm bạn bè' ....................................................................... 59
Hình 4.3-24. Sơ đồ hoạt động 'Xem thơng tin bạn bè' ........................................................ 61
Hình 4.3-25. Sơ đồ hoạt động 'Xem thông tin bạn bè' ........................................................ 61
Hình 4.3-26. Sơ đồ hoạt động 'Khiếu nại bạn bè' ................................................................. 63
Hình 4.3-27. Sơ đồ tuần tự 'Khiếu nại bạn bè' ....................................................................... 64
Hình 4.3-28. Sơ đồ hoạt động 'Xố bạn bè' ............................................................................ 66
Hình 4.3-29. Sơ đồ tuần tự 'Xố bạn bè' .................................................................................. 67
Hình 4.3-30. Sơ đồ hoạt động 'Mời bạn bè vào phịng chat' ............................................ 69
Hình 4.3-31. Sơ đồ tuần tự 'Mời bạn bè vào phịng chat’.................................................. 70
Hình 4.4-1. Sơ đồ ERD.................................................................................................................. 71
Hình 5.1-1. Kiến trúc hệ thống ................................................................................................... 75
Hình 5.1-2. NodeJS Server ........................................................................................................... 75
Hình 5.2-1. Màn hình đăng nhập................................................................................................ 76
Hình 5.2-2. Màn hình đăng ký .................................................................................................... 77
Hình 5.2-3. Màn hình qn mật khẩu ....................................................................................... 78
Hình 5.2-4. Màn hình chính ......................................................................................................... 79
Hình 5.2-5. Màn hình hồ sơ cá nhân ......................................................................................... 80
Hình 5.2-6. Màn hình cài đặt ....................................................................................................... 81
Hình 5.2-7. Màn hình danh sách bạn bè .................................................................................. 82
Hình 5.2-8. Màn hình thơng tin bạn bè .................................................................................... 83
Hình 5.2-9. Màn hình Phịng chat .............................................................................................. 84
Hình 5.2-10. Màn hình nghe nhạc ............................................................................................. 85
Hình 5.2-11. Màn hình khiếu nại ............................................................................................... 86
DANH MỤC BẢNG
Bảng 1-1. Danh mục từ viết tắt ................................................................................................... 14
Bảng 4-1. Danh sách chức năng ................................................................................................. 26
Bảng 4-2. Đặc tả 'Đăng nhập' ...................................................................................................... 27
Bảng 4-3. Đặc tả 'Đăng ký' ........................................................................................................... 30
Bảng 4-4. Đặc tả 'Quên mật khẩu' ............................................................................................. 33
Bảng 4-5. Đặc tả 'Chỉnh sửa hồ sơ'............................................................................................ 36
Bảng 4-6. Đặc tả 'Chỉnh sửa cài đặt' ......................................................................................... 39
Bảng 4-7. Đặc tả ' Ghép cặp'........................................................................................................ 42
Bảng 4-8. Đặc tả 'Chat' .................................................................................................................. 45
Bảng 4-9. Đặc tả 'Nghe nhạc' ...................................................................................................... 48
Bảng 4-10. Đặc tả 'Khiếu nại' ...................................................................................................... 51
Bảng 4-11. Đặc tả 'Thêm bạn bè' ............................................................................................... 54
Bảng 4-12. Đặc tả 'Tìm kiếm bạn bè'........................................................................................ 57
Bảng 4-13. Đặc tả 'Xem hồ sơ bạn bè' ..................................................................................... 60
Bảng 4-14. Đặc tả 'Khiếu nại bạn bè'........................................................................................ 62
Bảng 4-15. Đặc tả 'Xoá bạn bè' ................................................................................................... 65
Bảng 4-16. Đặc tả 'Mời bạn bè vào phòng chat' ................................................................... 68
Bảng 4-17. Danh sách chi tiết các Collection trong MongoDB ...................................... 71
Bảng 4-18. Collection 'User' ........................................................................................................ 72
Bảng 4-19. Collection 'Setting' ................................................................................................... 72
Bảng 4-20. Collection 'Media' ..................................................................................................... 73
Bảng 4-21. Collection 'Message' ................................................................................................ 73
Bảng 4-22. Collection 'Friend' .................................................................................................... 73
Bảng 4-23. Collection 'Report' .................................................................................................... 74
DANH MỤC TỪ VIẾT TẮT
STT
Tên từ viết tắt
Mô tả đầy đủ
1
2
3
Bảng 1-1. Danh mục từ viết tắt
TÓM TẮT
Đồ án nhằm xây dựng ứng dụng di động để giúp mọi người được kết nối với nhau,
cùng nhau chia sẻ, đồng thời là tìm hiểu kiến thức, cũng như áp dụng Flutter trong
việc tạo ra một ứng dụng tiên tiến, trực tuyến. Phần mềm gồm các chức năng chính
như:
-
Đăng nhập, đăng ký, qn mật khẩu
-
Quản lý thơng tin người dùng
-
Ghép cặp
-
Nhắn tin kết hợp nghe nhạc
-
Kết bạn và nhóm chức năng với bạn bè
-
Cài đặt
Sau khi thực hiện đồ án chúng em đã thu được một số kết quả trên cả lý thuyết và
thực hành. Đó là nắm được khá chắc kiến thức về Flutter, về các widget và Rest
API, sử dụng NodeJS khởi tạo server chat cho ứng dụng và đồng bộ giữa hai người
dùng, áp dụng thành công xác thực đăng nhập JWT và gửi tin nhắn xác thực về điện
thoại với Vonage, .…. Kết quả là chúng em đã tạo ra được một ứng dụng di động có
thể xem như một khơng gian cởi mở, chia sẻ, kết bạn mới dành cho người dùng.
1
Chương 1. TỔNG QUAN VỀ ĐỀ TÀI
1.1. Đặt vấn đề
Hiện nay, dịch Covid đã nguôi ngoai phần nào, nhưng hệ quả nó để lại vơ cùng tàn
khốc, khơng thể kể xiết, khiến nhiều người rơi vào trầm cảm, mắc chứng sợ tiếp xúc
ngoài xã hội. Dù đã giảm thiểu được con số lây nhiễm và tử vong, nhưng chúng ta
vẫn nên nghiêm ngặt chấp hành các quy định giãn cách xã hội, quy định 5K được
đổi mới, cập nhật cho phù hợp với tình trạng dịch bệnh. Và khi một cuộc sống dần
thu hẹp không gian sinh hoạt, nay đã trở thành thói quen vì giãn cách q lâu, lại
chẳng thể tâm sự cùng với ai cả, thì khơng gian để kết nối mọi người là thông qua
mạng internet, qua các ứng dụng mạng xã hội, nhắn tin.
Thêm vào đó, với thời thế hiện này, các ứng dụng nhắn tin được phát triển rộng rãi,
mạnh mẽ, kết nối những con người xa lạ hay gần gũi đến nhau. Đồng thời, Flutter
hiện lại còn đang được ưa chuộng và phát triển mới hơn từng ngày.
Thế nên, chúng em quyết định phát triển ứng dụng Familiar Stranger nhằm tạo ra
nơi dành cho tất cả mọi người, không kể là ai, lắng nghe hay trút bỏ nỗi niềm với
người còn lại một cách văn minh, tế nhị, giúp giải toả tâm lý, nhận được những lời
khuyên hữu ích.
1.1.1.
Mục tiêu
Mục tiêu cơ bản của nhóm là tìm hiểu về Flutter và sử dụng những kiến thức đã
học và đang học, đồng thời kết hợp thu thập trải nghiệm từ phía người dùng các ứng
dụng lân cận như Messenger, Zalo, …. thông qua khảo sát, từ đó để phát triển một
ứng dụng trị chuyện ẩn danh trực tuyến mang tính tối ưu, tiện lợi và bảo tồn lợi
ích người dùng.
1.1.2.
Phạm vi
Vì thời gian tìm hiểu có hạn nên trước mắt nhóm sẽ hướng đến hồn thiện ứng
dụng trò chuyện ẩn danh cơ bản với các chức năng ghép cặp, kết bạn, quản lý
2
thơng tin cá nhân, nghe nhạc trong phịng chat,… Dần theo sau đó sẽ cố gắng
phát triển trang web quản lý cho admin và hướng đến một mạng xã hội thu nhỏ
cho đồ án 2 và khoá luận tốt nghiệp.
1.2. Cơng cụ sử dụng
Cơng cụ phân tích và thiết kế Database : Draw.io, MongoDB
Công cụ thiết kế giao diện : Figma
Cơng cụ lập trình : Visual Studio Code
Cơng cụ quản lý dự án : Github, Messger, Trello, Discord
Công cụ lưu trữ các tài liệu liên quan : Google Drive, Github
3
Chương 2. CƠ SỞ LÝ THUYẾT
2.1. NodeJS
Hình 2.1-1. NodeJS
2.1.1.
Giới thiệu
NodeJS là một nền tảng được xây dựng trên “V8 Javascript engine” được viết
bằng C++ và Javascript. Nền tảng này được phát triển bởi Ryan Lienhart Dahl
vào năm 2009. Node.js là một mã nguồn mở, một môi trường cho các máy chủ và
ứng dụng mạng.
NodeJS ra đời khi các developer đời đầu của JavaScript mở rộng nó từ một thứ
bạn chỉ chạy được trên trình duyệt thành một thứ bạn có thể chạy trên máy của
mình dưới dạng ứng dụng độc lập.
NodeJS chứa một thư viện built-in cho phép các ứng dụng hoạt động như một
Webserver mà không cần phần mềm như Nginx, Apache HTTP Server hoặc IIS.
NodeJS cung cấp kiến trúc hướng sự kiện (event-driven) và non-blocking I/O
API, tối ưu hóa thơng lượng của ứng dụng và có khả năng mở rộng cao.
4
Mọi hàm trong NodeJS là không đồng bộ (asynchronous). Do đó, các tác vụ đều
được xử lý và thực thi ở chế độ nền (background processing).
2.1.2.
Lý do sử dụng
-
Kết hợp tốt với NoSQL, cụ thể là MongoDB cho đồ án lần này
-
Thường được sử dụng để build websocket sever (Chat Sever)
-
Ứng dụng Web thực: Dùng để xây dựng 1 ứng dụng chat, feed... Facebook,
Twitter là điển hình cho Web thực. NodeJS làm khá tốt điều đó!
-
Stream Data (Luồng dữ liệu): Các web thông thường gửi HTTP request và
nhận phản hồi lại (Luồng dữ liệu). Giả xử sẽ cần xử lý 1 luồng giữ liệu cực
lớn, NodeJS sẽ xây dựng các Proxy phân vùng các luồng dữ liệu để đảm bảo
tối đa hoạt động cho các luồng dữ liệu khác. Sau đó lấy reponse được trả về
nhằm đưa vào Mobile app.
-
NodeJS sẽ tận dụng tối đa Unix để hoạt động. Nói cách khác, NodeJS có thể
xử lý hàng nghìn tiến trình và trả ra 1 luồng khiến cho hiệu xuất hoạt động đạt
mức tối đa nhất và tuyệt vời nhất.
2.2. MongoDB
Hình 2.2-1. MongoDB
5
2.2.1.
Giới thiệu
MongoDB chính là một dạng cả NoSQL. Hay nói một cách đơn giản MongoDB
chính là một database hướng tài liệu. Nó chính là một hệ quản trị cơ sở dữ liệu mã
nguồn mở. MongoDB cho phép bạn mở rộng tài liệu được lưu trữ trong
Document kiểu JSON. Thay vì trước đó các bạn phải dùng dạng bảng như cơ sở
dữ liệu quan hệ. Nếu không sử dụng MongoDB khi truy vấn dữ liệu sẽ rất lâu và
phải thực hiện nhiều bước.
Với các cơ sở dữ liệu dạng (SQL) chúng ta phải biết đến những khái niệm các
bảng, các cơ sở dữ liệu quan hệ. Thậm chí, chúng ta cịn phải dùng đến các bảng
để lưu dữ liệu. Thì khi đến với MongodB các bạn sẽ chỉ dùng khái niệm
Collection thay vì bảng như trước
2.2.2.
-
Lý do sử dụng
Sử dụng lưu trữ dữ liệu dưới dạng JSON: Nhờ có nó nên mỗi một collection
đều sẽ có các kích cỡ và các Document khác nhau. Sự linh hoạt trong việc lưu
trữ dữ liệu của MongoDB là rất hữu dụng. Nó giúp chúng ta có thể thêm dữ
liệu bất kỳ lúc nào.
-
Khơng có sự ràng buộc lẫn nhau trong dữ liệu: Không cần kiểm tra thoả mãn
ràng buộc để thêm/xoá/sửa dữ liệu, đặc trưng của NoSQL
-
Tốc độ truy vấn cực kỳ cao: Tất cả đều được tối ưu nhanh hơn so với các hệ
thống quản trị dữ liệu quan hệ khác. Từ những thử nghiệm cho thấy, tốc độ
của MongoDb có thể nhanh gấp 100 lần so với MySQL.
-
Khái niệm thay đổi: Không còn quan tâm tới bảng, ràng buộc, chúng ta chỉ
còn khái niệm Collection(thay cho bảng) và document(thay cho cột). Các
Collection trong MongoDB được cấu trúc linh hoạt. Các bạn có thể sử dụng
nó để cho phép các dữ liệu lưu trữ. Mà các bạn không cần phải tuân theo một
cấu trúc nhất định như ban đầu. Những thông tin liên quan đến nhau sẽ cùng
được lưu trữ để truy vấn nhanh hơn. Nhờ có ngơn ngữ truy vấn MongoDB các
6
bạn có thể thực hiện những điều này. Đây chính là lý do vì sao, nhiều người
muốn tìm hiểu về cách sử dụng MongoDB.
2.3. Flutter
Hình 2.3-1. Flutter
2.3.1.
Giới thiệu
Flutter là mobile 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.
Flutter hồn tồn miễn phí và cũng là mã nguồn mở, là một framwork dựa trên
ngơn ngữ lập trình Dart – một ngơn ngữ lập trình hướng đối tượng khá là dễ học.
Flutter có thể xây dựng ứng dụng đa nền tảng , và ngày càng được cập nhật nhiều
hơn, hiện đại hơn (Web, Desktop App, Mobile App).
Flutter phù hợp với rất nhiều IDE như : Android Studio, IntelliJ IDEA, Visual
Studio Code (buộc phải xây dugnjw máy ảo trong một trong hai IDE được nêu
tên trước)
7
2.3.2.
-
Lý do sử dụng
Hot Reload: Không cần rebuild lại app, chỉ cần bấm tổ hợp phím ctrl + S để
lưu lại những thay đổi và áp dụng ngay trên máy ảo/ điện thoại đang sử dụng
để debug. Đây là một tính năng quá là tiện lợi để kiểm tra độ tương thích cũng
như khả năng hoạt động, hiệu năng của Flutter.
-
Thành phần UI tích hợp phong phú, mọi thứ đều là Widget: với 2 bộ Widget
phổ biến là Material Design và Cupertino trên mọi nền tảng lập trình (Web,
Mobile App,…), một tên gọi khá quen thuộc với mọi lập trình viên. Tất nhiên
ở Flutter, chúng ta có thể sử dụng mọi thứ từ hai bộ Widget trên, và trên mọi
nền tảng nữa, sẽ có tính đồng bộ trên đa thiết bị (Android, IOS). Không những
thế, khi mọi thứ là widget, chúng ta có thể sử dụng thừa kế, nhằm tinh chỉnh
lại widget theo đúng ý mình.
-
Quá nhiều package hỗ trợ cả android và IOS (chủ yếu), cộng với sự đơn giản
nhưng không kém phần linh hoạt và tốc độ phản hồi nhanh đến khó tin khiến
cho flutter được ưa chuộng cho việc phát triển các ứng dụng di động đa nền
tảng.
8
Chương 3. TÌM HIỂU VỀ FLUTTER
Hình 2.3-1. FLutter
3.1. Giới thiệu chung
Flutter là mobile app SDK của Google để tạo ứng dụng có trải nghiệm và chất
lượng tốt nhất trên iOS và Android. Flutter được phát triển bởi các developers và
các tổ chức trên khắp thế giới. Flutter là mã nguồn mở và miễn phí. Khơng phải
ngẫu nhiên mà ngày ngày Flutter càng được ưa chuộng và hướng tới nhiều hơn, do
tính thuận tiện, nhanh lẹ trong phát triển và tính đa nền tảng hiện có.
3.1.1.
Lịch sử phát triển
Phiên bản đầu tiên của Flutter được biết đến với cái tên ‘Sky’ và chạy trên hệ điều
hành Android. Lần đầu tiên được công bố là ở hội nghị thượng đỉnh dành cho các
nhà phát triển Dart với mục đích ban đầu được đề ra là tốc độ hiển thị khung hình
120 FPS(Frame Per Second). Kế đến là ở Thượng Hải(Trung Quốc) vào tháng 9
năm 2018, khi Google công bố bản xem trước khi phát hành Flutter 2.0, bản
chính thức cuối cùng từ Google trong khoảng thời gian từ ấy đến giờ, sau khi đã
phát hành Flutter 1.0 vào ngày 4 tháng 12 cùng năm, tại sự kiện Flutter Live.
9
Vào ngày 6 tháng 5 năm 2020, bộ công cụ phát triển phần mềm Dart (SDK) phiên
bản 2.8 và Flutter 1.17.0 đã được phát hành, bổ sung hỗ trợ cho API Metal giúp
cải thiện hiệu suất trên thiết bị iOS lên khoảng 50%, cũng như các tiện ích
Material mới và theo dõi mạng công cụ phát triển.
Vào ngày 3 tháng 3 năm 2021, Google đã phát hành Flutter 2.0 trong một sự kiện
Flutter Engage Online. Bản phát hành này sử dụng Dart 2.0, gây ra nhiều thay đổi
đột phá và các vấn đề với nhiều gói bên ngồi; tuy nhiên, nhóm Flutter đã bao
gồm các hướng dẫn và cơng cụ để giảm thiểu những vấn đề này.
Vào ngày 8 tháng 9 năm 2021, Dart 2.14 và Flutter 2.5 đã được Google phát
hành. Bản cập nhật đã mang lại những cải tiến cho Android. Dart đã nhận được
hai bản cập nhật mới.
Phiên bản ổn định mới nhất của Flutter là 3.0.1, vừa được cập nhật vào năm nay 2022 và phiên bản Dart là 2.17.1.
3.1.2.
Đối tượng hướng đến
Flutter hướng tới 3 đối tượng chính:
-
Với các Developer: Flutter giảm thời gian xây dựng một ứng dụng. Thêm vào
đó, Flutter cịn giúp tăng tốc độ phát triển ứng dụng, giảm chi phí và nhân lực
do dự án được viết với Flutter có thể chạy trên 2 nền tảng iOS và Android.
Không những thế, Flutter còn đang hướng tới các nền tảng như Desktop(hiện
đã và đang được đưa vào sử dụng) và Web (chỉ đang debug với một số thư
viện cơ bản, không thể áp dụng các thư viện riêng của Android,IOS như
Vibration, …..)
-
Với các Designer: Flutter cùng với các thành phần UI tích hợp đẹp mắt, đa
dạng, phong phú, giúp các designer có thể thay đổi thiết kế ứng dụng mà
không quá phức tạp. ‘Mọi thứ đều là Widget’ là phát biểu khẳng định đặc tính
của Flutter. Vốn dĩ là mobile UI framework do Google phát triển đầu tiên, và
là một mã nguồn mở miễn phí, chỉ với các thứ viện cơ bản, chúng ta có thể
định hình giao diện của app bằng các chuỗi widget cha con nối dài.
10
-
Với các User: Flutter giúp giao diện trở nên sinh động, bắt mắt, tương tác và
hiệu năng cũng rất đáng để ý.
3.1.3.
Ngơn ngữ sử dụng
Hình 3.1-1. Dart
Flutter sử dụng ngơn ngữ Dart – một ngơn ngữ lập trình đa mục đích, được phát
triển bởi Google.
Dart chịu nhiều ảnh hưởng từ các ngơn ngữ lập trình khác, nhưng thứ ảnh hưởng
to lớn đến Dart chính là Java. Vậy nên nếu đã biết và học về ngơn ngữ lập trình
Java, q trình làm quen và sử dụng được Dart sẽ được rút gọn đi rất nhiều do
tính tương đồng của Dart trong lúc lập trình khi được so với Java. Và bởi Java là
ngơn ngữ lập trình hướng đối tượng(OOP), cũng đồng nghĩa với việc Dart cũng là
ngơn ngữ lập trình hướng đối tượng(OOP), mang trong mình tính đóng
gói(Encapsulation), đa hình(Polymorphism), kế thừa(Inheritance) và trừu
tượng(Abstraction). Dart sử dụng cú pháp của C (C-style syntax).
11