Dart cơ bản (biến, kiểu dữ liệu, hàm, class)
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ì.
Giới thiệu về Dart và vai trò trong phát triển ứng dụng
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.
Một số đặc điểm nổi bật của Dart:
-
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 trong Dart – Cách khai báo và sử dụng hiệu quả
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.
1. Khai báo biến trong Dart
Bạn có thể khai báo biến bằng ba từ khóa chính: var, final, và const.
-
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.
2. Quy tắc đặt tên biến
-
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.
3. Ví dụ thực tế
👉 Kết quả in ra:
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.
Kiểu dữ liệu trong Dart – Nền tảng của mọi chương trình
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.
1. Các kiểu dữ liệu cơ bản
| Kiểu dữ liệu | Mô tả | Ví dụ |
|---|---|---|
| int | Số nguyên | int age = 25; |
| double | Số thực | double height = 1.75; |
| String | Chuỗi ký tự | String name = 'Diep'; |
| bool | Giá trị logic | bool isActive = true; |
| List | Danh sách (mảng) | List<String> fruits = ['apple', 'banana']; |
| Map | Tập hợp key-value | Map<String, int> scores = {'Math': 90, 'English': 85}; |
2. Null Safety trong Dart
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ụ:
3. Dynamic và Object
-
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ụ:
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 trong Dart – Xây dựng logic chương trình
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.
1. Cấu trúc của một hàm cơ bản
Ví dụ:
2. Hàm không có giá trị trả về
3. Hàm có giá trị mặc định và tham số đặt tên
Dart hỗ trợ named parameters giúp mã dễ đọc hơn.
4. Biểu thức hàm rút gọn
Khi hàm chỉ có một dòng lệnh, có thể viết ngắn gọn bằng arrow function:
5. Lời khuyên
-
Đặ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.
Class trong Dart – Hiểu sâu về lập trình hướng đối tượng
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).
1. Cấu trúc một class
2. Tạo đối tượng từ class
Kết quả:
3. Class kế thừa (Inheritance)
Dart hỗ trợ kế thừa thông qua từ khóa extends:
4. Tính đóng gói và getter/setter
5. Static, abstract, và mixin
-
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ụ:
6. Mẹo OOP hiệu quả
-
Á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.
Kết luận
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.