Tạo bởi Trần Văn Điêp|
Lập Trình Flutter

Dart cơ bản (biến, kiểu dữ liệu, hàm, class)

Trong thế giới phát triển phần mềm hiện đại, ngôn ngữ lập trình Dart đang nổi lên như một trong những lựa chọn hàng đầu, đặc biệt trong lĩnh vực phát triển ứng dụng đa nền tảng với Flutter. Với cú pháp rõ ràng, dễ học và hiệu năng cao, Dart mang đến cho lập trình viên một trải nghiệm lập trình hiện đại, đồng thời kết hợp sức mạnh của ngôn ngữ hướng đối tượng với khả năng xử lý bất đồng bộ mạnh mẽ.

Nếu bạn đang bắt đầu hành trình học Flutter hoặc muốn hiểu sâu hơn về nền tảng ngôn ngữ của nó, việc nắm vững Dart cơ bản là bước khởi đầu không thể bỏ qua. Bài viết này sẽ giúp bạn hiểu chi tiết về biến, kiểu dữ liệu, hàm, và class – bốn khái niệm nền tảng tạo nên mọi ứng dụng Dart. Chúng ta sẽ đi từ khái niệm, ví dụ minh họa cho đến những mẹo thực tế giúp bạn lập trình hiệu quả và chuyên nghiệp hơn.

Hãy chuẩn bị trình soạn thảo code yêu thích của bạn, và cùng khám phá thế giới thú vị của Dart – nơi mọi thứ được thiết kế để giúp lập trình viên viết mã nhanh, đẹp và dễ bảo trì.


Dart là ngôn ngữ lập trình do Google phát triển, được thiết kế chủ yếu để xây dựng giao diện người dùng (UI) hiện đại. Ngôn ngữ này hỗ trợ cả lập trình hướng đối tượng (OOP) lẫn lập trình hàm (functional programming), giúp lập trình viên dễ dàng chuyển từ các ngôn ngữ khác như Java, C#, hay JavaScript sang.

  • Cú pháp hiện đại, dễ đọc và thân thiện với người mới.

  • Hiệu năng cao, nhờ khả năng biên dịch sang mã máy (native code) và JavaScript.

  • Hỗ trợ Hot Reload khi kết hợp với Flutter – giúp xem ngay kết quả thay đổi mà không cần khởi động lại ứng dụng.

  • Quản lý bộ nhớ thông minh, tránh tình trạng rò rỉ dữ liệu (memory leak).

  • Tích hợp tốt với IDE như VSCode, Android Studio, IntelliJ.

Hiểu vững các thành phần cơ bản trong Dart không chỉ giúp bạn viết code hiệu quả mà còn là nền tảng để phát triển các dự án lớn, đặc biệt là trong hệ sinh thái Flutter – nơi Dart đóng vai trò trung tâm.


Biến (variable) là phần tử cơ bản nhất trong lập trình, được dùng để lưu trữ dữ liệu trong bộ nhớ tạm thời. Trong Dart, biến có thể được khai báo linh hoạt với nhiều cách khác nhau, tùy vào mục đích và độ an toàn của dữ liệu.

Bạn có thể khai báo biến bằng ba từ khóa chính: var, final, và const.

var name = 'Diep'; // Biến có thể thay đổi giá trị final age = 25; // Chỉ gán giá trị một lần const country = 'Vietnam'; // Hằng số cố định trong quá trình compile
  • var: Dùng khi giá trị biến có thể thay đổi trong quá trình chạy.

  • final: Dùng cho biến chỉ gán một lần, nhưng có thể xác định tại runtime.

  • const: Dùng cho hằng số compile-time – giá trị cố định ngay khi biên dịch.

  • Tên biến phải bắt đầu bằng chữ cái hoặc dấu gạch dưới (_).

  • Không chứa khoảng trắng hoặc ký tự đặc biệt.

  • Theo quy tắc camelCase, ví dụ: userName, isLoggedIn.

void main() { var score = 95; final studentName = 'Hoa'; const subject = 'Math'; print('$studentName got $score points in $subject'); }

👉 Kết quả in ra:

Hoa got 95 points in Math

Lời khuyên:
Hãy dùng const khi chắc chắn giá trị không thay đổi, final khi giá trị chỉ được gán một lần, và var khi biến có thể thay đổi trong suốt chương trình. Điều này giúp mã của bạn dễ hiểu và tối ưu hơn.


Dart là ngôn ngữ có kiểu dữ liệu tĩnh (static type), nghĩa là kiểu dữ liệu của biến được xác định ngay từ lúc biên dịch. Điều này giúp phát hiện lỗi sớm và tăng hiệu năng khi chạy chương trình.

Kiểu dữ liệuMô tảVí dụ
intSố nguyênint age = 25;
doubleSố thựcdouble height = 1.75;
StringChuỗi ký tựString name = 'Diep';
boolGiá trị logicbool isActive = true;
ListDanh sách (mảng)List<String> fruits = ['apple', 'banana'];
MapTập hợp key-valueMap<String, int> scores = {'Math': 90, 'English': 85};

Từ phiên bản Dart 2.12, tính năng null safety được bổ sung giúp tránh lỗi khi truy cập giá trị null.
Ví dụ:

String? address; // Có thể null print(address?.length); // Sử dụng ? để tránh lỗi
  • dynamic: Biến có thể nhận mọi kiểu dữ liệu.

  • Object: Kiểu dữ liệu gốc của mọi đối tượng trong Dart.

Ví dụ:

dynamic value = 10; value = 'Hello Dart'; // Không lỗi

Lưu ý: Hạn chế lạm dụng dynamic vì sẽ mất lợi thế kiểm tra kiểu tại compile-time.


Hàm (function) là khối mã thực thi một nhiệm vụ cụ thể. Việc chia nhỏ chương trình thành nhiều hàm giúp code dễ bảo trì, kiểm thử và tái sử dụng.

kiểu_trả_về tên_hàm(tham_số) { // thân hàm return giá_trị; }

Ví dụ:

int add(int a, int b) { return a + b; }
void greet(String name) { print('Xin chào $name!'); }

Dart hỗ trợ named parameters giúp mã dễ đọc hơn.

void displayInfo({String name = 'Unknown', int age = 0}) { print('Name: $name, Age: $age'); } displayInfo(name: 'Diep', age: 25);

Khi hàm chỉ có một dòng lệnh, có thể viết ngắn gọn bằng arrow function:

int multiply(int a, int b) => a * b;
  • Đặt tên hàm theo động từ, ví dụ: calculateTotal(), printResult().

  • Luôn ghi rõ kiểu trả về để tránh lỗi khi bảo trì.

  • Viết hàm ngắn gọn, thực hiện một nhiệm vụ duy nhất.


Dart là ngôn ngữ hướng đối tượng (OOP), mọi thứ trong Dart đều là object. Class (lớp) là bản thiết kế của đối tượng, định nghĩa thuộc tính (properties) và hành vi (methods).

class Person { String name; int age; Person(this.name, this.age); void greet() { print('Xin chào, tôi là $name và tôi $age tuổi.'); } }
void main() { var p1 = Person('Diep', 25); p1.greet(); }

Kết quả:

Xin chào, tôi là Diep và tôi 25 tuổi.

Dart hỗ trợ kế thừa thông qua từ khóa extends:

class Student extends Person { String school; Student(String name, int age, this.school) : super(name, age); void study() { print('$name đang học tại $school'); } }
class BankAccount { double _balance = 0; double get balance => _balance; set deposit(double amount) => _balance += amount; }
  • static: thuộc tính/hàm dùng chung cho tất cả đối tượng.

  • abstract: định nghĩa lớp trừu tượng, chỉ mô tả hành vi.

  • mixin: tái sử dụng logic giữa các class khác nhau.

Ví dụ:

mixin Flyable { void fly() => print('Bay trên bầu trời!'); }
  • Áp dụng nguyên tắc SOLID trong thiết kế class.

  • Chia class theo chức năng rõ ràng.

  • Dùng constructor đặt tên để tạo đối tượng linh hoạt.


Qua bài viết này, bạn đã nắm được nền tảng quan trọng của Dart cơ bản: biến, kiểu dữ liệu, hàm và class. Đây là bốn yếu tố cấu thành mọi chương trình trong Dart, và là bước đệm không thể thiếu để tiến xa hơn trong lập trình Flutter.

Hiểu rõ cách khai báo biến, quản lý kiểu dữ liệu, viết hàm tối ưu và xây dựng class hiệu quả sẽ giúp bạn viết mã ngắn gọn, sạch và dễ mở rộng. Hãy luyện tập thường xuyên bằng cách tạo ra các ví dụ nhỏ, thử kết hợp nhiều khái niệm cùng lúc – vì chỉ khi thực hành, bạn mới thật sự làm chủ được ngôn ngữ Dart.

Nếu bạn đang muốn trở thành lập trình viên Flutter chuyên nghiệp, hãy bắt đầu ngay hôm nay với nền tảng Dart vững chắc.

Phản hồi từ học viên

5

Tổng 0 đánh giá

Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó