Flutter sử dụng ngôn ngữ Dart để phát triển ứng dụng, và có thể tạo ra các ứng dụng chạy trên các nền tảng khác nhau, bao gồm Android, iOS, Web, và máy tính để bàn Windows, macOS, Linux.
Trang 1Người xem xét: Trần Thanh TùngNgày lập: ……/10/2023
Người duyệt: Trần Châu Thanh ThiệnNgày duyệt: ……/10/2023
ĐD khách hàng duyệt: Khoa Công nghệ thông tinNgày duyệt: ……/10/2023
Trang 2DANH SÁCH THÀNH VIÊN
Trang 3LỊCH SỬ THAY ĐỔI TÀI LIỆU
Ngày thay
<dd/mm/yy> <Vx.y> <Mô tả chi tiết Mục, bảng, sơ đồ
nào thay đổi; nội dung thay đổi là gì>
<Họ tên người lập, nhóm lập>
Trang 4MỤC LỤC
1 GIỚI THIỆU CHUNG
1.1 Mục đích
1.2 Phạm vi
1.3 Các định nghĩa, thuật ngữ, từ viết tắt
1.4 Tài liệu tham khảo
2 PHÂN TÍCH YÊU CẦU
2.1 Đặc tả các yêu cầu
2.1.1 Yêu cầu về chức năng
2.1.2 Yêu cầu về chức năng
2.2 Mô tả các chức năng của phần mềm
5.1 Mô hình use case
5.2 Danh sách các tác nhân và mô tả
5.3 Danh sách Use case và mô tả
5.4 Các điều kiện phụ thuộc
6 ĐẶC TẢ CÁC YÊU CẦU CHỨC NĂNG (FUNCTIONAL)
6.1 UC_001_Tên use case
6.1.1 Mô tả use case UC_001
6.1.2 Biểu đồ
6.2 UC_002_Tên use case
6.2.1 Mô tả use case UC_002
6.2.2 Biểu đồ
7 THIẾT KẾ GIAO DIỆN
7.1 Giao diện quản trị
7.2 Giao diện người dùng
8 KIỂM THỬ PHẦN MỀM
8.1 Kiểm thử bộ phận
Trang 61 CƠ SỞ LÝ THUYẾT
1.FLUTTER
1.Khái niệm :
Flutter là một framework mobile UI mã nguồn mở do Google phát triển và phát hành vào tháng 5 năm 2017 Flutter sử dụng ngôn ngữ Dart để phát triển ứng dụng, và có thể tạo ra các ứng dụng chạy trên các nền tảng khác nhau, bao gồm Android, iOS, Web, và máy tính để bàn (Windows, macOS, Linux)
1 CƠ SỞ LÝ THUYẾT
1.FLUTTER
1.1 2.DART 7 1.Khái niệm
Dart là một ngôn ngữ lập trình đa mục đích mã nguồn mở, đã được đặt nền móng bởi Google.Dart là ngôn ngữ lập trình chính thức của Flutter.Sự đa dạng của Dart thể hiện thông qua khả năng phát triển ứng dụng web, di động, máy chủ và máy tính để bàn
1.Phát triển ứng dụng di động 10
2.Phát triển ứng dụng web 10
3.Quản lý đăng nhập 11
4.Phân tích dữ liệu 11
Trang 72 PHÂN TÍCH YÊU CẦU 2.1 Đặc tả các yêu cầu14
2.1.1 Yêu cầu về chức năng 142.1.2 Yêu cầu về chức năng 142.2 Mô tả các chức năng của phần mềm14
3 THIẾT KẾ GIAO DIỆN
4 KIỂM THỬ PHẦN MỀM 4.1 Kiểm thử bộ phận18
4.2 Kiểm tích hợp18
4.3 Kiểm thử hệ thống18
4.4 Kiểm thử chấp nhận18
5 DEMO KẾT QUẢ
6 CÁC THÔNG TIN HỖ TRỢ KHÁC
2.Cấu trúc của Flutter
Flutter có cấu trúc như sau:
Dart SDK: SDK chính thức của ngôn ngữ Dart
Flutter SDK: SDK chính thức của Flutter
Flutter Engine: Bộ xử lý chính của Flutter, chịu trách nhiệm hiển thị, tương tác
Trang 8Ưu điểm:
Tiết kiệm thời gian và chi phí: Flutter cho phép các nhà phát triển sử dụng mộtngôn ngữ lập trình và một nền mã để xây dựng ứng dụng cho nhiều nền tảng,bao gồm Android, iOS, Web, và máy tính để bàn Điều này giúp các nhà pháttriển có thể tiết kiệm thời gian và chi phí trong quá trình phát triển ứng dụng.Tạo trải nghiệm người dùng nhất quán: Flutter sử dụng một bộ widget phongphú, giúp các nhà phát triển có thể tạo ra các ứng dụng có giao diện người dùngnhất quán trên nhiều nền tảng Điều này giúp các nhà phát triển có thể mang lạitrải nghiệm người dùng tốt nhất cho người dùng trên tất cả các nền tảng.Đạt hiệu suất cao: Flutter sử dụng công nghệ hiển thị 2D native, giúp các ứngdụng tạo ra bởi Flutter có hiệu suất cao và tương đương với các ứng dụngnative
Hỗ trợ hot reload: Hot reload là một tính năng của Flutter giúp các nhà pháttriển có thể xem ngay lập tức các thay đổi của mã nguồn trong ứng dụng đangchạy Điều này giúp các nhà phát triển có thể tiết kiệm thời gian và công sứctrong quá trình phát triển ứng dụng
Cộng đồng phát triển lớn và tích cực: Flutter có một cộng đồng phát triển lớn
và tích cực, cung cấp nhiều tài nguyên và hỗ trợ cho các nhà phát triển.Nhược điểm:
Có thể phức tạp hơn so với các framework đa nền tảng khác: Flutter sử dụngmột bộ widget phong phú và linh hoạt, nhưng cũng có thể gây phức tạp cho cácnhà phát triển mới làm quen
Hỗ trợ cho các tính năng native có thể bị hạn chế: Flutter sử dụng công nghệhiển thị 2D native, nhưng có thể không hỗ trợ đầy đủ tất cả các tính năng nativecủa các nền tảng
Cộng đồng phát triển vẫn đang phát triển: Flutter là một framework mới vàcộng đồng phát triển vẫn đang phát triển Điều này có thể dẫn đến thiếu các tàinguyên và hỗ trợ cho các tính năng cụ thể
4.Các Widget của flutter
Widget Material Design
Widget Material Design là các widget được thiết kế theo phong cách Material Designcủa Google Nó là một ngôn ngữ thiết kế cung cấp một bộ nguyên tắc và hướng dẫn
để xây dựng giao diện người dùng đẹp mắt và dễ sử dụng
Trang 9Một số widget Material Design thường dùng như:
Text: Widget để hiển thị văn bản
Button: Widget để tạo nút bấm
Image: Widget để hiển thị hình ảnh
Container: Widget để chứa các widget khác
Row: Widget để sắp xếp các widget theo chiều ngang
Column: Widget để sắp xếp các widget theo chiều dọc
Widget Cupertino
Widget Cupertino là các widget được thiết kế theo phong cách iOS Cupertino cungcấp các widget tương tự như các widget của iOS, giúp các nhà phát triển có thể tạo racác ứng dụng Flutter có giao diện giống như iOS
Một số widget Cupertino thường gặp:
CupertinoButton: Widget để tạo nút bấm theo phong cách iOS
CupertinoTextField: Widget để tạo trường văn bản theo phong cách iOS.CupertinoPicker: Widget để tạo trình chọn theo phong cách iOS
CupertinoAlertDialog: Widget để tạo hộp thoại theo phong cách iOS.Các loại widget khác có thể kể đến như:
StatelessWidget: Widget không có trạng thái
StatefulWidget: Widget có trạng thái
InheritedWidget: Widget có thể được truy cập bởi các widget con của nó.MediaQuery: Widget để truy cập thông tin về màn hình hoặc thiết bị.Layout: Widget để sắp xếp các widget
5.Ứng dụng của flutter
Một số ứng dụng phổ biến sử dụng Flutter như:
Google Ads: Ứng dụng quảng cáo của Google
Trang 10Google Pay: Ứng dụng thanh toán của Google.
Tinder: Ứng dụng hẹn hò
The Skyscanner app: Ứng dụng đặt vé máy bay Skyscanner
The eBay app: Ứng dụng mua sắm eBay
6.Kết luận
Flutter là một framework mobile UI mạnh mẽ và linh hoạt, mang lại nhiều lợi ích chocác nhà phát triển ứng dụng Nếu bạn đang tìm kiếm một framework mobile để pháttriển các ứng dụng đẹp,dễ dùng, nhanh chóng và hiệu quả, thì Flutter là một lựa chọnđáng cân nhắc
1.Khái niệm
Dart là một ngôn ngữ lập trình đa mục đích mã nguồn mở, đã được đặt nềnmóng bởi Google.Dart là ngôn ngữ lập trình chính thức của Flutter.Sự đa dạngcủa Dart thể hiện thông qua khả năng phát triển ứng dụng web, di động, máychủ và máy tính để bàn
2.Lịch sử ra đời của Dart
Trong lĩnh vực lập trình, Dart là đứa con tâm huyết từ Lars Bak và Kasper Lund, ra đời dưới sự quản lý của Google Bắt đầu từ lần ra mắt tại hội nghị GOTO tại Đan Mạch vào ngày 10 tháng 12 tháng 10 năm 2011, Dart đã chứng tỏ tiềm năng vô hạn của mình Một cột mốc quan trọng được ghi dấu bằng việc phát hành phiên bản Dart 1.0 vào ngày 14 tháng 11 năm 2013 Mặc dù ban đầu, Dart nhận được những ý kiến trái chiều, nhưng những phản hồi này không thể ngăn cản sự tiến bộ vượt trội của Dart
Quãng thời gian này còn đánh dấu sự chuyển mình từ kế hoạch máy ảo Dart trong Chrome, sang việc biên dịch mã Dart thành JavaScript, điều quan trọng mà phiên bản Dart 2.0 đã mang lại vào tháng 8 năm 2018, cùng với những thay đổi ngôn ngữ kể cả
hệ thống kiểu
Trang 113.Ưu và nhược điểm của Dart
Ưu điểm :
Dễ học: Dart là một ngôn ngữ lập trình hiện đại, được thiết kế để dễ học và sử dụng Cú pháp của Dart đơn giản và trực quan, tương tự như các ngôn ngữ lập trình phổ biến khác
Kiểu dữ liệu mạnh mẽ: Dart là một ngôn ngữ lập trình tĩnh, có kiểu dữ liệu mạnh mẽ Điều này giúp tránh các lỗi thời gian chạy và tăng tính bảo mật của mã
Hỗ trợ nhiều tính năng hiện đại: Dart hỗ trợ nhiều tính năng hiện đại như generics, async/await, và type inference Các tính năng này giúp các nhà phát triển viết mã hiệu quả và dễ bảo trì hơn
Linh hoạt: Dart là một ngôn ngữ lập trình linh hoạt, có thể được sử dụng để phát triển các ứng dụng khác nhau, bao gồm ứng dụng Flutter, ứng dụng web,
và ứng dụng máy tính để bàn
Nhược điểm :
Cộng đồng phát triển vẫn đang phát triển: Dart là một ngôn ngữ lập trình mới
ra mắt gần đây và cộng đồng phát triển vẫn chưa lớn Điều này có thể dẫn đến thiếu các tài nguyên và hỗ trợ cho các tính năng cụ thể
Hỗ trợ cho các tính năng native có thể bị hạn chế: Dart là một ngôn ngữ lập trình đa nền tảng, nhưng có thể không hỗ trợ đầy đủ tất cả các tính năng native của các nền tảng
4.Mối liên hệ Dart và Flutter
Dart là ngôn ngữ lập trình chính thức của Flutter Flutter là một framework phát triển ứng dụng đa nền tảng, cho phép các nhà phát triển xây dựng ứng dụng cho Android, iOS, Web, và máy tính để bàn Flutter sử dụng Dart để xây dựng giao diện người dùngcủa ứng dụng
Dart là một ngôn ngữ lập trình linh hoạt, có thể được sử dụng để phát triển các ứng dụng khác nhau ngoài Flutter Tuy nhiên, Dart được sử dụng phổ biến nhất để phát triển ứng dụng với Flutter
Trang 12Firebase cung cấp các dịch vụ, bao gồm:
Firebase Authentication: Dịch vụ xác thực người dùng giúp các nhà phát triển
dễ dàng xác thực người dùng trong ứng dụng của họ
Firebase Realtime Database: Cơ sở dữ liệu thời gian thực giúp các nhà phát triển lưu trữ và truy cập dữ liệu thời gian thực trong ứng dụng của họ.Firebase Cloud Firestore: Cơ sở dữ liệu NoSQL giúp các nhà phát triển lưu trữ
và truy cập dữ liệu trong ứng dụng của họ
Firebase Storage: Dịch vụ lưu trữ đám mây giúp các nhà phát triển lưu trữ và truy cập tệp trong ứng dụng của họ
Firebase Cloud Functions: Dịch vụ hàm đám mây giúp các nhà phát triển chạy
Trang 13về hệ điều hành
2.Phát triển ứng dụng web
Ngoài việc hỗ trợ phát triển ứng dụng di động, Firebase còn giúp phát triển ứng dụng web Các API đơn giản và hữu dụng của nó giúp xây dựng ứng dụng mà không cần backend và server
3.Lưu trữ và đồng bộ dữ liệu
Firebase thường xuyên sao lưu dữ liệu nhằm đảo bảo tính sẵn có của dữ liệu Bên
Trang 14cạnh đó, chức năng này của Firebase còn giúp bảo vệ một cách tốt nhất cho các thông tin và dữ liệu của người dùng khi có trường hợp xấu xảy ra.
Trang 15Tiết kiệm thời gian và chi phí: Firebase cung cấp một loạt các dịch vụ và công
cụ giúp các nhà phát triển xây dựng, vận hành và bảo mật ứng dụng của họ mộtcách nhanh chóng và dễ dàng
Tăng hiệu quả: Firebase giúp các nhà phát triển tập trung vào việc phát triển ứng dụng của họ, thay vì lo lắng về cơ sở hạ tầng và bảo mật Nâng cao trải nghiệm người dùng: Firebase cung cấp các tính năng giúp cải thiện trải nghiệm người dùng, chẳng hạn như xác thực thời gian thực và cơ sở dữ liệu thời gian thực
Linh hoạt: Firebase có thể được sử dụng để xây dựng các ứng dụng khác nhau, bao gồm ứng dụng di động, ứng dụng web, và ứng dụng doanh nghiệp Điều này giúp các nhà phát triển có thể sử dụng Firebase cho nhiều loại ứng dụng khác nhau
Trang 16Hỗ trợ tốt: Firebase có một cộng đồng phát triển lớn và tích cực, cung cấp nhiều tài nguyên và hỗ trợ cho các nhà phát triển Điều này giúp các nhà phát triển có thể dễ dàng tìm hiểu và sử dụng Firebase.
5.Ứng dụng của firebase
Firebase được sử dụng trong các ứng dụng thực tế:
Ứng dụng Twitter: Twitter sử dụng Firebase để xác thực người dùng, lưu trữ
dữ liệu tweet, và gửi thông báo
Ứng dụng Uber: Uber sử dụng Firebase để xác thực người dùng, theo dõi vị trí của tài xế và hành khách, và gửi thông báo
Ứng dụng Airbnb: Airbnb sử dụng Firebase để xác thực người dùng, lưu trữ dữliệu về danh sách chỗ ở, và gửi thông báo
Ứng dụng Spotify: Spotify sử dụng Firebase để xác thực người dùng, lưu trữ
dữ liệu về danh sách phát nhạc, và gửi thông báo
Trang 172 PHÂN TÍCH YÊU CẦU
2.1.1 Yêu cầu về chức năng
- Có thể sign in / sign out, sign up vào ứng dụng
- Có thể đăng tải bài viết, ảnh lên trên ứng dụng
- Có thể Follow người mình yêu thích
- Có thể thả tim, bình luận vào các bài viết mà mình đang Follow
- Có thể Chat qua lại với các người dùng khác
2.1.2 Yêu cầu về chức năng
- Chức năng sign in / sign out:
o Sign in:
Khi người dùng truy cập vào ứng dụng, sẽ xuất hiện màn hình đăngnhập, người dùng sẽ đăng nhập email và passworrd nếu đã có tài khoảntrước trong hệ thống của ứng dụng
o Sign out:
Khi đã đăng nhập thành công nhưng người dùng muốn sử dụng thêmmột tài khoản khác, người dùng có thể ấn vào sign out để đăng xuất tàikhoản hiện tại ra khỏi ứng dụng
- Chức năng sign up:
o Trường hợp người dùng chưa có tài khoản trong hệ thống của ứng dụng, ngườidùng sẽ ấn vào sign up để đăng ký tài khoản cho cá nhân, chỉ cần điền cácthông tin được yêu cầu trong mục sign up là đã có thể tạo tài khoản thànhcông
Trang 18- Chức năng đăng tải bài viết, ảnh:
o Chức năng trên giúp người dùng có thể chia sẻ cảm xúc cũng như chia sẻnhững khoảnh khắc thông qua việc đăng tải bài viết hoặc ảnh lên trên ứngdụng
- Chức năng Follow người mình yêu thích:
o Chức năng này giúp người dùng có thể Follow người mình yêu thích, có thểxem được các bài viết, khoảnh khắc mà người đang Follow chia sẻ, hoặc nhắntin với người đang Follow
- Chức năng thả tim, bình luận:
o Chức năng này giúp người dùng khi xem được các bài viết mà mình yêu thíchthì có thể thả tim để bài tỏ sự yêu thích, ngoài ra còn có thể bình luận vào bàiviết để tương tác với người dùng khác
- Chức năng Chat với người dùng khác:
o Chức năng này giúp người dùng có thể nhắn tin trò chuyện với những người
mà mình đang Follow
3 THIẾT KẾ DỮ LIỆU
3.1 Danh mục chi tiết các bảng dữ liệu
Thông tin users được tạo ra ở firebase :
Nôi dung khi các user chat với nhau sẽ được lưu lại trong firebase:
Trang 19Định dạng của các tin nhắn cũng được lưu lại ở firebase tránh mất dữ liệu trong quá trìnhhoạt động của app:
Các bài post của user đăng lên sẽ được lưu lại trên firebase :
Trang 203.2 Lược đồ tổng quát của dữ liệu
Trang 233 THIẾT KẾ GIAO DIỆN
Trang 25+Chức năng chat với users khác
+Chức năng tìm kiếm tên bạn
+Chức năng post bài viết
+Chức năng bình luận bài viết
+Chức năng yêu thích bài viết
+Chức năng xóa bài viết
+Chức năng thoát tài khoản
Những điều chưa đạt được:
+Chức năng tải ành đại diện cho bản thân
+Chức năng chỉnh sửa thông tin users
+Chức năng chỉnh sửa thông tin bài viết
Những hướng phát triển trong tương lai:
+thêm tài khoản admin để quản lí các users khác
+thêm tính năng gọi
+thêm tính năng tạo nhóm chat và chat nhóm
BỘ MÔN TTNT
NHÓM 21DTHxx-Nhom-x TRƯỞNG NHÓM
Trang 26Đặng Như Phú
Trang 276 CÁC THÔNG TIN HỖ TRỢ KHÁC
<Các thông tin hỗ trợ có vai trò làm cho tài liệu đặc tả yêu cầu phần mềm dễ sử dụng hơn, bao gồm: Mục lục, Index, Phụ lục kèm theo …>.