Bối cảnh và vấn đề nghiên cứu

Lý do chọn đề tài và bối cảnh thực tiễn

Âm nhạc là một trong những ngành công nghiệp giải trí phát triển mạnh mẽ trên phạm vi toàn cầu, đáp ứng nhu cầu thưởng thức hàng ngày của hàng triệu người dùng. Cùng với sự phổ biến của các thiết bị di động thông minh, nhu cầu tiếp cận, thưởng thức và cá nhân hóa không gian âm nhạc ngày càng gia tăng. Người nghe không chỉ dừng lại ở việc tiếp nhận thụ động các bài hát phổ thông mà còn có nhu cầu chủ động khám phá đa dạng thể loại âm nhạc, quản lý danh sách phát theo sở thích riêng biệt và theo dõi các nghệ sĩ yêu thích. Đồng thời, các nghệ sĩ độc lập cũng cần những nền tảng thuận tiện để tự sản xuất, đăng tải và chia sẻ trực tiếp tác phẩm của mình tới cộng đồng người nghe. Xuất phát từ bối cảnh thực tiễn đó, đề tài "Xây dựng ứng dụng nghe nhạc và chia sẻ bài hát với Flutter" được nhóm tác giả lựa chọn và thực hiện nhằm xây dựng một giải pháp phần mềm di động hỗ trợ toàn diện các nghiệp vụ nghe nhạc, tìm kiếm, lưu trữ và phát hành âm nhạc cá nhân.

Mục tiêu và nhiệm vụ nghiên cứu

Đề tài hướng tới việc nghiên cứu, làm chủ công nghệ lập trình đa nền tảng và hiện thực hóa một ứng dụng di động hoàn chỉnh với các mục tiêu và nhiệm vụ cụ thể:

  1. Nghiên cứu tổng quan về ngôn ngữ lập trình Dart và framework Flutter của Google để phát triển ứng dụng di động đa nền tảng (Cross-platform) cho cả hệ điều hành Android và iOS.
  2. Tìm hiểu và tích hợp dịch vụ nền tảng đám mây Firebase nhằm mục đích quản trị, lưu trữ dữ liệu và xử lý các tác vụ xác thực người dùng.
  3. Khảo sát nghiệp vụ từ các diễn đàn âm nhạc mạng xã hội và phân tích các ứng dụng nghe nhạc đã được phát hành thành công trên hai kho ứng dụng App Store và CH Play.
  4. Thiết kế hệ thống thông tin theo mô hình MVC (Model - View - Controller), xây dựng sơ đồ use case, đặc tả chi tiết các ca sử dụng và thiết kế cơ sở dữ liệu cho ứng dụng.
  5. Triển khai cài đặt giao diện (UI Prototype) và hiện thực hóa đầy đủ các khối chức năng: xác thực tài khoản, khám phá bài hát, tìm kiếm theo tên và danh mục, phát nhạc trực tuyến, quản lý thư viện cá nhân và đăng tải bài hát.

Đối tượng và phạm vi nghiên cứu

  • Đối tượng người dùng hướng đến: Các tổ chức và cá nhân sở hữu, biết sử dụng điện thoại thông minh (smartphone) trong độ tuổi từ 12 đến 60 tuổi. Cụ thể bao gồm:
    • Người dùng đại chúng có nhu cầu nghe nhạc, tìm kiếm bài hát, quản lý danh sách phát và chia sẻ âm nhạc trên thiết bị di động.
    • Các nghệ sĩ, tác giả có nhu cầu đăng tải các tác phẩm tự sản xuất để lan tỏa đến cộng đồng.
  • Đối tượng kỹ thuật: Ngôn ngữ lập trình Dart, Flutter SDK, nền tảng cơ sở dữ liệu Firebase và mô hình kiến trúc phần mềm MVC.
  • Phạm vi không gian và thời gian: Đồ án được nghiên cứu và thực hiện tại Trường Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh, hoàn thành và báo cáo vào tháng 12 năm 2023.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và công nghệ sử dụng

Nghiên cứu dựa trên các nền tảng công nghệ chính thức bao gồm:

  • Ngôn ngữ lập trình Dart: Ngôn ngữ hướng đối tượng do Google phát triển, đạt chuẩn quốc tế ECMA-408. Dart sở hữu cú pháp kiểu C/C++, cơ chế gom rác tự động (garbage collector), hệ thống kiểu an toàn (type-safe), hỗ trợ các khái niệm lập trình hiện đại như interface, mixin, abstract class, generic. Dart hỗ trợ mô hình lập trình phản ứng (Reactive) và bất đồng bộ thông qua các đối tượng Future và Stream, tối ưu hóa biên dịch trước thời hạn (Ahead-of-Time - AOT) và biên dịch đúng lúc (Just-in-Time - JIT).
  • Framework Flutter: Bộ công cụ phát triển phần mềm giao diện người dùng mã nguồn mở của Google, hỗ trợ xuất bản ứng dụng đa nền tảng (Android, iOS, Web). Kiến trúc Flutter gồm hai tầng chính:
    • Tầng Framework (tầng trên): Viết bằng ngôn ngữ Dart, cung cấp hệ thống Widget, Render Object và mã nguồn cho phép lập trình viên tùy biến giao diện ở thời điểm biên dịch (compile time).
    • Tầng Shell/Engine (tầng dưới): Viết bằng C++, chịu trách nhiệm giao tiếp phần cứng, đồ họa và tích hợp máy ảo Dart VM. Dart VM đảm nhận thông dịch mã JIT/AOT, cung cấp runtime system, bộ gom rác và hỗ trợ tính năng Stateful Hot Reload giúp cập nhật mã nguồn tức thì lên ứng dụng đang chạy.
  • Nền tảng Firebase: Cung cấp hạ tầng lưu trữ cơ sở dữ liệu và quản lý tệp tin trực tuyến cho ứng dụng di động.

So sánh Flutter và React Native trong cơ sở lý thuyết

Nhóm tác giả tiến hành đánh giá so sánh giữa hai nền tảng đa nền tảng phổ biến dựa trên các tiêu chí kỹ thuật:

Tiêu chí so sánh Flutter React Native
Khả năng tái sử dụng mã nguồn Hỗ trợ ghi đè (overwriting) và tái sử dụng mã nguồn hiệu quả trên toàn bộ dự án. Cho phép tái sử dụng mã nguồn nhưng bị giới hạn trong một số thành phần (components) cơ bản.
Cấu trúc mã nguồn và giao diện Toàn bộ giao diện và logic được xây dựng bằng Dart trên cùng một cấu trúc, không cần chuyển đổi chế độ thiết kế. Cần sử dụng kết hợp JavaScript với cú pháp JSX hoặc XML và các công cụ bổ trợ layout.
Cài đặt và thiết lập môi trường Tiện lợi, có công cụ dòng lệnh flutter doctor -v hỗ trợ chẩn đoán và khắc phục lỗi trực tiếp. Quy trình cài đặt môi trường phức tạp và mất nhiều thời gian cho lập trình viên mới.
Hệ sinh thái thư viện hỗ trợ Sở hữu kho gói thư viện bên thứ ba (third-party packages) phong phú và đang mở rộng nhanh chóng. Số lượng thư viện bên thứ ba rất lớn nhờ sự phát triển lâu năm của cộng đồng JavaScript/React.
Độ phổ biến cộng đồng Tăng trưởng nhanh chóng nhờ sự đầu tư và hỗ trợ trực tiếp từ Google. Số lượng lập trình viên đông đảo do nền tảng sử dụng ngôn ngữ JavaScript phổ thông.
Tài liệu tham khảo Tài liệu chính thức từ Google có cấu trúc rõ ràng, trực quan, dễ tiếp cận và hiệu quả. Tài liệu đôi khi phân mảnh, phụ thuộc vào nhiều công cụ ngoài dù Facebook đã nỗ lực cải thiện.

Phương pháp nghiên cứu và quy trình phát triển

Đồ án áp dụng quy trình phát triển phần mềm theo tiêu chuẩn thiết kế ứng dụng hiện hành, kết hợp mô hình kiến trúc MVC (Model - View - Controller). Quy trình được thực hiện bài bản qua 10 bước:

  • Bước 1: Thu thập thông tin và khảo sát yêu cầu người dùng.
  • Bước 2: Xây dựng sơ đồ ca sử dụng (Use Case Diagram) để mô hình hóa yêu cầu chức năng.
  • Bước 3: Nghiên cứu các ứng dụng âm nhạc thương mại sẵn có trên App Store và CH Play để nắm bắt xu hướng thị trường.
  • Bước 4: Chỉnh sửa, hoàn thiện mô hình hóa yêu cầu dựa trên dữ liệu khảo sát.
  • Bước 5: Thiết kế cơ sở dữ liệu hệ thống.
  • Bước 6: Lựa chọn framework Flutter để phát triển đa nền tảng nhằm tối ưu tốc độ thực thi và trải nghiệm giao diện 60–120 FPS.
  • Bước 7: Thiết kế giao diện mẫu (Prototype) cho ứng dụng.
  • Bước 8: Triển khai lập trình và cài đặt ứng dụng trên môi trường Visual Studio Code.
  • Bước 9: Thực hiện kiểm tra, bảo trì, sửa lỗi và phát triển bổ sung các tính năng phát sinh.
  • Bước 10: Đánh giá tổng kết và hoàn thành đồ án.

Thiết kế và triển khai hệ thống

Thiết lập môi trường và cấu hình nền tảng

Hệ thống được phát triển với Visual Studio Code kết hợp tiện ích mở rộng (extension) Flutter/Dart. Việc kiểm tra tính tương thích của môi trường SDK được thực thi qua lệnh flutter doctor -v.

Quy trình tích hợp cơ sở dữ liệu Firebase được cấu hình chuyên biệt cho hai nền tảng:

  • Cấu hình Android: Đăng ký định danh gói ứng dụng (package name, mã SHA1, nickname), tải tệp cấu hình google-services.json đưa vào thư mục dự án và thiết lập tệp build.gradle.
  • Cấu hình iOS: Mở mô-đun iOS thông qua Xcode, trích xuất Bundle Identifier tại mục General của thư mục Runner, đăng ký dự án trên Firebase Console, tải tệp GoogleService-Info.plist và đặt vào thư mục Runner/Runner.

Phân tích ca sử dụng (Use Case Analysis)

Hệ thống xác định 13 ca sử dụng chính phục vụ cho tác nhân Người dùng (User):

STT Tên Use Case Tác nhân Mục đích nghiệp vụ
1 Đăng nhập Người dùng Xác thực quyền truy cập qua tài khoản hệ thống hoặc bên thứ ba (Google, Facebook, Instagram).
2 Đăng ký Người dùng Tạo tài khoản mới bằng Tên, Email/Số điện thoại và Mật khẩu xác thực.
3 Khám phá bài hát, danh sách bài hát, nghệ sĩ Người dùng Duyệt danh sách các bài hát mới, nổi bật và bài hát xu hướng (top trending) tại trang chính.
4 Tìm kiếm theo tên bài hát Người dùng Tra cứu bài hát bằng cách nhập từ khóa trực tiếp vào thanh tìm kiếm.
5 Tìm kiếm theo danh mục, thể loại Người dùng Lọc bài hát theo các thể loại âm nhạc được hệ thống phân loại sẵn.
6 Xem chi tiết danh sách bài hát Người dùng Truy xuất thông tin mô tả, người phát hành, thời lượng và danh sách bài hát trong Playlist.
7 Xem chi tiết bài hát Người dùng Xem tên nghệ sĩ, album, năm phát hành, ảnh đại diện, đánh giá và lời bài hát.
8 Phát nhạc, phát bài hát Người dùng Điều khiển luồng âm thanh trực tuyến, chuyển tiếp, phát lặp hoặc phát ngẫu nhiên.
9 Thêm bài hát yêu thích Người dùng Lưu trữ bài hát đang nghe vào danh mục bài hát yêu thích cá nhân.
10 Thêm danh sách bài hát yêu thích Người dùng Đánh dấu và lưu Playlist vào thư viện cá nhân.
11 Thêm nghệ sĩ yêu thích Người dùng Đăng ký theo dõi và lưu hồ sơ nghệ sĩ vào thư viện.
12 Lưu trữ thư viện Người dùng Truy cập và quản lý toàn bộ bài hát, danh sách bài hát, nghệ sĩ đã lưu trữ.
13 Đăng tải bài hát Người dùng Tải lên tệp âm thanh tự sản xuất hoặc cá nhân từ thiết bị lên hệ thống.

Luồng xử lý và xử lý ngoại lệ tiêu biểu

  • Nghiệp vụ Đăng ký: Hệ thống kiểm tra tính hợp lệ của định dạng Email/Số điện thoại và sự trùng khớp giữa hai trường Mật khẩu và Xác nhận mật khẩu. Luồng ngoại lệ phát thông báo tương ứng nếu phát hiện dữ liệu nhập sai định dạng hoặc mật khẩu không khớp.
  • Nghiệp vụ Đăng nhập: Cho phép đăng nhập qua Email/Mật khẩu hoặc chuyển tiếp xác thực qua mạng xã hội (Google, Facebook, Instagram). Luồng ngoại lệ bắt lỗi khi thông tin xác thực sai và yêu cầu nhập lại.
  • Nghiệp vụ Đăng tải: Người dùng truy cập đường dẫn Account -> Setting -> Upload và chọn tệp từ bộ nhớ. Xử lý ngoại lệ bắt lỗi dung lượng tệp vượt quá giới hạn quy định, yêu cầu người dùng chọn lại tệp phù hợp trước khi xác nhận tải lên máy chủ.

Nội dung chính theo từng chương

Chương 1: Giới thiệu đề tài

Chương 1 thiết lập nền tảng của đề tài, tập trung phân tích lý do lựa chọn hướng nghiên cứu xây dựng ứng dụng âm nhạc di động trong bối cảnh công nghệ số. Nội dung trình bày mục tiêu xây dựng không gian khám phá âm nhạc đa thể loại (từ pop, rock, hip-hop đến jazz, classical), cung cấp công cụ tương tác chi tiết về bài hát, nghệ sĩ, album và hỗ trợ tính năng tự đăng tải tác phẩm. Chương này định hình quy trình phát triển gồm 10 bước, xác lập mô hình MVC làm kiến trúc trung tâm và phân định nhóm đối tượng người dùng từ 12 đến 60 tuổi.

Chương 2: Cơ sở lý thuyết

Chương 2 trình bày cơ sở lý thuyết về mặt công nghệ lập trình. Tác giả giới thiệu chi tiết về ngôn ngữ Dart (đặc tả ECMA-408, kiến trúc hướng đối tượng, cơ chế AOT/JIT compilation, garbage collection, lập trình bất đồng bộ với Future/Stream). Tiếp đó, chương phân tích sâu kiến trúc hai tầng của framework Flutter (tầng Framework Dart và tầng Shell C++/Dart VM), tính năng Hot Reload và Stateful Hot Reload. Bảng đối sánh kỹ thuật giữa Flutter và React Native được xây dựng làm cơ sở luận chứng cho việc lựa chọn công nghệ. Cuối chương là hướng dẫn chi tiết quy trình cài đặt môi trường, thiết lập biến môi trường trên Windows, cấu hình công cụ chẩn đoán flutter doctor -v, tạo dự án trên Visual Studio Code và quy trình thiết lập cơ sở dữ liệu Firebase cho hai nền tảng Android (google-services.json, build.gradle) và iOS (GoogleService-Info.plist, Bundle ID trên Xcode).

Chương 3: Phân tích thiết kế hệ thống

Chương 3 tập trung vào công tác kỹ thuật phần mềm, xác định 7 nhóm chức năng lớn và chi tiết hóa thành 13 Use Case có tương tác trực tiếp với tác nhân Người dùng. Chương này cung cấp sơ đồ Use Case tổng quát cùng các bảng đặc tả chi tiết (gồm tên ca sử dụng, người dùng chính, mô tả nghiệp vụ, điều kiện tiên quyết, điều kiện sau, luồng sự kiện chính, luồng thay thế và luồng ngoại lệ cho từng tác vụ như đăng nhập, đăng ký, tìm kiếm, phát nhạc, lưu thư viện, đăng tải bài hát). Phần cuối chương trình bày sơ đồ thiết kế cơ sở dữ liệu phục vụ lưu trữ thông tin thực thể người dùng, bài hát, danh sách phát và nghệ sĩ.

Chương 4: Xây dựng ứng dụng

Chương 4 mô tả kết quả hiện thực hóa giao diện và cơ chế tương tác trên 11 màn hình chức năng của ứng dụng:

  • Màn hình khởi động: Tích hợp biểu trưng (logo), tiêu đề ứng dụng, hai nút điều hướng Đăng nhập/Đăng ký và các tùy chọn đăng nhập liên kết qua Google, Facebook, Instagram.
  • Màn hình đăng nhập & Màn hình đăng ký: Thiết kế các trường TextInput, nút thực thi xác thực và các liên kết chuyển đổi linh hoạt giữa hai màn hình.
  • Màn hình trang chủ: Bố cục gồm thanh tiêu đề trên (tên ứng dụng, biểu tượng thông báo và lịch sử phát), các khối ListView phân loại nội dung âm nhạc thịnh hành/nổi bật, và thanh điều hướng đáy BottomNavigation chuẩn 5 thẻ (Home, Search, For you, Library, Account).
  • Màn hình thông báo & Lịch sử phát nhạc: Sử dụng ListView hiển thị danh sách các thông báo bài hát mới và lịch sử phát nhạc của người dùng kèm nút điều hướng quay lại.
  • Màn hình thông tin chi tiết Playlist: Hiển thị ảnh đại diện, tên playlist, tên nhà phát hành, mô tả, số lượt thích, tổng thời lượng, số lượng bài hát, cụm nút phát tuần tự/phát ngẫu nhiên, danh sách bài hát chi tiết và thanh điều khiển mini-player hiển thị bài hát đang phát ở đáy màn hình.
  • Màn hình thông tin chi tiết bài hát: Trình phát nhạc toàn màn hình gồm ảnh bài hát, tên bài hát, nghệ sĩ, thanh trượt thời gian (slider), các nút điều khiển luồng phát, nút chia sẻ và khung hiển thị lời bài hát (lyrics) có tính năng tự động cuộn đồng bộ theo thời gian thực.
  • Màn hình tìm kiếm: Gồm thanh TextInput nhập từ khóa và danh mục GridView phân loại thể loại âm nhạc.
  • Màn hình thư viện lưu trữ: Giao diện gồm AppBar tìm kiếm nội dung trong thư viện, thanh ListView lọc thể loại (Filter) và GridView chứa danh sách bài hát/playlist/nghệ sĩ đã lưu.
  • Màn hình thông tin tài khoản: Cung cấp chức năng quản lý tài khoản và mục cài đặt tải bài hát lên hệ thống.

Kết quả và đóng góp

Kết quả kỹ thuật đạt được

  • Đã thiết kế và cài đặt hoàn chỉnh ứng dụng nghe nhạc và chia sẻ bài hát di động đa nền tảng bằng ngôn ngữ Dart trên nền framework Flutter, tương thích với cả Android và iOS.
  • Tích hợp thành công nền tảng Firebase phục vụ lưu trữ dữ liệu và xử lý các luồng xác thực người dùng.
  • Hiện thực hóa đầy đủ cấu trúc điều hướng 5 phân hệ trên thanh BottomNavigation và xây dựng chi tiết 11 giao diện màn hình đáp ứng các tiêu chuẩn trải nghiệm người dùng di động.
  • Xây dựng thành công tính năng đồng bộ hóa lời bài hát tự động cuộn theo nhạc và tính năng tải lên/chia sẻ bài hát cá nhân với cơ chế kiểm soát dung lượng tệp tin.

Đóng góp về mặt giải pháp

  • Đồ án chứng minh tính khả thi, hiệu quả và tốc độ thực thi của việc áp dụng Flutter và ngôn ngữ Dart vào bài toán xây dựng ứng dụng đa phương tiện đa nền tảng, giúp rút ngắn thời gian phát triển so với việc lập trình ứng dụng gốc (Native) riêng biệt.
  • Xây dựng tài liệu thiết kế kỹ thuật hoàn chỉnh từ khâu khảo sát nghiệp vụ, mô hình hóa Use Case, thiết kế cơ sở dữ liệu đến triển khai giao diện theo mô hình MVC, cung cấp tài liệu tham khảo chi tiết cho các dự án phát triển phần mềm tương tự.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế

  • Đồ án được thực hiện trong khuôn khổ môn học Đồ án 1, nhóm tác giả tự nhận định kiến thức chuyên môn còn có mặt hạn chế nên sản phẩm không thể tránh khỏi những thiếu sót trong quá trình phân tích và cài đặt thực tế.
  • Chưa kích hoạt và khai thác các dịch vụ nâng cao như Google Analytics để phân tích hành vi người dùng (đã chủ động tắt trong bước tạo dự án Firebase để đơn giản hóa hệ thống).
  • Phạm vi xử lý nghiệp vụ âm nhạc trực tuyến chưa đề cập sâu đến các giải pháp tối ưu băng thông khi truyền phát dữ liệu lớn hoặc bảo vệ bản quyền số phức tạp.

Hướng nghiên cứu và phát triển tiếp theo

  • Tiếp tục thực hiện công tác bảo trì hệ thống, tập trung rà soát và khắc phục các lỗi phát sinh trong quá trình vận hành ứng dụng.
  • Hoàn thiện và nâng cấp các tính năng đã đề ra nhưng chưa được tối ưu hóa trong giai đoạn đầu.
  • Nghiên cứu mở rộng các tính năng phân tích nâng cao, tối ưu hóa công cụ tìm kiếm và nâng cấp hiệu năng phát nhạc trực tuyến trên nhiều điều kiện mạng khác nhau.

Giá trị tham khảo

Báo cáo đồ án mang lại giá trị học thuật và ứng dụng thực tiễn cho các nhóm đối tượng:

  • Sinh viên ngành Công nghệ phần mềm và Công nghệ thông tin: Tài liệu hữu ích cho sinh viên đang làm quen với lập trình di động đa nền tảng, cung cấp quy trình từng bước từ cài đặt môi trường Flutter, thiết lập biến môi trường, sử dụng công cụ chẩn đoán flutter doctor -v đến cách cấu hình liên kết dự án với Firebase trên cả Android (build.gradle, google-services.json) và iOS (Xcode, GoogleService-Info.plist).
  • Lập trình viên phát triển ứng dụng di động: Cung cấp tài liệu tham khảo về việc thiết kế giao diện ứng dụng nghe nhạc theo chuẩn Material Design với Flutter (bao gồm thiết kế trình phát nhạc, xử lý cuộn lời bài hát, quản lý thanh điều hướng BottomNavigation và quản lý danh sách bằng ListView/GridView).
  • Người nghiên cứu phân tích hệ thống phần mềm: Cung cấp hệ thống 13 bảng đặc tả ca sử dụng chi tiết, phân định rõ ràng các luồng chính, luồng thay thế và luồng ngoại lệ cho một hệ sinh thái ứng dụng phát trực tuyến âm thanh.

Câu hỏi thường gặp

1. Tại sao nhóm tác giả lại lựa chọn framework Flutter thay vì React Native để phát triển ứng dụng?

Theo phân tích trong Chương 2 của văn bản, Flutter sở hữu các ưu điểm vượt trội: khả năng viết mã giao diện và logic tập trung trên cùng một cấu trúc mà không cần phụ thuộc JSX/XML; quy trình cài đặt thuận tiện với lệnh flutter doctor -v; khả năng tái sử dụng mã nguồn tốt nhờ cơ chế ghi đè (overwriting); và đặc biệt là hiệu suất đồ họa mượt mà đạt mức 60 FPS đến 120 FPS kết hợp tính năng Stateful Hot Reload giúp lập trình viên cập nhật mã nguồn tức thì mà vẫn giữ nguyên trạng thái ứng dụng.

2. Kiến trúc của framework Flutter được chia thành những tầng nào và vai trò của máy ảo Dart VM là gì?

Kiến trúc Flutter gồm hai tầng chính:

  • Tầng Framework (tầng trên): Viết bằng ngôn ngữ Dart, cung cấp mã nguồn để xây dựng, tùy biến giao diện người dùng ở thời điểm biên dịch.
  • Tầng Shell/Engine (tầng dưới): Viết bằng C++, chứa các công cụ hỗ trợ và máy ảo Dart VM. Máy ảo Dart VM đảm nhận 3 nhiệm vụ chính: (1) Làm trung gian giao tiếp giữa mã nguồn Dart và phần cứng/phần mềm ngoài; (2) Thông dịch mã nguồn Dart theo phương thức JIT hoặc AOT; (3) Thực thi mã, cung cấp runtime system, bộ gom rác (garbage collector), hỗ trợ debugging và tính năng Hot Reload.

3. Quy trình cấu hình kết nối Firebase cho ứng dụng chạy trên hệ điều hành iOS được thực hiện như thế nào?

Quy trình gồm các bước: (1) Mở mô-đun thư mục iOS trên Xcode; (2) Truy cập thư mục Runner ở mục Root, vào tab General để lấy mã Bundle Identifier (Bundle ID); (3) Nhập Bundle ID vào Firebase Console và đăng ký ứng dụng; (4) Tải tệp cấu hình GoogleService-Info.plist và đặt vào thư mục Runner/Runner của dự án; (5) Tiến hành xây dựng ứng dụng lên thiết bị iOS để hoàn tất kết nối.

4. Ứng dụng hỗ trợ những phương thức xác thực đăng nhập nào cho người dùng?

Căn cứ theo đặc tả ca sử dụng tại Bảng 3.2 và mô tả giao diện Chương 4, hệ thống hỗ trợ người dùng đăng nhập bằng tài khoản nội bộ (nhập Email và Mật khẩu đã đăng ký) hoặc đăng nhập thông qua các tài khoản nền tảng bên thứ ba gồm Google, Facebook và Instagram.

5. Nghiệp vụ đăng tải bài hát lên ứng dụng được thực hiện qua những thao tác nào và có cơ chế xử lý ngoại lệ ra sao?

Người dùng sau khi đăng nhập sẽ truy cập theo luồng: chọn mục Account trên thanh BottomNavigation -> chọn Setting -> chọn mục Upload -> lựa chọn tệp âm thanh từ thiết bị và xác nhận tải lên. Luồng ngoại lệ của hệ thống sẽ kiểm tra dung lượng: nếu tệp có dung lượng vượt quá mức quy định, hệ thống sẽ phát cảnh báo "dung lượng file quá lớn" và yêu cầu người dùng lựa chọn tệp khác.


Kết luận

Đồ án "Xây dựng ứng dụng nghe nhạc và chia sẻ bài hát với Flutter" của sinh viên Nguyễn Anh Khoa và Nguyễn Trương Đình Du dưới sự hướng dẫn của ThS. Trần Thị Hồng Yến đã hoàn thành mục tiêu xây dựng một ứng dụng di động đa nền tảng phục vụ nhu cầu giải trí âm nhạc và phát hành tác phẩm cá nhân. Nghiên cứu đã hệ thống hóa cơ sở lý thuyết về ngôn ngữ Dart, kiến trúc Flutter, đồng thời triển khai thành công mô hình MVC kết hợp dịch vụ đám mây Firebase. Kết quả đồ án thể hiện rõ qua 13 ca sử dụng nghiệp vụ và 11 màn hình chức năng hoàn chỉnh, mang lại giá trị tham khảo thực tiễn cao cho sinh viên ngành Công nghệ phần mềm trong việc phát triển ứng dụng di động.