Skip to Content
Dart📘 Ngôn ngữ DartGiá trị (Values) và Kiểu dữ liệu (Data Types)

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ểuMô tảVí dụ
intSố nguyên42, -5, 0
doubleSố thực3.14, -0.5
numSố (int hoặc double)42 hoặc 3.14
StringChuỗi ký tự"Hello", 'Dart'
boolBooleantrue, false
ListDanh sách[1, 2, 3]
MapKey-value pairs{"key": "value"}
SetTậ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 int

dynamic - 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 dynamic khi 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 var với type inference
  • Phân biệt var, dynamic, Object
  • Kiểm tra kiểu với isruntimeType

Tiếp theo: Biến - var, final, const

Last updated on