Giá trị và Kiểu dữ liệu trong Dart
🎯 Mục tiêu: Hiểu hệ thống kiểu dữ liệu của Dart - strongly typed với sound null safety.
💡 Khái niệm
Dart là ngôn ngữ strongly typed - mỗi biến có kiểu xác định tại compile-time. Dart hỗ trợ sound null safety từ Dart 2.12.
int age = 25; // Integer
double height = 1.75; // Số thực
String name = "Dart"; // Chuỗi
bool isActive = true; // Boolean📝 Các kiểu dữ liệu cơ bản
| Kiểu | Mô tả | Ví dụ |
|---|---|---|
int | Số nguyên | 42, -5, 0 |
double | Số thực | 3.14, -0.5 |
num | Số (int hoặc double) | 42 hoặc 3.14 |
String | Chuỗi ký tự | "Hello", 'Dart' |
bool | Boolean | true, false |
List | Danh sách | [1, 2, 3] |
Map | Key-value pairs | {"key": "value"} |
Set | Tập không trùng | {1, 2, 3} |
🔢 Type Inference với var
var name = "Dart"; // Suy luận: String
var age = 25; // Suy luận: int
var price = 99.99; // Suy luận: double
// Không thể đổi kiểu sau khi gán
// name = 123; // Error! String không thể gán intdynamic - Kiểu động
dynamic value = 42;
value = "Hello"; // OK - có thể đổi kiểu
value = true; // OK
// Nhưng không có type checking![!WARNING] Tránh dùng
dynamickhi có thể. Nó bỏ qua type safety và có thể gây runtime errors.
🔍 Kiểm tra và chuyển đổi kiểu
var value = 42;
// Kiểm tra kiểu
print(value is int); // true
print(value is String); // false
// Runtime type
print(value.runtimeType); // int🎯 Object - Gốc của mọi kiểu
Object obj = 42; // OK
obj = "Hello"; // OK
obj = [1, 2, 3]; // OK
// Object nullable
Object? nullable = null; // OK🛠️ Thực hành
Bài tập 1: Xác định kiểu dữ liệu
void main() {
var a = 100;
var b = 3.14;
var c = "Dart";
var d = true;
var e = [1, 2, 3];
// TODO: In ra runtimeType của mỗi biến
}Lời giải:
void main() {
var a = 100;
var b = 3.14;
var c = "Dart";
var d = true;
var e = [1, 2, 3];
print("a: ${a.runtimeType}"); // int
print("b: ${b.runtimeType}"); // double
print("c: ${c.runtimeType}"); // String
print("d: ${d.runtimeType}"); // bool
print("e: ${e.runtimeType}"); // List<int>
}📱 Trong Flutter
// Widget properties
Text(
"Hello",
style: TextStyle(
fontSize: 16.0, // double
fontWeight: FontWeight.bold, // enum
color: Colors.blue, // Color
),
)
// State
class CounterState {
int count = 0; // int
bool isLoading = false; // bool
String? error; // nullable String
List<Item> items = []; // typed List
}✅ Checklist
- Hiểu các kiểu cơ bản:
int,double,String,bool - Sử dụng
varvới type inference - Phân biệt
var,dynamic,Object - Kiểm tra kiểu với
isvàruntimeType
Tiếp theo: Biến - var, final, const
Last updated on