🎯 📗 Bagian 1 (Fundamental & Dasar) • Modul 01 100% Standar Industri & Vokasi

Variabel, Tipe Data & Sound Null Safety

Modul pembelajaran Variabel, Tipe Data & Sound Null Safety.

⚡ Pemrograman DART

03. Variabel, Tipe Data & Sound Null Safety

1. Tipe Data Primitif pada Dart

Dart adalah bahasa strongly typed, artinya setiap variabel memiliki tipe data yang jelas. Tipe data inti pada Dart meliputi:

Tipe Data Deskripsi Contoh Penulisan
int Bilangan bulat tanpa desimal (64-bit integer). int kapasitas = 500;
double Bilangan pecahan desimal (64-bit floating point). double ipk = 3.92;
num Tipe induk angka (dapat menampung int maupun double). num suhu = 36.5;
String Untaian karakter teks UTF-16 (kutip tunggal atau ganda). String jurusan = "TJKT";
bool Nilai logika boolean: true atau false. bool aktif = true;

2. Type Inference (var), dynamic, dan Object

  • var: Dart menyimpulkan tipe data secara otomatis berdasarkan nilai inisialisasi awal. Sekali ditetapkan, tipe data tersebut terkunci secara statis.
  • dynamic: Variabel dapat menampung tipe data apa saja dan tipe datanya dapat berubah-ubah saat runtime (menonaktifkan static type checking).
  • Object: Tipe induk dari semua kelas di Dart. Variabel Object wajib dilakukan type check sebelum mengakses method spesifik.
void main() {
  var nama = 'SMK Hebat'; // Tipe data String terkunci
  // nama = 100; // Error kompilasi!
  
  dynamic data = 'Hello';
  data = 12345; // Valid! Dapat berubah tipe
  data = [1, 2, 3];
}

3. Perbedaan final vs const

final (Runtime Constant)

Variabel hanya dapat diisi nilai satu kali saat runtime dieksekusi. Cocok untuk nilai yang didapat dari waktu sekarang atau input user.

final waktu = DateTime.now();

const (Compile-time Constant)

Nilai harus sudah pasti diketahui secara mutlak saat kompilasi sebelum program dijalankan. Menghemat alokasi memori.

const double pi = 3.14159;

4. Sound Null Safety di Dart

Sejak Dart 2.12 dan Dart 3, seluruh tipe data bersifat Non-Nullable secara default. Variabel tidak dapat diisi null kecuali dideklarasikan khusus dengan operator tanda tanya (?).

void main() {
  // 1. Non-Nullable (Default)
  String nama = "Ahmad";
  // nama = null; // Error Kompilasi!

  // 2. Nullable Type (?)
  String? email = null; // Valid
  
  // 3. Null-aware fallback (??)
  String kontak = email ?? "Email belum diatur";
  
  // 4. Null-aware assignment (??=)
  email ??= "admin@ridaikrar.web.id"; // Isi hanya jika email null
  
  // 5. Null-aware method call (?.)
  int? panjang = email?.length;
  
  // 6. Null Assertion Operator (!) -> Menggaransi non-null
  String emailPasti = email!;
  
  print("Kontak: $kontak | Panjang: $panjang");
}
Keyword late:

Gunakan keyword late untuk mendeklarasikan variabel non-nullable yang nilainya baru akan diinisialisasi sesaat sebelum digunakan (lazy initialization).

late String konfigurasiDb;
void setup() {
  konfigurasiDb = "localhost:5432";
}