PHẦN MỞ ĐẦU 1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI Trong thời hiện đại với sự bùng nổ của công nghệ thông tin, sự tiếp xúc của con người với các phương tiện truyền thông hiện đại ngày càng mạnh mẽ hơn bao giờ hết. Văn hóa đọc, một trụ cột của sự phát triển văn hóa và tri thức, đang chứng tỏ sự quan trọng không thể thay thế trong bối cảnh công nghiệp hóa - hiện đại hóa, đặc biệt là khi đất nước chúng ta đang bước chân vào cuộc cách mạng công nghiệp 4.0 và nền kinh tế tri thức. Tuy nhiên, thách thức ngày càng lớn đối với phong trào đọc sách đã nảy sinh.
Số lượng người đọc thực sự đã giảm đi đáng kể do sự gia tăng của các phương tiện truyền thông thị giác và âm thanh cũng như mạng xã hội. Thêm vào đó, sự bùng nổ của ngành xuất bản và kỷ nguyên số đã tạo ra một lượng lớn sách báo và thông tin đa chiều, đòi hỏi sự lựa chọn thông minh và thời gian để tiếp tục duy trì thói quen đọc. Trong bối cảnh này, việc tùy chỉnh nội dung đọc sao cho phù hợp với từng người dựa trên trình độ, nghề nghiệp và sở thích cá nhân trở nên vô cùng quan trọng. Để bắt kịp xu hướng và sự phát triển của thời đại, ngày càng nhiều ứng dụng và trang web đọc sách trực tuyến ra đời.
Trên cơ sở đó, nhóm em có ý tưởng xây dựng một ứng dụng di động đọc sách, giúp cho việc tìm kiếm và đọc sách trở nên nhanh chóng và thuận tiện hơn ở mọi thời gian, địa điểm. Bằng cách sử dụng công nghệ và khả năng tùy chỉnh thông minh, ứng dụng sẽ mang lại trải nghiệm đọc sách cá nhân hóa hơn, giúp mọi người duy trì thói quen đọc trong thời đại số hóa và tiến bộ này. MỤC ĐÍCH CỦA ĐỀ TÀI Đề tài có mục đích chính là xây dựng một ứng dụng đọc sách giúp cung cấp các tính năng tiện ích, cải thiện trải nghiệm đọc sách, tiết kiệm thời gian, chi phí và có hiệu qua cao. Thiết kế giao diện đơn giản, đẹp, sử dụng dễ dàng, gần gũi với người dùng Cung cấp các tính năng tiện lợi, độc đáo, thú vị 20 3.
CÁCH TIẾP CẬN VÀ PHƯƠNG PHÁP NGHIÊN CỨU 3. Đối tượng nghiên cứu Các đối tượng nghiên cứu của đề tài: • Người sử dụng cuối: Đây là người sẽ truy cập và sử dụng ứng dụng. Đây có thể là khách hàng, hoặc người dùng đã có tài khoản muốn truy cập vào ứng dụng để tìm, đọc sách và lưu lại tiến trình đọc. Với mục đích hướng vào đối tượng người dùng tuổi trẻ là chủ yếu ứng dụng dự tính xây dựng với giao diện trẻ trung, đơn giản • Quản trị viên của ứng dụng: Người có quyền truy cập và quản lý toàn bộ các thành phần của ứng dụng như sách, danh mục sách, tác giả, nhiệm vụ, lịch sử đọc, giao dịch,… 3.
Phạm vi nghiên cứu Flutter, Dart: Xây dựng giao diện app cho các chức năng cần thiết, đọc và thao tác được với API server NodeJs: Xây dựng các API với các chức năng cần thiết cho ứng dụng, liên kết với database FireBase: Lưu trữ database của ứng dụng 21 Chương 1. Cơ sở lý thuyết PHẦN NỘI DUNG CHƯƠNG 1. TÌM HIỂU VỀ FLUTTER [2] 1. Giới thiệu về Flutter Flutter là SDK di động của Google để xây dựng các ứng dụng IOS và Android gốc từ một cơ sở mã duy nhất.
Nó được phát triển vào ngày 4 tháng 12 năm 2018. Khi xây dựng các ứng dụng bằng Flutter, mọi thứ đều hướng tới Widget – các khối mà ứng dụng Flutter được xây dựng. Giao diện người dùng của ứng dụng bao gồm nhiều tiện ích đơn giản, mỗi tiện ích xử lý một công việc cụ thể. Các chức năng nổi bật Phát triển đa nền tảng (Cross-platform development): Flutter cho phép các nhà phát triển viết một codebase duy nhất cho cả Android và IOS, đồng thời nó cũng giúp giảm thời gian và chi phí phát triển.
Tải lại nóng (Hot Reload): Flutter cho phép các nhà phát triển xem những thay đổi ngày lập tức xảy ra trong code, tính năng này giúp quá trình phát triển nhanh hơn và hiệu quả hơn. Mã nguồn mở (Open-Source): Flutter là một framework mã nguồn mở và miễn phí để phát triển các ứng dụng di động. SDK và các tính năng gốc có thể truy cập (Accessible Native Features and SDKs): Tính năng này cho phép quá trình phát triển ứng dụng trở nên dễ dàng và thú vị thông qua mã gốc của Flutter, tích hợp của bên thứ ba và API nền tảng. Do đó, chúng ta có thể dễ dàng truy cập SDK trên cả hai nền tảng.
Code tối thiểu (Minimal code): Ứng dụng Flutter được phát triển bởi ngôn ngữ lập trình Dart, sử dụng trình biên dịch JIT và AOT để cải thiện thời gian khởi động tổng thể, hoạt động và tăng tốc hiệu suất. Widget: Flutter framework cung cấp các widget có khả năng phát triển các thiết kế cụ thể có thể tùy chỉnh. Quan trọng nhất, Flutter có hai bộ widget: 22 Chương 1. Cơ sở lý thuyết Material Design và Cupertino widget giúp mang lại trải nghiệm không gặp trục trặc trên tất cả các nền tảng.
TÌM HIỂU VỀ DART [3] 1. Giới thiệu về Dart Dart là ngôn ngữ lập trình hiện đại cấp cao, có mục đích chung, được phát triển ban đầu bởi Google. Đây là ngôn ngữ lập trình mới xuất hiện vào năm 2011, nhưng phiên bản ổn định của nó đã được phát hành vào tháng 6 năm 2017. Dart không quá phổ biến vào thời điểm đó, nhưng nó trở nên phổ biến khi được Flutter sử dụng.
Dart là một ngôn ngữ lập trình hướng đối tượng, dựa trên lớp. Về mặt cú pháp, nó khá giống với Java, C và JavaScript. Nếu biết bất kỳ ngôn ngữ lập trình nào trong số này, bạn có thể dễ dàng học ngôn ngữ lập trình Dart. Dart là ngôn ngữ lập trình nguồn mở được sử dụng rộng rãi để phát triển ứng dụng di động, ứng dụng web hiện đại, ứng dụng máy tính để bàn và Internet of Things (IoT) sử dụng khung Flutter.
Nó cũng hỗ trợ một số khái niệm nâng cao như giao diện, mixin, lớp trừu tượng,. Nó là một ngôn ngữ biên dịch và hỗ trợ hai loại kỹ thuật biên dịch. AOT (Ahead of time) - Nó chuyển đổi mã Dart thành mã JavaScript được tối ưu hóa với sự trợ giúp của trình biên dịch dart2js và chạy trên tất cả các trình duyệt web hiện đại. Nó biên dịch mã tại thời điểm xây dựng.
JOT (Just-In-Time) - Nó chuyển đổi mã byte trong mã máy (mã gốc), nhưng chỉ mã cần thiết. Các chức năng nổi bật Mã nguồn mở (Open Source): Dart là ngôn ngữ lập trình nguồn mở, có nghĩa là nó được cung cấp miễn phí. Nó được phát triển bởi Google, được tiêu chuẩn ECMA (European Computer Manufacturers Association) phê duyệt và đi kèm với giấy phép BSD (Berkeley Software Distribution License). Nền tảng độc lập (Platform Independent): Dart hỗ trợ tất cả các hệ điều hành chính như Windows, Linux, Macintosh, v.
Dart có Máy ảo riêng được gọi là Dart VM, cho phép chúng ta chạy mã Dart trong mọi hệ điều hành. Cơ sở lý thuyết Hướng đối tượng (Object-Oriented): Dart là ngôn ngữ lập trình hướng đối tượng và hỗ trợ tất cả các khái niệm lập trình hướng đối tượng như lớp, kế thừa,. Nó cũng hỗ trợ các khái niệm nâng cao như mixin, trừu tượng, các lớp, kiểu thống nhất. Đồng thời (Concurrency): Dart là ngôn ngữ lập trình không đồng bộ, có nghĩa là nó hỗ trợ đa luồng bằng cách sử dụng Isolates.
Các phần tách biệt là các thực thể độc lập có liên quan đến các luồng nhưng không chia sẻ bộ nhớ và thiết lập liên lạc giữa các tiến trình bằng cách truyền thông báo. Thư viện mở rộng (Extensive Libraries): Dart bao gồm nhiều thư viện sẵn có hữu ích bao gồm SDK (Bộ phát triển phần mềm), core, math, async, math, chuyển đổi, html, IO, v. Nó cũng cung cấp cơ sở để sắp xếp code Dart thành các thư viện với không gian tên thích hợp. Nó có thể tái sử dụng bằng câu lệnh import.
Dễ học (Easy to learn): Như chúng ta đã thảo luận ở phần trước, học Dart không phải là nhiệm vụ của Hercules vì chúng ta biết rằng cú pháp của Dart tương tự như Java, C#, JavaScript, kotlin, v. nếu bạn biết bất kỳ ngôn ngữ nào trong số này thì bạn có thể học Dart một cách dễ dàng. Biên soạn linh hoạt (Flexible Compilation): Dart cung cấp sự linh hoạt để biên dịch mã và nhanh chóng. Nó hỗ trợ hai loại quy trình biên dịch, AOT (Ahead of time) và JIT (Just-in-Time).
Code Dart được truyền bằng ngôn ngữ khác có thể chạy trong các nhà sản xuất web hiện đại. Loại an toàn (Type Safe): Dart là ngôn ngữ an toàn kiểu, có nghĩa là nó sử dụng cả kiểm tra kiểu tĩnh và kiểm tra thời gian chạy để xác nhận rằng giá trị của biến luôn khớp với kiểu tĩnh của biến, đôi khi nó được gọi là kiểu gõ âm thanh. Mặc dù các Type là bắt buộc, nhưng chú thích loại là tùy chọn do có sự can thiệp về loại. Điều này làm cho mã dễ đọc hơn.
Ưu điểm khác của ngôn ngữ an toàn kiểu là khi chúng ta thay đổi một phần mã, hệ thống sẽ cảnh báo chúng ta về sửa đổi mà chúng ta đã sửa đổi trước đó. Các đối tượng (Objects): Dart coi mọi thứ như một đối tượng. Giá trị gán cho biến là một đối tượng. Các hàm, số và chuỗi cũng là một đối tượng trong Dart.
Tất cả các đối tượng đều kế thừa từ lớp Object. Cơ sở lý thuyết Hỗ trợ trình duyệt: (Browser Support): Dart hỗ trợ tất cả các trình duyệt web hiện đại. Nó đi kèm với trình biên dịch Dart2js giúp chuyển đổi code Dart thành code JavaScript được tối ưu hóa phù hợp với mọi loại trình duyệt web. Cộng đồng (Community): Dart có một cộng đồng lớn trên toàn thế giới.
Vì vậy, nếu gặp phải vấn đề trong khi viết code thì bạn có thể dễ dàng tìm được sự trợ giúp. TÌM HIỂU VỀ FIREBASE 1. Giới thiệu về Firebase [5] Firebase, Inc. là một tập hợp các nền tảng phát triển ứng dụng và dịch vụ điện toán đám mây phụ trợ do Google cung cấp.
Nó lưu trữ cơ sở dữ liệu, dịch vụ, xác thực và tích hợp cho nhiều ứng dụng Firebase cung cấp cho chúng ta những API đơn giản, mạnh mẽ và đa nền tảng trong việc quản lý, sử dụng database 1. Các chức năng nổi bật [6] 1. Real-time Database Gồm các tính năng như: • Realtime, cho phép người dùng lưu trữ và đồng bộ dữ liệu theo thời gian thực. Dịch vụ này được lưu trữ trực tiếp trên iCloud, mỗi khi dữ liệu thay đổi mọi thiết bị kết nối sẽ nhận được thay đổi lập tức.