Home

Flutter - Dart basic concepts.

Word count: 1,164 / Reading time: 7 min
2020/09/20 Share

Dart là một ngôn ngữ lập trình được phát triển tại Google, nó được kì vọng là sẽ được phát triển mạnh mẽ và duy trì trong nhiều năm tới. Mục đích ban đầu đằng sau việc tạo Dart là để thay thế JavaScript trong các web browser vì Dart có máy ảo riêng (Virtua machine) nhưng có vẻ như mục tiêu này đã không đạt được. Tuy nhiên, Dart vẫn là một ngôn ngữ mạnh mẽ với các phẩm chất nổi bật của riêng mình, nó là một ngôn ngữ lập trình hướng đối tượng có thể được biên dịch sang mã máy, hoặc chuyển sang JavaScript hoặc có thể chạy giống như một trình thông dịch trên Dart VM bằng cách sử dụng Dart CLI (JIT Compilation). Dart là single-threaded language với vòng lặp sự kiện (event loop) tương tự như JavaScript và Node.js. Nhưng nó có thể hỗ trợ tạo các thread khác để khởi chạy các công việc background (AKA asynchronous programming). Bài viết hom nay sẽ giới thiệu những concepts quan trọng trong Dart.

Programming in Dart

Phương thức chính trong Dart có tên là main(). Khi chương trình được excute, hàm main sẽ được thực thi đầu tiên

  • Dart hỗ trợ top-level function (giống như main()), đồng nghĩa bạn có thể sử dụng hàm đó ở bất cứ đâu mà không cần thông qua tên class hay bất kỳ instance của class nào cả. Bạn cũng có thể tạo một hàm bên trong một hàm (còn gọi là nested function hoặc local function).

  • Kiểu type của 1 variable là optional bởi vì Dart có thể tự suy ra type dựa trên giá trị truyền vào cho biến (tương tự như Swift).

  • Dart là ngôn ngữ OOP nên tất cả mọi thứ đều là object, mọi object đều là instance của một class. Kể cả number, method (hàm), hay null cũng đều là object.

  • Dart hỗ trợ generic type.

  • Dart không hỗ trợ public, protected, và private. Nếu như identifier (tên biến, hàm,…) bắt đâu vời dấu gạch dưới ( _ ) , thì nó private trong file code của nó.

  • Dart tools có thể báo cho bạn 2 loại vấn đề: warnings và errors. Warnings là những dấu hiểu chỉ ra rằng code của bạn có thể không hoạt động, nhưng chương trình của bạn vẫn có thể chạy. Errors có thể là error lúc compile-time hoặc run-time. Error lúc compile-time hiển nhiên sẽ khiến code bạn không chạy được, còn kết quả của error run-time sẽ là những exceptions được throw ra khi chạy.

Variables

Dart có thể tự suy ra type của variable dựa trên giá trị truyền vào:

Như ví dụ trên thì có thể thấy ta không cần phải khai báo type của variable, dart sẽ đoán được type dựa trên các gía trị truyền vào của biến. Nếu muốn thì chúng ta có thể khai báo type trước variable.

Có thêm một số cách để khai báo biến trong Dart:

  • static variables: có thể được gọi trên chính class đó thay vì instance của nó.

  • final variable: không thể được gán lại, chúng phải được khởi tạo.

  • const variable: Giá trị của một biến const được xác định tại thời điểm biên dịch và không thể thay đổi tại thời điểm chạy.

Built-in types

Dart hỗ trợ những loại dữ liệu sau đây:

  • numbers

  • strings

  • booleans

  • lists (cũng có thể coi như arrays)

  • maps

  • runers (dùng để hiện thị các ký hiệu Unicode trong string, kiểu như mấy emotion)
    w

Strings

Dart hỗ trợ multi-line strings.Bạn có thể truyền value vào trong string rất đơn giản $variable hoặc ${expression}

Number

Các kiểu số trong Dart tồn tại dưới 2 dạng chính: int và double. Cả int và double đều là subtypes của num. Do chúng đều là object nên có khá nhiều method hỗ trợ như abs(), ceil()…

Lists

Collection được sử dụng nhiều nhất trong Dart là Lists, nó tương tự array trên các ngôn ngữ khác.

Maps

Ở các ngôn ngữ khác thường được gọi là dictionary, là tập hợp của các cặp key-value không có thứ tự.

Functions

Function cũng là object và có type Function. Có nghĩa là một function cũng có thể gán cho 1 variable và truyền nó cho một function khác như một 1 argument.

Dưới đây là cách implement 1 function:

Bạn hoàn toàn có thể bỏ qua type trong function, tuy nhiên Dart không recommend theo cách này:

Nếu function chỉ có một expression (biểu thức), bạn có thể viết 1 cách ngắn gọn sau:

Null aware operations

Dart support một số cách nhận biết null như bên dưới:

Casting in Dart

Bạn có thể truy cập variable của instance bằng as:

Optional positional parameters

Với optional parameter bạn có thể không cần truyền giá trị cho parameter đó. Bằng cách cho chúng vào trong []:

Default parameter values

Bạn có thể sử dụng = để gán giá trị default cho parameter. Giá trị default phải là các compile-time constant:

CATALOG
  1. 1. Programming in Dart
    1. 1.1. Variables
    2. 1.2. Built-in types
    3. 1.3. Strings
    4. 1.4. Number
    5. 1.5. Lists
    6. 1.6. Maps
    7. 1.7. Functions
    8. 1.8. Null aware operations
    9. 1.9. Casting in Dart
    10. 1.10. Optional positional parameters
    11. 1.11. Default parameter values