Đồ án Tốt nghiệp: Phát triển tính năng Tài khoản Sinh viên cho App TBD

Báo cáo đồ án tốt nghiệp CNTT: Phát triển tính năng tài khoản sinh viên cho ứng dụng TBD. Tìm hiểu quy trình, kết quả và đánh giá chi tiết dự án.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Đồ án tốt nghiệp

2023

44
5
0

Phí lưu trữ

30 Point

Tóm tắt

I. Hướng Dẫn Toàn Diện Đồ Án Tốt Nghiệp CNTT App Sinh Viên

Trong bối cảnh chuyển đổi số giáo dục, việc phát triển ứng dụng di động dành cho sinh viên ngày càng trở nên cấp thiết. Một báo cáo khóa luận tốt nghiệp về đề tài này không chỉ thể hiện năng lực kỹ thuật mà còn cho thấy khả năng giải quyết vấn đề thực tiễn. Đề tài phát triển tính năng tài khoản sinh viên cho App TBD là một ví dụ điển hình, tập trung vào việc xây dựng một cổng thông tin sinh viên thu nhỏ ngay trên smartphone. Mục tiêu chính là tạo ra một nền tảng tiện lợi, cho phép sinh viên truy cập thông tin cá nhân, lịch học, điểm số một cách nhanh chóng và bảo mật. Dự án này lựa chọn Flutter, một framework hiện đại của Google, để phát triển ứng dụng trên cả hai nền tảng iOS và Android từ một mã nguồn duy nhất. Đi kèm với đó là Firebase, một hệ thống backend mạnh mẽ, cung cấp các dịch vụ như xác thực người dùng (Authentication) và cơ sở dữ liệu thời gian thực (Firestore). Sự kết hợp này giúp tối ưu hóa thời gian và nguồn lực, đồng thời đảm bảo hiệu suất và khả năng mở rộng cho ứng dụng. Đồ án công nghệ phần mềm này không chỉ dừng lại ở việc lập trình mà còn bao gồm các giai đoạn quan trọng khác như phân tích yêu cầu, thiết kế CSDL, và xây dựng giao diện người dùng (UI/UX), mang lại một cái nhìn tổng quan về quy trình hoàn chỉnh để tạo ra một sản phẩm công nghệ.

1.1. Tầm quan trọng của cổng thông tin sinh viên di động

Các hệ thống quản lý học tập (LMS) truyền thống thường dựa trên nền tảng web, gây bất tiện khi truy cập trên thiết bị di động. Một mobile app chuyên biệt giải quyết triệt để vấn đề này, mang lại trải nghiệm người dùng mượt mà và tức thì. Sinh viên có thể nhận thông báo đẩy về lịch học, hạn nộp bài, hoặc thông báo từ nhà trường. Việc tích hợp các tính năng cốt lõi như xem điểm, lịch học, và đăng ký tín chỉ online vào một ứng dụng duy nhất giúp đơn giản hóa các thủ tục hành chính, tiết kiệm thời gian và nâng cao sự hài lòng của người học.

1.2. Mục tiêu nghiên cứu của đồ án công nghệ phần mềm này

Mục đích chính của tài liệu đồ án CNTT này là củng cố kiến thức về lập trình di động và tạo ra một sản phẩm có tính ứng dụng thực tế. Cụ thể, đề tài đặt ra các mục tiêu: tìm hiểu sâu về framework Flutter và ngôn ngữ Dart; nghiên cứu và áp dụng các dịch vụ của Firebase, đặc biệt là Firebase Authentication và Firestore, để xây dựng backend; và thiết kế, triển khai các tính năng cơ bản cho tài khoản sinh viên, bao gồm đăng ký, đăng nhập và quản lý hồ sơ cá nhân. Qua đó, sinh viên có thể nắm vững quy trình phát triển ứng dụng từ ý tưởng đến sản phẩm hoàn chỉnh.

1.3. Tổng quan công nghệ Flutter và Firebase trong dự án

Flutter được chọn vì khả năng phát triển đa nền tảng nhanh chóng, hiệu suất cao gần như ứng dụng gốc và tính năng Hot Reload giúp tiết kiệm thời gian gỡ lỗi. Trong khi đó, Firebase cung cấp một bộ công cụ backend-as-a-service (BaaS) toàn diện. Firebase Authentication xử lý việc đăng nhập an toàn, Cloud Firestore cung cấp cơ sở dữ liệu NoSQL linh hoạt để lưu trữ dữ liệu người dùng. Sự kết hợp này tạo thành một kiến trúc mạnh mẽ, cho phép nhà phát triển tập trung vào logic và giao diện ứng dụng mà không cần quản lý hạ tầng máy chủ phức tạp.

II. Phân Tích Thách Thức Khi Xây Dựng Hệ Thống Quản Lý Sinh Viên

Việc xây dựng một ứng dụng di động cho quản lý sinh viên đặt ra nhiều thách thức đáng kể. Trước hết là vấn đề về hiệu năng và trải nghiệm người dùng. Một ứng dụng chậm, khó sử dụng sẽ nhanh chóng bị người dùng từ bỏ. Thách thức thứ hai là bảo mật thông tin. Dữ liệu sinh viên, bao gồm thông tin cá nhân và kết quả học tập, là những dữ liệu nhạy cảm cần được bảo vệ nghiêm ngặt. Hệ thống xác thực người dùng phải đủ mạnh để chống lại các truy cập trái phép. Thêm vào đó, việc đồng bộ hóa dữ liệu giữa thiết bị của người dùng và máy chủ phải được thực hiện một cách liền mạch, ngay cả khi kết nối mạng không ổn định. Trong khuôn khổ báo cáo khóa luận tốt nghiệp, các vấn đề này cần được phân tích kỹ lưỡng. Đề tài đã chỉ ra những khó khăn ban đầu khi tiếp cận công nghệ mới như Flutter và Dart, đòi hỏi người thực hiện phải có thời gian nghiên cứu và học hỏi. Ngoài ra, việc thiết kế một UI/UX cho app sinh viên vừa trực quan, vừa đầy đủ chức năng cũng là một bài toán khó, cần sự cân bằng giữa thẩm mỹ và tính khả dụng. Cuối cùng, việc tích hợp với các hệ thống sẵn có của nhà trường (nếu có) cũng là một rào cản kỹ thuật lớn, đòi hỏi các giải pháp API phức tạp.

2.1. Hạn chế của các hệ thống quản lý học tập LMS cũ

Các hệ thống quản lý học tập (LMS) hiện tại thường có giao diện lỗi thời và không được tối ưu cho thiết bị di động. Điều này dẫn đến trải nghiệm người dùng kém, khó khăn trong việc tra cứu thông tin nhanh. Sinh viên thường phải thực hiện nhiều bước phức tạp chỉ để xem lịch học hoặc điểm thi. Một mobile app hiện đại cần khắc phục những nhược điểm này bằng cách cung cấp giao diện sạch sẽ, điều hướng đơn giản và truy cập thông tin chỉ với vài lần chạm.

2.2. Yêu cầu về UI UX cho app sinh viên hiện đại và thân thiện

Thiết kế UI/UX cho app sinh viên phải đặt người dùng làm trung tâm. Giao diện cần trực quan, dễ hiểu ngay từ lần sử dụng đầu tiên. Các luồng chức năng như đăng nhập, đăng ký, xem thông tin phải được thiết kế mạch lạc. Màu sắc, font chữ và các biểu tượng cần nhất quán với thương hiệu của trường học nhưng vẫn đảm bảo tính hiện đại. Việc sử dụng các widget có sẵn của Flutter theo phong cách Material Design và Cupertino giúp đẩy nhanh quá trình thiết kế và đảm bảo trải nghiệm quen thuộc cho người dùng trên cả Android và iOS.

2.3. Vấn đề xác thực người dùng và bảo mật thông tin cá nhân

Bảo mật là yếu tố sống còn. Đồ án sử dụng Firebase Authentication để giải quyết bài toán này. Dịch vụ cung cấp các phương thức xác thực an toàn qua email/mật khẩu, đồng thời quản lý các phiên đăng nhập và token một cách tự động. Mọi dữ liệu nhạy cảm truyền đi giữa ứng dụng và máy chủ đều cần được mã hóa. Phía cơ sở dữ liệu, việc thiết lập các quy tắc bảo mật (Security Rules) trên Firestore là bắt buộc để ngăn chặn việc đọc/ghi dữ liệu trái phép, đảm bảo chỉ người dùng đã xác thực mới có thể truy cập thông tin của chính mình.

III. Giải Pháp Công Nghệ Lý Do Flutter Là Lựa Chọn Tối Ưu

Quyết định lựa chọn Flutter làm công nghệ chính cho đồ án công nghệ phần mềm này dựa trên nhiều ưu điểm vượt trội. Flutter là một framework do Google phát triển, cho phép xây dựng các ứng dụng gốc (native) cho di động, web và máy tính từ một cơ sở mã nguồn duy nhất. Điều này giúp tiết kiệm đáng kể thời gian và chi phí phát triển so với việc phải xây dựng hai ứng dụng riêng biệt cho iOS và Android. Một trong những tính năng nổi bật nhất của Flutter là "Hot Reload", cho phép các lập trình viên thấy ngay lập tức kết quả thay đổi trong mã nguồn trên ứng dụng mà không cần phải biên dịch lại toàn bộ. Theo tài liệu báo cáo, tính năng này "giúp tiết kiệm rất nhiều thời gian cho developer". Hơn nữa, Flutter sử dụng ngôn ngữ lập trình Dart, một ngôn ngữ hướng đối tượng, nhanh và được tối ưu hóa cho việc xây dựng giao diện người dùng. Kiến trúc của Flutter không phụ thuộc vào các thành phần UI gốc của hệ điều hành, thay vào đó, nó tự vẽ giao diện bằng công cụ đồ họa Skia, đảm bảo sự nhất quán về giao diện và hiệu năng mượt mà ở 60 khung hình/giây. Điều này làm cho UI/UX cho app sinh viên trở nên biểu cảm và linh hoạt hơn.

3.1. So sánh Flutter và các framework phát triển ứng dụng di động khác

So với các framework đa nền tảng khác như React Native, Flutter có một số lợi thế về hiệu suất. Do không cần cầu nối (bridge) để giao tiếp với các thành phần gốc, Flutter có thể hoạt động nhanh hơn. Tài liệu gốc đề cập rằng: "Người dùng được tạo ra với Flutter thực thi tốt hơn nhiều so với những ứng dụng được tạo ra với các framework phát triển đa nền tảng khác". Trong khi React Native sử dụng JavaScript, một ngôn ngữ rất phổ biến, thì Dart của Flutter lại có ưu thế về biên dịch AOT (Ahead-of-Time), giúp ứng dụng khởi động nhanh và hoạt động ổn định hơn.

3.2. Cấu trúc một project Flutter và vai trò quan trọng của Widget

Trong Flutter, mọi thứ đều là Widget. Từ những thành phần đơn giản như văn bản, nút bấm cho đến toàn bộ màn hình ứng dụng đều được xây dựng bằng cách kết hợp các Widget lại với nhau. Cấu trúc này giúp mã nguồn trở nên rõ ràng và dễ quản lý. Có hai loại Widget chính là StatelessWidget (không có trạng thái, dùng cho các giao diện tĩnh) và StatefulWidget (có trạng thái, dùng cho các giao diện cần thay đổi dựa trên tương tác của người dùng). Việc hiểu rõ cách hoạt động và quản lý trạng thái của Widget là nền tảng để phát triển ứng dụng Flutter hiệu quả.

3.3. Ngôn ngữ Dart Nền tảng cho hiệu suất ứng dụng cao

Dart là một ngôn ngữ lập trình hiện đại, hướng đối tượng và có cú pháp rõ ràng, quen thuộc với các lập trình viên Java hay C#. Nó hỗ trợ cả biên dịch JIT (Just-in-Time) trong quá trình phát triển (giúp kích hoạt tính năng Hot Reload) và AOT (Ahead-of-Time) khi phát hành sản phẩm. Việc biên dịch AOT ra mã máy gốc (ARM hoặc x86) chính là chìa khóa giúp các ứng dụng Flutter đạt được hiệu suất cao. Dart cũng có hệ thống quản lý bộ nhớ hiệu quả và hỗ trợ lập trình bất đồng bộ mạnh mẽ, rất phù hợp cho các tác vụ mạng như gọi API.

IV. Phương Pháp Triển Khai Tính Năng Tài Khoản Sinh Viên Chi Tiết

Quá trình triển khai tính năng tài khoản trong đồ án tốt nghiệp công nghệ thông tin này được chia thành các bước rõ ràng, từ thiết kế cơ sở dữ liệu đến lập trình giao diện và xử lý logic. Nền tảng được sử dụng là Firebase, một giải pháp backend toàn diện của Google, giúp đơn giản hóa việc quản lý dữ liệu và xác thực. Đầu tiên, việc thiết kế CSDL được thực hiện trên Cloud Firestore, một cơ sở dữ liệu NoSQL. Cấu trúc dữ liệu cho người dùng (sinh viên) được định nghĩa bao gồm các trường cơ bản như họ tên, email, ngày sinh, số điện thoại. Tiếp theo, chức năng xác thực người dùng được xây dựng bằng Firebase Authentication. Dịch vụ này hỗ trợ sẵn các luồng đăng ký và đăng nhập bằng email và mật khẩu. Mã nguồn trong báo cáo cho thấy việc sử dụng các phương thức createUserWithEmailAndPassword cho chức năng đăng ký và signInWithEmailAndPassword cho chức năng đăng nhập. Các luồng này được tích hợp với giao diện người dùng để bắt lỗi và hiển thị thông báo phù hợp, ví dụ như khi nhập sai định dạng email hoặc sai mật khẩu. Cuối cùng, chức năng quản lý hồ sơ cá nhân được triển khai để hiển thị thông tin sinh viên sau khi đăng nhập thành công. Dữ liệu này được truy vấn từ Firestore dựa trên ID của người dùng đã được xác thực.

4.1. Thiết kế CSDL trên Firebase và cấu trúc dữ liệu người dùng

Cơ sở dữ liệu trên Cloud Firestore được tổ chức theo collection và document. Trong dự án này, một collection chính là users được tạo ra để lưu trữ thông tin của tất cả sinh viên. Mỗi sinh viên là một document riêng biệt trong collection này. Cấu trúc document bao gồm các trường như full_name, email, dob (ngày sinh), và phone_number. Việc sử dụng email làm một trong các trường chính giúp dễ dàng liên kết với tài khoản trong Firebase Authentication. Mặc dù báo cáo không trình bày chi tiết sơ đồ ERD hay biểu đồ UML, cấu trúc này đủ đơn giản và hiệu quả cho các chức năng cơ bản của ứng dụng.

4.2. Xây dựng chức năng xác thực với Firebase Authentication

Đây là tính năng cốt lõi của module tài khoản. Lập trình viên đã tích hợp Flutter SDK của Firebase vào dự án. Khi người dùng nhấn nút đăng ký, ứng dụng sẽ gọi hàm _auth.createUserWithEmailAndPassword, truyền vào email và mật khẩu. Nếu thành công, một tài khoản mới sẽ được tạo trong Firebase, đồng thời thông tin chi tiết của người dùng sẽ được lưu vào Firestore. Tương tự, khi đăng nhập, hàm _auth.signInWithEmailAndPassword được sử dụng để xác minh thông tin. Quá trình này được đặt trong khối try-catch để xử lý các ngoại lệ như sai mật khẩu hoặc tài khoản không tồn tại.

4.3. Quy trình quản lý và hiển thị thông tin hồ sơ cá nhân

Sau khi đăng nhập thành công, ứng dụng điều hướng người dùng đến màn hình chính. Tại màn hình thông tin sinh viên, ứng dụng thực hiện một truy vấn đến Firestore để lấy dữ liệu. Đoạn mã getUserFullName trong báo cáo cho thấy quy trình này: lấy người dùng hiện tại từ FirebaseAuth.instance, sau đó dùng email của người dùng để truy vấn collection users và lấy ra document tương ứng. Dữ liệu như tên, ngành, mã sinh viên... từ document này sau đó được hiển thị lên giao diện. Đây là một ví dụ điển hình về việc kết hợp giữa dịch vụ xác thực và cơ sở dữ liệu trong Firebase.

V. Kết Quả Demo App Phân Tích Mã Nguồn App Sinh Viên Mẫu

Kết quả thực tiễn của báo cáo khóa luận tốt nghiệp là một ứng dụng demo có thể chạy trên thiết bị Android, thể hiện được các tính năng cốt lõi của module tài khoản sinh viên. Sản phẩm bao gồm ba màn hình chính: Đăng nhập, Đăng ký và Trang chủ sinh viên. Giao diện người dùng (UI) được xây dựng đơn giản, tập trung vào chức năng. Màn hình đăng nhập và đăng ký có các trường nhập liệu cần thiết cùng với cơ chế kiểm tra lỗi (validation) cơ bản, ví dụ như kiểm tra định dạng email và yêu cầu không để trống mật khẩu. Các thông báo lỗi được hiển thị trực quan cho người dùng. Sau khi đăng nhập thành công, người dùng được chuyển đến màn hình chính, nơi hiển thị thông tin cá nhân cơ bản và các menu chức năng khác. Mã nguồn app sinh viên được trình bày trong báo cáo cho thấy sự kết nối thành công với các dịch vụ của Firebase. Đặc biệt, các đoạn mã xử lý sự kiện onPressed cho các nút đăng nhập và đăng ký đã thể hiện rõ logic gọi API của Firebase Authentication và Firestore. Mặc dù một số tính năng như học phí và thời khóa biểu mới chỉ dừng lại ở mức giao diện, nhưng phần nền tảng về tài khoản đã được xây dựng tương đối hoàn chỉnh, tạo tiền đề cho việc phát triển sau này.

5.1. Giao diện các màn hình chính Đăng nhập Đăng ký Trang chủ

Giao diện của ứng dụng được thiết kế theo phong cách tối giản. Màn hình Đăng nhập và Đăng ký sử dụng các widget cơ bản của Flutter như TextFormField cho ô nhập liệu và ElevatedButton cho nút bấm, được đặt trong một Form widget để dễ dàng quản lý và xác thực. Màn hình chính sinh viên được chia bố cục thành hai phần: phần thông tin cá nhân ở trên cùng (avatar, tên) và phần lưới các chức năng ở dưới (làm bài kiểm tra, thời khóa biểu,...). Cách bố trí này khá phổ biến và thân thiện với người dùng mobile app.

5.2. Phân tích API kết nối Firebase lấy thông tin người dùng

Đoạn mã getUserFullName là một minh chứng rõ ràng cho việc kết nối API. Nó sử dụng FirebaseAuth.instance.currentUser để lấy thông tin về người dùng đang đăng nhập. Sau đó, nó sử dụng FirebaseFirestore.instance.collection('users').where('email', isEqualTo: user.email).get() để thực hiện một truy vấn tới Firestore. Lệnh where dùng để lọc ra document có trường email khớp với email của người dùng đã đăng nhập. Khi nhận được kết quả, mã lấy ra giá trị của trường full_name và cập nhật giao diện thông qua setState().

5.3. Đánh giá ưu điểm khuyết điểm và các khó khăn gặp phải

Theo phần tự đánh giá trong báo cáo, đồ án đã thành công trong việc xây dựng các chức năng cơ bản và áp dụng được công nghệ mới. Tuy nhiên, vẫn còn một số khuyết điểm như giao diện chưa được trau chuốt, hệ thống chưa được tối ưu tốt và độ bảo mật còn hạn chế. Các khó khăn chính gặp phải bao gồm việc phải học ngôn ngữ Dart, tìm hiểu về hệ sinh thái widget của Flutter, và làm quen với mô hình quản lý trạng thái. Đây là những thách thức chung cho những người mới bắt đầu với framework này.

VI. Kết Luận Và Hướng Phát Triển Tương Lai Cho Đồ Án Tốt Nghiệp

Báo cáo đồ án tốt nghiệp công nghệ thông tin về đề tài "phát triển tính năng tài khoản sinh viên cho app TBD" đã hoàn thành các mục tiêu cơ bản đề ra. Dự án đã xây dựng thành công một ứng dụng demo đơn giản với các chức năng đăng ký, đăng nhập và hiển thị thông tin người dùng, sử dụng công nghệ Flutter và Firebase. Qua đó, người thực hiện đã củng cố được kiến thức lập trình, nắm bắt được quy trình xây dựng một ứng dụng di động hoàn chỉnh. Mặc dù sản phẩm còn nhiều hạn chế như giao diện chưa tối ưu và thiếu các tính năng nâng cao, nhưng nó đã đặt một nền móng vững chắc. Đây là một tài liệu tham khảo giá trị, cung cấp cái nhìn thực tế về việc áp dụng các công nghệ hiện đại vào giải quyết bài toán quản lý sinh viên. Những kinh nghiệm và khó khăn được ghi nhận trong báo cáo cũng là bài học quý báu cho các dự án tương tự. Việc chia sẻ tài liệu đồ án CNTTmã nguồn app sinh viên này sẽ giúp cộng đồng sinh viên có thêm nguồn tham khảo chất lượng cho các khóa luận của mình. Tóm lại, đề tài đã chứng minh được tính khả thi và tiềm năng của việc sử dụng Flutter và Firebase để xây dựng các hệ thống thông tin cho trường học.

6.1. Tổng kết những kết quả đã đạt được của báo cáo khóa luận

Kết quả chính của báo cáo khóa luận tốt nghiệp là một ứng dụng di động có khả năng kết nối và thao tác với backend Firebase. Đồ án đã triển khai thành công các chức năng: tạo tài khoản người dùng, xác thực đăng nhập, và truy vấn, hiển thị dữ liệu người dùng từ Firestore. Bên cạnh sản phẩm phần mềm, báo cáo cũng là một tài liệu học thuật hoàn chỉnh, trình bày chi tiết từ cơ sở lý thuyết về Flutter, Dart, Firebase đến quá trình phân tích, thiết kế và triển khai hệ thống.

6.2. Lộ trình nâng cấp tính năng Đăng ký tín chỉ online và xem điểm

Hướng phát triển tương lai cho ứng dụng rất rõ ràng. Trước hết là hoàn thiện các tính năng đã có giao diện nhưng chưa có API, như xem học phí. Tiếp theo là bổ sung các chức năng quan trọng khác cho một cổng thông tin sinh viên, bao gồm: đăng ký tín chỉ online, xem điểm chi tiết theo từng học kỳ, xem thời khóa biểu cá nhân, và hệ thống thông báo từ nhà trường. Việc cập nhật, sửa xóa thông tin sinh viên cũng là một tính năng cần thiết. Những nâng cấp này sẽ biến ứng dụng từ một bản demo thành một công cụ hữu ích thực sự.

6.3. Kinh nghiệm và tài nguyên tham khảo cho đồ án tương tự

Dự án này là một nguồn tham khảo hữu ích. Sinh viên thực hiện các đề tài tương tự có thể học hỏi từ việc lựa chọn công nghệ, cấu trúc dự án và cách tích hợp các dịch vụ backend. Các tài nguyên được trích dẫn trong báo cáo như trang chủ của Flutter, Firebase và các khóa học online là điểm khởi đầu tốt. Việc chuẩn bị một slide báo cáo tốt nghiệp rõ ràng, trình bày được các điểm chính từ vấn đề, giải pháp, demo sản phẩm và hướng phát triển là yếu tố quan trọng để bảo vệ thành công một đồ án tốt nghiệp.

11/09/2025

Trích đoạn nội dung tài liệu

CHƯƠNG I.Giới thiệu về đề tài: Tại sao App OPEN DAY chọn Flutter mà không phải là ngôn ngữ khác?  Nếu bạn đang tìm kiếm các phương pháp thay thế để phát triển ứng dụng Android, bạn nên cân nhắc thử Flutter của Google, một framework dựa trên ngôn ngữ lập trình Dart.  Các ứng dụng được xây dựng với Flutter hầu như không thể phân biệt với những ứng dụng được xây dựng bằng cách sử dụng Android SDK, cả về giao diện và hiệu suất. Hơn nữa, với những tinh chỉnh nhỏ, chúng có thể chạy trên thiết bị iOS.  Phát triển ứng dụng thống nhất: Flutter có các công cụ và thư viện để giúp bạn dễ dàng đưa ý tưởng của mình vào cuộc sống trên iOS và Android.

Nếu bạn chưa có kinh nghiệm phát triển trên thiết bị di động, thì Flutter là một cách dễ dàng và nhanh chóng để xây dựng các ứng dụng di động tuyệt đẹp. Nếu bạn là một nhà phát triển iOS hoặc Android có kinh nghiệm, bạn có thể sử dụng Flutter cho các View của bạn và tận dụng nhiều code Java / Kotlin / ObjC / Swift hiện có của bạn.  Framework hiện đại và reactive: Dễ dàng tạo giao diện người dùng của bạn với framework hiện đại, reactive của Flutter và tập hợp các platform, layout và widget phong phú. Giải quyết các thách thức giao diện người dùng khó khăn của bạn với các API mạnh mẽ và linh hoạt cho 2D, animation, gesture, hiệu ứng và hơn thế nữa.

 UI đẹp và biểu cảm: Thỏa mãn người dùng của bạn với các widget built-in đẹp mắt của Flutter theo Material Design và Cupertino (iOS-flavor), các API chuyển động phong phú, scroll tự nhiên mượt mà và tự nhận thức được nền tảng. 6 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP GVHD: Phạm Xuân Bình  Chạy ở 60 fps, giao diện.  Người dùng được tạo ra với Flutter thực thi tốt hơn nhiều so với những ứng dụng được tạo ra với các framework phát triển đa nền tảng khác chẳng hạn như React Native và Ionic. Một số lí do khiến bạn có thể hứng thú với Flutter: o Flutter sử dụng Dart, một ngôn ngữ nhanh, hướng đối tượng với nhiều tính năng hữu ích như mixin, generic, isolate, và static type.

o Flutter có các thành phần UI của riêng nó, cùng với một cơ chế để kết xuất chúng trên nền tảng Android và iOS. Hầu hết các thành phần giao diện người dùng, đều sẵn dùng, phù hợp với các nguyên tắc của Material Design. o Các ứng dụng Flutter có thể được phát triển bằng cách4 sử dụng IntelliJ IDEA, một IDE rất giống với Android Studio. Hiện nay có rất nhiều ngôn ngữ hổ trợ da nền tảng một cái tên lớn phải nhắc đến là React Native.

Các công ty lớn như UberEats, Discord và Facebook đã chuyển sang React Native – như một phần tất yếu của sự dịch chuyển công nghệ. Nhưng Google cũng không chịu thua. Họ đã nhận thấy độ phủ sóng của React Native. Sau 2 năm nghe ngóng, Google cho ra mắt phiên bản alpha của Flutter.

 Hỗ trợ hot reload: Thông thường với lập trình Android bằng Android Studio. Mỗi lần chúng ta thay đổi một dòng code thì đều phải build và chạy lại ứng dụng. Hot reload sẽ giúp chúng ta không phải build lại ứng dụng và chỉ reload lại màn hình đã thay đổi code mà thôi. Điều này sẽ tiết kiệm rất nhiều thời gian cho developer.

 Code structure: Ngược với React Native, Flutter không tách biệt data, style, và templates. Mình biết bạn có thể cảm thấy kì lạ nếu như bạn đã quen với React native. Tuy nhiên, cách tiếp cận này cũng thuận tiện và được khá nhiều người chấp thuận. 7 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP GVHD: Phạm Xuân Bình Flutter không cần thêm ngôn ngữ tạo giao diện như JSX hoặc XML hay các công cụ đặc biệt để tạo layout.

Khi sử dụng Flutter, bạn có thể tiết kiệm thời gian khi không cần phải chuyển từ chế độ thiết kế sang code và ngược lại. Flutter cho phép bạn làm mọi thứ trong cùng một màn hình. Ngoài ra, tất cả các công cụ cần thiết đều có thể truy cập từ cùng một vị trí.  Cài đặt môi trường phát triển: Flutter được đơn giản hóa quá trình cài đặt.

Framework này cũng cung cấp một công cụ hữu ích để kiểm tra lỗi hệ thống được gọi là ” Flutter doctor”.  Hiệu suất sử dụng: Flutter là kiến trúc cho phép chúng ta xây dựng các ứng dụng native, có hiệu suất nhanh. Bởi vì Flutter không cần cầu nối, nó có thể hoạt động nhanh hơn nhiều. Do đó, Flutter có thể chạy animation với 60 khung hình /giây.Mục đích nghiên cứu: - Cũng cố và nắm chắc kiến thức về lập trình di động - Tạo ra một phần mềm ứng dụng vào thực tế.

- Phương pháp để xây dựng một ứng dụng - Biết được cách để tiếp cận một ngôn ngữ mới - Nắm được những kiến thức cơ bản về Android Studio 1. Phương pháp nghiên cứu: - Thu thập tham khảo các tài liệu trên các trang web - Tham khảo ý kiến của giảng viên hướng dẫn để hoàn thiện phần mềm - Xây dựng một phần mềm với công cụ hỗ trợ Flutter và ngôn ngữ Dart 8 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP GVHD: Phạm Xuân Bình CHƯƠNG II. Giới thiệu về Flutter: Flutter là một Framework viết trên nền ngôn ngữ Dart. Flutter được sinh ra như một Cross-platform framework nhưng khác với những Cross-platform hiện tại, Flutter viết mã và build ra các đoạn mã thực thi tương ứng trên các thiết bị khác nhau thay vì build ra thành các đoạn mã được tối ưu và chạy trên những môi trường trung gian.

Flutter được viết chia làm hai tầng. Tầng ở trên sử dụng ngôn ngữ cung cấp các đoạn mã xây dựng lên một ứng dụng Flutter. Các đoạn mã này cung cấp phương tiện để có thể thay đổi và chỉnh sửa chúng. Từ đó giúp ứng dụng của lập trình viên có thể được tùy chỉnh theo mong muốn.

Tầng Application này giúp lập trình viên thay đổi mã nguồn ứng dụng ở thời điểm compile time. Tầng thứ hai của Flutter nằm ở sâu bên dưới và được viết bằng C++. Tầng Shell này chứa các công tụ trợ giúp ứng dụng Flutter trong quá trình chạy. Nổi bật cần lưu ý ở tầng này là máy ảo Dart VM.

Khái niệm máy ảo là khái niệm về một ứng dụng chạy song song với mã nguồn chính như một phần của ứng dụng. Flutter là SDK dành cho thiết bị di động của Google để tạo ra các giao diện native chất lượng cao trên iOS và Android trong thời gian ngắn. Flutter làm việc với source code có sẵn, được sử dụng bởi các nhà phát triển và các tổ chức trên khắp thế giới, đồng thời nó open-source và miễn phí. 9 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP GVHD: Phạm Xuân Bình Flutter có các công cụ và thư viện để giúp bạn dễ dàng đưa ý tưởng của mình vào cuộc sống trên iOS và Android.

Nếu bạn chưa có kinh nghiệm phát triển trên thiết bị di động, thì Flutter là một cách dễ dàng và nhanh chóng để xây dựng các ứng dụng di động tuyệt đẹp. Nếu bạn là một nhà phát triển iOS hoặc Android có kinh nghiệm, bạn có thể sử dụng Flutter cho các View của bạn và tận dụng nhiều code Java / Kotlin / ObjC / Swift hiện có của bạn. Flutter sử dụng Dart, một ngôn ngữ nhanh, hướng đối tượng với nhiều tính năng hữu ích như mixin, generic, isolate, và static type. Flutter có các thành phần UI của riêng nó, cùng với một cơ chế để kết xuất chúng trên nền tảng Android và iOS.

Hầu hết các thành phần giao diện người dùng, đều sẵn dùng, phù hợp với các nguyên tắc của Material Design. 10 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP GVHD: Phạm Xuân Bình 2. Mô hình cấu tạo nên một project Flutter: Hình 1. Mô hình cấu tạo nên một project Flutter  Phần lớn nhất chính là: My App  Bên trong Material App sẽ có các thuộc tính: title, theme, và home.

Trong đó, tên title có ý nghĩa tương đương với Android @string/app_name để được đặt trong AndroidManifest với thuộc tính application:android: name, hay với iOS là Product Name, hay chí ít là Identity#Display name. Tên theme này có vai trò tương tự như phần theme trong values/styles của Android. Cuối cùng là home. Vai trò của tên này tương ứng với việc bạn định nghĩa Activity 11 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP GVHD: Phạm Xuân Bình  Scaffold: đóng vai trò như phần nền để bố trí các thành phần khác theo phong các Material Design hay Material Theming.

Nếu bạn đã quen với việc viết ứng dụng Android theo phong cách mặc định là Google cung cấp thông qua theme Theme.AppCompat hay android:Theme.Material thì bạn không còn lạ gì với Scaffold này. Nó tương tự như vậy và giống như là sự tổng hợp của DrawerLayout và CoordinatorLayout vậy.  AppBar: Nó tương tự như Toolbar hay ActionBar trong Android Sdk và Support Lib. Tuy nhiên, nó không đơn giản như Toolbar hay ActionBar, vì thực sự bạn phải chỉ định Widget con của nó bằng tay, thay vì dùng hàng loạt methods để thực hiện các thao tác đã định sẵn với các Widgets mặc định trong Android như setText hay setNavigationIcon.

 Column và Row: Đây sẽ là những widget quen thuộc đối với các bạn chuyên code Android, vì chúng tương đồng với LinearLayout. Trong khi Row tương ứng với LinearLayout với orientation là horizontal, tức chiều ngang, thì Column resemble vertical LinearLayout, tức chiều dọc. Còn đối với các bạn chưa thao tác với Android Sdk, thì chúng sẽ sắp xếp tuần tự các widget con theo một hướng ngang từ start sang end đối với Row, hay từ top xuống bottom với Column  Center: Đây sẽ là một Widget có thể gây cho bạn sự lầm lẫn khá tai hại bởi hành vi của nó có khác khi nó đi một mình hay đi chung với ai đó. Nếu nó đi một mình, và parent của nó không đi kèm – hay nói theo kiểu vui của tôi là không có cặp kè – với Widget ngang hàng (với tên parent đó) nào khác và bản thân của nó cũng không “nắm tay” ai, thì kích thước của nó sẽ tăng lên chiếm trọn không gian.

Còn nếu nó phải đi kèm với ai đó, thì nó sẽ e dè mà điều chỉnh kích thước chỉ vừa đủ bọc con/child của nó mà thôi. 12 BÁO CÁO ĐỒ ÁN TỐT NGHIỆP GVHD: Phạm Xuân Bình 2. Ưu Điểm của Flutter: Fast Development: Tính năng Hot Reload hoạt động trong milliseconds để hiện thị giao diện tới bạn. Sử dụng tập hợp các widget có thể customizable để xây dựng giao diện trong vài phút.

Ngoài ra Hot Reload còn giúp bạn thêm các tính năng, fix bug tiết kiệm thời gian hơn mà không cần phải thông qua máy ảo, máy android hoặc iOS.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ