2.2.1. Các vấn đề tồn đọng:
Ở cuộc sống thành thị hiện tại, có rất nhiều gia đình vừa phải đi làm vất vả hằng ngày, vừa phải chăm lo cho con cái của họ. Những bậc bố mẹ trẻ tuổi vấp phải rất nhiều khó khăn trong việc chăm sóc con khi làm việc từ sáng đến chiều ở công ty, chỉ có buổi tối mới dành được thời gian ít ỏi trong ngày để chăm sóc con. Vì thế nên sự quan tâm về dinh dưỡng, thể chất con người và tiêm phòng cho con khá hời hợt và qua loa.
Các ứng dụng thì chủ yếu là giúp ghi nhớ các hoạt động của trẻ và chủ yếu là cung cấp các kỹ năng chăm sóc trẻ rất khô cứng và chưa linh hoạt
2.2.2. Các vấn đề tập trung trong đề tài:
Đề tài của chúng em tập trung giúp người dùng có thể chăm sóc trẻ một cách chủ động hơn bằng cách gợi ý người dùng cung cấp dinh dưỡng cho trẻ một cách đầy đủ nhất. Lưu lại chỉ số BMI thường xuyên giúp bố mẹ nhận thấy được cơ thể trẻ lớn lên theo từng ngày.
Đề tài chúng em còn cung cấp kiến thức chăm sóc trẻ em một cách linh động, chủ động hơn. Người dùng chỉ cần thực hiện các bước đơn giản để có được kiến thức mình mong muốn.
Đồng thời đề tài chúng em còn ứng dụng khoa học máy tính về gợi ý sản phẩm người dùng, giúp cho các bậc phụ huynh lựa chọn tốt hơn trong việc mua các sản phẩm chăm sóc con trẻ.
Chương 3. TÌM HIỂU CÔNG NGHỆ ỨNG DỤNG TRONG ĐỀ TÀI
3.1. Tổng quan về công nghệ Flutter:
Trong đề tài này, appservice sẽ được viết bằng Flutter. Vì vậy nhóm sinh viên thực hiện cần tìm hiểu về công nghệ này.
3.1.1. Khái niệm:
Flutter là nền tảng phát triển ứng dụng đa nền tảng cho iOS và Android do Google phát triển. Flutter sử dụng ngôn ngữ DART cũng do Google phát triển và flutter cũng đã được sử dụng để tạo ra các ứng dụng native cho Google.
Flutter hỗ trợ rất nhiều cơ sở dữ liệu như: MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC…
3.1.2. Lịch sử phát triển:
Phiên bản đầu tiên của Flutter được gọi là “Sky” và chạy trên hệ điều hành Android. Nó được công bố tại hội nghị nhà phát triển Dart 2015, với dự định ban đầu để có thể kết xuất ổn định ở mức 120 khung hình trên giây. Trong bài phát biểu chính ở hội nghị Google Developer Days tại Thượng Hải, Google công bố phiên bản Flutter Release Preview 2, đây là phiên bản lớn cuối cùng trước Flutter 1.0. Vào ngày 4 tháng 12 năm 2018, Flutter 1.0 đã được phát hành tại sự kiện Flutter Live, là phiên bản “ổn định” đầu tiên của khung ứng dụng này.
3.1.3. Ưu điểm của Flutter:
● Native đúng nghĩa: Với Flutter, bạn có thể giao tiếp gần như trực tiếp với hệ thống. Bộ Engine để render UI hoàn toàn thuộc Flutter, vì vậy bạn có thể tạo ra bất kỳ hiệu ứng và đồ hoạ nào cho cả 2 nền tảng iOS và Android.
● Ngôn ngữ kiểu tĩnh nhưng với cú pháp hiện đại: Tương tự như JS, Python hay Java, Flutter sử dụng ngôn ngữ kiểu tĩnh nhưng với cú pháp hiện đại. Trình biên dịch (Compiler) linh động khi dùng AOT (cho sản phẩm cuối) và JIT (cho quá trình phát triển với Hot Reload).
● Hot reload: Khi làm việc với những thứ liên quan đến UI thì Hot Reload thật khiến cho lập trình viên dễ chịu, càng tuyệt hơn khi Flutter cung cấp khả năng ghi nhớ state của ứng dụng. Hot Reload cung cấp cho bạn trải nghiệm tuyệt vời khi lập trình Flutter, so với React Native thì điểm này Flutter hơn.
● Kiểm soát chặt chẽ hiệu suất của ứng dụng: Flutter có thể chạy được giả lập mobile trên trang web, đây là một điều vô cùng thuận tiện cho việc phát triển. Ngoài ra, các chỉ số hiệu suất được hỗ trợ sẵn cũng giúp cho các developer kiểm soát hiệu suất của ứng dụng một cách chặt chẽ.
● Dễ dàng nâng cấp: Mặc dù cách cài đặt ban đầu của Flutter là tải về tập tin nén, nhưng khi cập nhật lên phiên bản mới thì chỉ cần dòng lệnh là đủ, và khá dễ dàng. Ứng dụng sau khi nâng cấp phiên bản Flutter chạy không gặp trở ngại gì cả. Đây là một điểm cộng khá lớn khi xét về độ trưởng thành. Khi sử dụng React Native, các phiên bản từ 0.25, 0.48 có những thay đổi phải sửa bằng tay mới chạy, rất khó chịu.
Kết luận: Với những tính năng ưu việt của mình, Flutter vẫn, sẽ và đang là một trong những ngôn ngữ lập trình phổ biến nhất ngày nay và trong tương lai, được các lập trình viên rất ưa chuộng, và sử dụng rộng rãi trên toàn thế giới.
3.2. Ngôn ngữ Dart: 3.2.1. Giới thiệu ngôn ngữ Dart: 3.2.1. Giới thiệu ngôn ngữ Dart:
Dart là ngôn ngữ lập trình đa mục đích ban đầu được phát triển bởi Google và sau đó được Ecma (ECMA-408) phê chuẩn làm tiêu chuẩn. Nó được sử dụng để xây dựng các ứng dụng web, server, máy tính để bàn và thiết bị di động. Dart là một ngôn ngữ hướng đối tượng, được xác định theo lớp, với cơ chế garbage-collected, sử dụng cú pháp kiểu C để dịch mã tùy ý sang JavaScript. Nó hỗ trợ interface, mixin, abstract, generic, static typing và sound type (2 cái cuối có thể hiểu là type-safe). Dart là ngôn ngữ mã nguồn mở và miễn phí, được phát triển trên GitHub. Hiện nay Dart đã release phiên bản 2.23.2.2.
3.2.2. Ưu điểm của Dart:
● Năng xuất: Cú pháp Dart rõ ràng và súc tích, công cụ của nó đơn giản nhưng mạnh mẽ. Type-safe giúp bạn xác định sớm các lỗi tinh tế. Dart có các thư viện cốt lõi và một hệ sinh thái gồm hàng ngàn package.
● Nhanh: Dart cung cấp tối ưu hóa việc biên dịch trước thời hạn để có được dự đoán hiệu suất cao và khởi động nhanh trên các thiết bị di động và web.
● Khả năng di động cao: Dart biên dịch thành mã ARM và x86, để các ứng dụng di động của Dart có thể chạy tự nhiên trên iOS, Android và hơn thế nữa. Đối với các ứng dụng web, chuyển mã từ Dart sang JavaScript.
● Dễ tiếp cận: Dart quen thuộc với nhiều nhà phát triển hiện có, nhờ vào cú pháp và định hướng đối tượng không gây ngạc nhiên của nó. Nếu bạn đã biết C ++, C # hoặc Java, bạn có thể làm việc hiệu quả với Dart chỉ sau vài ngày.
● Reactive: Dart rất phù hợp với lập trình Reactive, với sự hỗ trợ để quản lý các đối tượng tồn tại trong thời gian ngắn, chẳng hạn như các widget UI, thông qua phân bổ đối tượng nhanh và GC. Dart hỗ trợ lập trình không đồng bộ thông qua các tính năng ngôn ngữ và API sử dụng các đối tượng Future và Stream.
3.3. Ứng dụng Figma:
Dựa trên kinh nghiệm đã thực hiện từ những đồ án trước, nhóm quyết định chọn Figma làm ứng dụng thiết kế giao diện đồ án.
3.3.1. Giới thiệu Figma:
Figma là một công cụ thiết kế vector và thử nghiệm sản phẩm website và app. Công cụ dựa trên nền tảng đám mây để người dùng có thể cộng tác trong các dự án và làm việc ở bất cứ đâu.
Mặc dù Figma có chức năng rất giống các công cụ thiết kế khác, những điểm khác biệt chính là khả năng làm việc với các nhóm trong các dự án. Đến nay, Figma có lẽ là lựa chọn phù hợp nhất hiện có.
Năm 2011, một nhóm các lập trình viên yêu thích thiết kế đã nhen nhóm một ý tưởng về một công cụ thiết kế chạy hoàn toàn trên nền tảng web, đây là một ý tưởng khá táo bạo, tiên phong và thậm chí là bị đánh giá là điên khùng lúc bấy giờ. Bởi lẽ, mọi người tại thời điểm này đều quan niệm web chỉ dành cho các tác vụ văn phòng hay giải trí nhẹ nhàng, như đọc email hay xem phim,… Còn công việc thiết kế, yêu cầu những cỗ máy tính cấu hình siêu mạnh mẽ, thì việc đem nó lên nền tảng web là bất khả thi.
Cốt lõi của ý tưởng này:
● Mọi người, mọi nền tảng đều có thể được sử dụng những công cụ thiết kế mạnh mẽ. ● Tạo ra một nền tảng hỗ trợ làm việc nhóm mạnh mẽ, linh hoạt cho phép mọi người trên thế
giới đều có thể cùng làm việc trên một file thiết kế duy nhất.
● Có hệ thống quản lý các phiên bản chỉnh sửa tiện lợi, rõ ràng, chi tiết.
Vào năm 2015, nhóm lập trình viên ngày nào đã thành lập Figma.Inc và cho ra mắt công cụ thiết kế trên nền tảng web đầu tiên trên thế giới – Figma 1.0, cung cấp hoàn toàn miễn phí cho người dùng tại thời điểm này.
Sau một thời gian dài sử dụng, Figma dần có được tình cảm không chỉ của những nhà thiết kế chuyên nghiệp mà còn từ những người dùng phổ thông bởi sự mới mẻ, linh hoạt, năng động và hiệu quả của mình, sau đó Figma được phát triển và ngày càng phổ biến cho đến ngày nay.
3.3.3. Ưu điểm:
● Tính tương thích: Figma hoạt động tương thích trên tất cả các hệ điều hành có trình duyệt web, từ Macs, Windows, Linux đến Chromebooks đều có thể dùng Figma. Đây là công cụ design duy nhất có thể làm được điều này. Tất cả mọi người đều có thể chia sẻ, mở và chỉnh sửa một file Figma dễ dàng dù đang dùng hệ máy nào.
● Hỗ trợ làm việc nhóm hiệu quả: Figma là một công cụ browser-based, do đó mọi người trong team có thể làm việc với nhau tương tự như làm việc trong Google Docs. Với mỗi thành viên đang xem hoặc chỉnh sửa file, Figma đại diện bằng một avatar tròn trên thanh công cụ với tên riêng. Click vào avatar này bạn sẽ được thấy thành viên đó đang nhìn phần nào trên design. Chức năng này rất tiện khi bạn muốn biết ai đang làm việc trên file.
● Chia sẻ file đơn giản: Một khi bạn chia sẻ file Figma qua việc gửi link cho người khác, người nhận link sẽ có khả năng truy cập vào file đó. Nếu bạn lựa chọn Link to selected frame người nhận sẽ nhìn thấy chính xác frame bạn đang chọn lúc chia sẻ file. Mình rất hay dùng tính năng tiện dụng này khi chia sẻ một file phức tạp, có quá nhiều frame nằm trong một page.
● Hỗ trợ feedback tiện lợi: Figma hỗ trợ bình luận ngay trong app, cả trong chế độ design và prototyping. Ngoài ra comment còn có thể được theo dõi thông qua Slack hoặc email. Nếu bạn đã từng sử dụng các công cụ như Sketch kết hợp với Invision, Marvel, bạn sẽ thấy việc update design sau mỗi đợt feedback cũng ngốn của bạn không ít thời gian. Với chức năng comment ngay trong file thiết kế, Figma đã giải quyết được vấn đề trên một cách nhẹ nhàng.
● Công cụ hỗ trợ cho các developer: Figma hiển thị code snippets cho từng đối tượng được chọn. Code có thể hiển thị dưới dạng CSS, dành cho iOS hay Android. Thay vì sử dụng các công cụ của bên thứ ba, developer có thể inspect đối tượng ngay trên file trong lúc xem thiết kế. Mặc dù thế, nếu bạn muốn các thông số phức tạp hơn, bạn vẫn có thể sử dụng Zeplin. Figma đã hỗ trợ Zeplin rất tốt cho tới thời điểm hiện tại.
● Tất cả đều được lưu trữ online: Tất cả mọi thứ của bạn đề đã được lưu trữ trên cloud. Bạn sẽ không sợ mất file, hỏng máy hay hàng tá các vấn đề trời ơi đất hỡi khác. Bạn có thể sắp xếp file theo project, mỗi file lại được chia ra làm nhiều page tùy theo nhu cầu của bạn.
Kết luận: Chính vì những ưu điểm vượt trội đó thì hiện nay, Figma đã và đang được nhiều công ty tin dùng và đây cũng là ứng dụng miễn phí nên rất phù hợp với các sinh viên.
3.4. Tổng quan về Firebase: 3.4.1. Giới thiệu về Firebase: 3.4.1. Giới thiệu về Firebase:
Firebase là một dịch vụ cơ sở dữ liệu thời gian thực hoạt động trên nền tảng đám mây được cung cấp bởi Google nhằm giúp các lập trình phát triển nhanh các ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Firebase phát triển từ Evolve, một công ty khởi nghiệp trước đó được thành lập bởi James Tamplin và Andrew Lee vào năm 2011. Evolve cung cấp cho các nhà phát triển một API cho phép
tích hợp chức năng trò chuyện trực tuyến vào trang web của họ. Sau khi phát hành dịch vụ trò chuyện, Tamplin và Lee phát hiện ra rằng nó đang được sử dụng để truyền dữ liệu ứng dụng không phải là tin nhắn trò chuyện. Các nhà phát triển đã sử dụng Evolve để đồng bộ hóa dữ liệu ứng dụng như trạng thái trò chơi trong thời gian thực trên người dùng của họ. Tamplin và Lee quyết định tách hệ thống trò chuyện và kiến trúc thời gian thực cung cấp năng lượng cho nó. Họ thành lập Firebase như một công ty riêng biệt vào năm 2011 và ra mắt công chúng vào tháng 4 năm 2012.
Ra mắt muộn hơn các công nghệ khác, Firebase được ra đời vào năm 2014 và được google mua lại vào năm 2016. Từ đó Firebase đã tăng từ 110.000 lên 470.000 nhà phát triển và vẫn đang nắm giữ tốc độ tăng trưởng đáng kể. Firebase được tin dùng và phổ biến bởi vì nó giúp nhà phát triển có thể xây dựng hệ thống Client – Server mà công sức cũng như chi phí bỏ ra cho phía Server giảm đi đáng kể.
Vào tháng 5 năm 2016, tại Google I /O,hội nghị nhà phát triển hàng năm của công ty, Firebase
đã giới thiệu Firebase Analytics và tuyên bố rằng họ đang mở rộng dịch vụ của mình để trở thành một nền tảng phụ trợ như một dịch vụ thống nhất (BaaS) cho các nhà phát triển di động. Firebase
hiện tích hợp với nhiều dịch vụ khác của Google, bao gồm Google Cloud Platform,AdMob
và Google Ads để cung cấp các sản phẩm và quy mô rộng hơn cho các nhà phát triển. Google Cloud Messaging, dịch vụ của Google để gửi thông báo đẩy đến các thiết bị Android, đã được thay
thế bởi một sản phẩm Firebase, Firebase Cloud Messaging,bổ sung chức năng để cung cấp thông
Hình 3.1: Giới thiệu về Framework Google Firebase
3.4.2. Các chức năng chính của Google Firebase:
a. Realtime Database – Cơ sở dữ liệu thời gian thực:
Dữ liệu được firebase lưu trữ có dạng JSON và được đồng bộ cơ sở dữ liệu đến tất cả user theo thời gian thực. Điều này sẽ giúp xây dựng hệ thống đa nền tảng và tất cả user cùng dùng chung một database được cung cấp với firebase, điều tuyệt vời hơn là firebase tự động cập nhật mỗi khi có sự thay đổi dữ liệu.
b. Firebase Authentication – Hệ thống xác thực Firebase:
Firebase dễ dàng tích hợp các công nghệ xác thực của các ông lớn trên internet như Google, Facebook, …hoặc một hệ thống xác thực tự xây dựng trong ứng dụng ở bất kỳ nền tảng nào như Android, iOS.
Firebase storage lưu trữ được nhiều dạng dữ liệu như tập tin, hình ảnh, video một cách dễ dàng. Ngoài ra nó còn tích hợp Google security giúp tải lên và tải về các ứng dụng firebase một cách tiện lợi.
d. Firebase Cloud Messaging:
Bên cạnh các tính năng trên, Firebase còn cung cấp dịch vụ Cloud Messaging, một giải pháp đa nền tảng, cho phép mọi người gửi thông điệp miễn phí dưới dạng tin nhắn theo thời gian thực.
3.4.3. Lợi ích của Google Firebase:
a. Triển khai ứng dụng cực nhanh:
Với firebase, lập trình viên sẽ giảm được nhiều thời gian cho việc xây dựng và phát triển và đồng bộ cơ sở dữ liệu, nó diễn ra nhanh chóng và tự động qua các API mà Firebase cung cấp. Ngoài ra, nếu lập trình viên muốn xây dựng ứng dụng đa nền tảng, điều này hoàn toàn dễ dàng vì Firebase cũng hỗ trợ đa nền tảng.
Không chỉ có vậy, quá trình đăng ký và đăng nhập vào ứng dụng sẽ tiện lợi và dễ dàng hơn bằng các hệ thống xác thực mà Firebase đã cung cấp.
b. Bảo mật:
Firebase hoạt động dựa vào nền tảng đám mây và thực hiện kết nối bằng giao thức bảo mật