CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 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. Không chỉ giới hạn việc phát triển ứng dụng của mình trên một nền tảng, Dart mở ra cánh cửa cho sự sáng tạo trên cả hai nền tảng quan trọng: Android và iOS. Và trong cuộc hành trình này, được sự hậu thuẫn mạnh mẽ từ Google, Flutter & Dart nổi lên như một công cụ vượt trội thúc đẩy sự đổi mới và tiến bộ trong lĩnh vực phát triển ứng dụng di động đa nền tảng. Các tính năng của ngôn ngữ Dart: ▪ Hướng đối tượng - OOP: Dart sử dụng dữ liệu dưới dạng đối tượng thay vì coi dữ liệu là hàm hoặc logic và hỗ trợ cả các khác niệm lập trình hướng đối tượng cơ bản.
▪ Bất đồng bộ: Dart không có tính đồng bộ nhưng cho phép đồng thời nâng cao. Hiểu đơn giản Dart có thể chạy nhiều tác vụ đồng thời mà không cần phải chờ đợi kết thúc một tác vụ mới thực hiện tác vụ mới thông qua việc sử dụng các luồng thực thi độc lập (isolates) ▪ Các thư viện tích hợp: Dart bao gồm nhiều thư viện tích hợp mở rộng như Input – Output (IO), Software Development Kit (SDK),… Cho phép kế thừa và sử dụng các đoạn mã code viết sẵn trong những thư viện này và tối ưu hóa ứng dụng theo mục đích cá nhân. Điều này tăng tính tái sử dụng của mã nguồn, giảm độ phức tạp. ▪ Hỗ trợ đa nền tảng: Dart có thể hoạt động trên nhiều hệ điều hành khác nhau Windows, Linux, macOS cũng như nhiều hệ điều hành khác bởi tính năng Máy ảo Dart.
Flutter sử dụng Dart vì nó cho phép Flutter tránh được sự cần thiết của một ngôn ngữ bố cục khai báo riêng biệt như JSX và XML. Bố cục của Dart được thực hiện thông 5 PHẦN 2: NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT qua mã nguồn, điều này giúp nhà phát triển dễ dàng đọc và hình dung cấu trúc của ứng dụng một cách nhanh chóng, đồng thời tạo điều kiện thuận lợi cho quá trình phát triển và bảo trì mã nguồn. Ngoài ra, Flutter có thể dễ dàng cung cấp thêm công cụ vì bố cục bằng một ngôn ngữ và thông dụng. Một lý do quan trọng khác khiến bộ đôi này được yêu thích là Dart, nếu được yêu cầu, sử dụng bộ biên dịch Just In Time.
Điều này làm giảm đáng kể thời gian phát triển và phản hồi nhanh hơn. Ưu điểm, nhược điểm 1. Ưu điểm Mỗi giải pháp đều có những thế mạnh và yếu điểm riêng, Flutter cũng không ngoại lệ. Nhưng trước tiên phải kể đến một số lợi ích vượt trội khi sử dụng Flutter: ▪ Flutter không chỉ mang lại hiệu suất cao mà còn giúp bạn tiết kiệm thời gian, công sức và chi phí.
Tương tự như các công nghệ đa nền tảng khác, Flutter cho phép sử dụng một cơ sở mã nguồn duy nhất để xây dựng ứng dụng cho cả iOS và Android. ▪ Tính năng "Hot Reload" của Flutter là một công cụ mạnh mẽ, cho phép bạn thực hiện các thay đổi trong mã nguồn và chứng kiến kết quả ngay lập tức trong bản xem trước của ứng dụng mà không cần phải tải lại toàn bộ mã. ▪ Flutter cho phép tùy chỉnh toàn bộ và kết xuất nhanh chóng nhờ vào cấu trúc phân lớp linh hoạt của nó. Ứng dụng được thiết kế để cung cấp quyền kiểm soát tuyệt đối đối với mỗi pixel trên màn hình, mang lại khả năng tối ưu hóa và định hình giao diện theo ý muốn của người phát triển.
6 PHẦN 2: NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT ▪ Flutter không chỉ hỗ trợ phát triển ứng dụng di động mà còn mở rộng đến nền tảng web. Nó cung cấp tài liệu thích hợp, cho phép bạn kiểm tra cách các điều khiển gốc hoạt động trong môi trường web. ▪ Việc tách UI khỏi các điều khiển gốc không chỉ giúp loại bỏ lỗi không tương thích từ phía nhà sản xuất mà còn tạo ra một sự độc lập giữa giao diện người dùng và logic điều khiển. Nhược điểm Mặc dù có nhiều ưu điểm, tuy nhiên qua thử nghiệm, Flutter cũng có nhiều yếu điểm nhất định: ▪ Flutter mặc dù đã đạt được sự phổ biến và chấp nhận rộng rãi, nhưng nó vẫn chưa được hoàn thiện tuyệt đối.
▪ Dart khá "non nớt" và nhận xét là có một số điểm tương đồng với Swift và Kotlin, đặc biệt là khi nó được sử dụng trong ngữ cảnh của Flutter (framework phát triển ứng dụng di động. ▪ Ứng dụng Flutter có thể được mô tả là “nặng” vì chúng thường chiếm nhiều dung lượng và mất thời gian đáng kể khi tải xuống hoặc cập nhật. ▪ Giao diện của Flutter không đảm bảo 100% sự giống nhau với phiên bản gốc. Flutter cơ bản không tạo ra các thành phần gốc, mà thay vào đó nó sử dụng thư viện Cupertino để mô phỏng các thiết kế của iOS và Material Design cho Android.
▪ Các hướng dẫn về việc phát triển ứng dụng Flutter hiện nay vẫn chưa đồng nhất, điều này có thể làm tăng độ khó khăn đặc biệt khi chúng ta đối mặt với việc xây dựng các ứng dụng có độ phức tạp cao. 7 PHẦN 2: NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. GIỚI THIỆU VỀ REST API 1. Định nghĩa Rest API REST API (Representational State Transfer Application Programming Interface) là một kiến trúc phần mềm dựa trên nguyên tắc của REST, một kiến trúc thiết kế web.
REST là một phương pháp tiếp cận cho việc xây dựng các dịch vụ web linh hoạt, có khả năng mở rộng và tương tác trên mạng. Các thành phần cơ bản của REST API: ▪ Application Programming Interface (API): Là tập hợp các quy tắc và cơ chế với mục đích hỗ trợ sự tương tác giữa ứng dụng, thành phần này với ứng dụng, thành phần khác. Những kiểu dữ liệu mà bạn cần cho ứng dụng phổ biến mà API trả về là JSON hoặc XML. ▪ REST: Là một kiểu kiến trúc dựa trên chuyển đổi cấu trúc dữ liệu để xây dựng API và hỗ trợ giao tiếp giữa các máy bằng cách sử dụng các phương thức HTTP.
Cụ thể, REST xử lý dữ liệu thông qua các yêu cầu HTTP được gửi đến URL thay vì thông qua việc xử lý thông tin người dùng bằng một URL. Một số khái niệm quan trọng liên quan đến REST API: a. Resource (Tài nguyên): Trong ngữ cảnh của REST, mỗi đối tượng hoặc dịch vụ được xem như một tài nguyên. Ví dụ, một đối tượng người dùng, một bản ghi trong cơ sở dữ liệu, hoặc bất kỳ thứ gì có thể được định danh và thao tác.
URI (Uniform Resource Identifier): Mỗi tài nguyên được định danh bằng một URI, là một định danh duy nhất và không thay đổi trên thời gian. URI có thể thể hiện địa chỉ của tài nguyên hoặc hành động mà bạn muốn thực hiện trên tài nguyên. 8 PHẦN 2: NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT c. HTTP Methods (Phương thức HTTP): REST API sử dụng các phương thức HTTP như GET, POST, PUT, DELETE để thực hiện các hành động trên tài nguyên.
Các phương thức này tương ứng với các hoạt động như đọc, tạo, cập nhật và xóa tài nguyên. Representation: Dữ liệu của tài nguyên được truyền đổi thành các định dạng biểu diễn như JSON hoặc XML. Định dạng này làm cho dữ liệu dễ đọc và dễ xử lý bởi các ứng dụng. Stateless: REST không lưu trạng thái của các giao dịch giữa các lời gọi.
Mỗi lời gọi đều độc lập và chứa đủ thông tin để thực hiện yêu cầu. Hypermedia (Hypermedia as the Engine of Application State - HATEOAS): Nguyên tắc này cho rằng các ứng dụng RESTful nên sử dụng các liên kết hypermedia để mô tả tình trạng của ứng dụng và hướng dẫn người dùng cách tương tác với nó. REST API là một phương tiện hiệu quả để tạo ra các dịch vụ web linh hoạt, có khả năng mở rộng và tương tác trên nền tảng web. Các ứng dụng sử dụng REST API để gửi và nhận dữ liệu giữa các máy chủ và các thiết bị hoặc ứng dụng khác nhau.
9 PHẦN 2: NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. Sử dụng Rest API trong Flutter Hình 1 1. Luồng thực thi Rest API trong Flutter Flutter có sẵn gói http để thực hiện việc giao tiếp với dữ liệu qua giao thức HTTP. Gói http này sử dụng tính năng await và async, cung cấp nhiều phương thức cấp cao như read, get, post, put, head, và delete, giúp nhận dữ liệu từ các nguồn từ xa.
Sự đơn giản hóa qua các phương thức này giúp làm dễ dàng quá trình phát triển ứng dụng di động dựa trên REST. Giải thích chi tiết về các phương thức cốt lõi của gói http như sau: ▪ Read: Phương thức này được sử dụng để đọc hoặc truy xuất biểu diễn của dữ liệu. Nó yêu cầu một URL được chỉ định thông qua phương thức get và trả về một response dưới dạng Future <String>. ▪ Get: Phương thức Get yêu cầu một URL được chỉ định thông qua phương thức get và trả về một response dưới dạng Future <response>.
Trong đó, response là một lớp chứa thông tin của phản hồi. ▪ Post: Phương thức này được sử dụng để gửi dữ liệu đến một địa chỉ được chỉ định. Nó yêu cầu một URL được chỉ định và trả về response dưới dạng Future <response>. 10 PHẦN 2: NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT ▪ Put: Phương thức này được sử dụng để cập nhật dữ liệu.
Nó cập nhật tất cả các biểu diễn hiện tại của dữ liệu đích với các payloads. Phương thức này yêu cầu một URL được chỉ định và trả về response dưới dạng Future <response>. ▪ Head: Nó tương tự như phương thức Get, nhưng không có phần thân response. ▪ Delete: Phương thức Delete được sử dụng để loại bỏ tất cả dữ liệu được chỉ định.
Gói http cũng cung cấp một lớp client HTTP tiêu chuẩn để hỗ trợ kết nối liên tục. Lớp này quan trọng khi có nhiều yêu cầu được thực hiện trên một máy chủ cụ thể. Lưu ý rằng nó cần được đóng đúng cách bằng phương thức close(); nếu không, nó sẽ hoạt động như một lớp HTTP. Ưu điểm, nhược điểm RESTful API là một trong những công nghệ phổ biến nhất ngày nay, cung cấp cho nhà phát triển một giao diện lập trình ứng dụng dễ sử dụng để truy xuất dữ liệu và xử lý yêu cầu.
Tuy nhiên, khi làm việc với RESTful API, người dùng cần phải hiểu rõ ưu và nhược điểm của nó để có thể tận dụng mọi lợi ích một cách tối đa từ công nghệ này. Ưu điểm ▪ Dễ hiểu, dễ tiếp cận: REST API sử dụng các giao thức tiêu chuẩn như HTTP và URI, làm cho nó dễ hiểu và sử dụng.