Belajar Dart - Syntax & Basic Language Features
Episode 4 of 23

Belajar Dart - Syntax & Basic Language Features

Episode ini menguasai fondasi syntax Dart: deklarasi variabel dengan var, final, dan const, control flow lengkap, fungsi dengan parameter opsional dan lambda, serta koleksi List, Set, dan Map beserta collection-for.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

Setelah project kalian berjalan, saatnya mengisi kode dengan bahasa yang sebenarnya. Episode 4 membahas syntax dan fitur bahasa dasar yang akan kalian pakai setiap hari: cara mendeklarasikan variabel, mengendalikan alur program, mendefinisikan fungsi, dan bekerja dengan koleksi.

Dart dirancang agar mudah dibaca dan diekspresif. Banyak konsep di sini akan terasa familiar bagi kalian yang pernah menulis JavaScript atau C#, tapi ada detail khas Dart yang membedakannya — seperti final versus const, parameter bernama, dan collection-for.

Akhir episode ini, kalian akan bisa menulis program kecil yang utuh: dari membaca input, memproses data, sampai menampilkan hasil.

Variabel: var, final, dan const

var untuk Inferensi Tipe

Deklarasikan variabel dengan var dan biarkan kompiler menyimpulkan tipenya:

Deklarasi dengan var
void main() {
  var nama = 'Dart';
  var versi = 3;
  var harga = 19.99;
  print('$nama $versi $harga');
}

Tipe nama adalah String, versi adalah int, dan harga adalah double — semua disimpulkan otomatis. Setelah terikat, tipe tidak bisa berubah.

final dan const

Gunakan final untuk nilai yang hanya di-assign sekali, dan const untuk nilai konstan waktu kompilasi:

final dan const
void main() {
  final nama = 'Dart'; // assign sekali
  const pi = 3.14;     // konstanta kompilasi
  print('$nama $pi');
}

Perbedaan kuncinya: const dipakai saat nilai sudah diketahui sebelum program berjalan, sedangkan final dipakai saat nilai baru diketahui saat runtime tapi tidak boleh berubah setelahnya. Perintah dart run pada file ini tetap menghasilkan output yang sama karena keduanya sama-sama tidak bisa di-reassign.

Control Flow

Percabangan if dan switch

if dan switch mengendalikan percabangan. Mulai Dart 3, switch bisa memakai pola dan expression:

Percabangan dengan if
void main() {
  var nilai = 85;
  if (nilai >= 80) {
    print('Lulus dengan predikat baik');
  } else {
    print('Perlu belajar lagi');
  }
}

Loop dan Collection-for

Dart mendukung for, while, do-while, dan for-in. Ada juga collection-for yang memungkinkan kalian membangun koleksi di dalam literal koleksi:

Loop dan collection-for
void main() {
  for (var i = 1; i <= 3; i++) {
    print('Iterasi $i');
  }
 
  var angka = [1, 2, 3];
  var ganda = [for (var a in angka) a * 2];
  print(ganda);
}

for (var a in angka) a * 2 menghasilkan list [2, 4, 6] dalam satu ekspresi — pola yang sangat berguna untuk transformasi data.

Fungsi dan Parameter Opsional

Parameter Posisional dan Bernama

Dart membedakan parameter opsional posisional yang dibungkus kurung siku dan opsional bernama yang dibungkus kurung kurawal. Named parameter wajib diberi tanda required jika tidak memiliki default:

Parameter opsional
void sapa(String nama, [String sapaan = 'Halo']) {
  print('$sapaan, $nama!');
}
 
void profil({required String nama, int umur = 0}) {
  print('$nama berumur $umur');
}
 
void main() {
  sapa('Arman');
  profil(nama: 'Arman', umur: 30);
}

Panggilan profil(nama: 'Arman') memakai default umur 0 karena parameter umur bersifat opsional bernama. Perhatikan: saat memanggil named parameter, urutan tidak penting.

Lambda dan Arrow Function

Fungsi adalah objek kelas satu di Dart. Kalian bisa menulis fungsi anonim dan arrow function dengan =>:

Lambda dan arrow function
void main() {
  var lipatGanda = (int x) => x * 2;
  var daftar = [1, 2, 3];
  var hasil = daftar.map(lipatGanda).toList();
  print(hasil);
}

daftar.map(lipatGanda) menerapkan fungsi ke setiap elemen dan mengembalikan hasil. Arrow function (int x) => x * 2 adalah singkatan dari blok yang langsung mengembalikan ekspresi.

Koleksi: List, Set, dan Map

Literal Koleksi

Tiga koleksi utama Dart memakai literal yang mirip:

List, Set, dan Map
void main() {
  var list = [1, 2, 3];
  var set = {1, 2, 2, 3};   // duplikat otomatis dibuang
  var map = {'nama': 'Dart', 'versi': 3};
 
  print(list[0]);
  print(set);
  print(map['nama']);
}

Set menjamin elemen unik — nilai 2 kedua otomatis dibuang. Map adalah pasangan kunci-nilai dan diakses dengan map['nama']. Ketiganya bisa dikombinasikan dengan collection-for dan collection-if untuk membangun data secara deklaratif.

Penutup

Inti yang harus dibawa pulang:

  • var untuk inferensi tipe, final untuk assign sekali, const untuk nilai kompilasi.
  • switch di Dart 3 mendukung pola; gunakan sesuai kebutuhan percabangan.
  • Collection-for dan collection-if membangun koleksi secara deklaratif.
  • Parameter posisional opsional memakai kurung siku; named parameter memakai required.
  • Fungsi adalah objek kelas satu; arrow function memakai =>.
  • List, Set, dan Map adalah koleksi utama dengan literal yang ringkas.

Di episode 5 selanjutnya kita akan masuk ke object-oriented Dart — class dan constructor, inheritance dan mixin, abstract class dan enum, extension method dan operator overloading, serta pembuatan data model yang immutable. Ini adalah fondasi untuk menulis aplikasi Dart yang terstruktur.

Belajar Dart - Syntax & Basic Language Features | Belajar Dart