switch adalah struktur kontrol yang memungkinkan kita memilih satu dari beberapa blok kode untuk dieksekusi, berdasarkan nilai sebuah ekspresi. Cocok digunakan ketika satu variabel dibandingkan dengan banyak nilai konstan.
int hari = 3;
switch (hari) {
case 1:
print('Senin');
break;
case 2:
print('Selasa');
break;
case 3:
print('Rabu');
break;
case 4:
print('Kamis');
break;
case 5:
print('Jumat');
break;
default:
print('Akhir pekan');
}
Output: Rabu
breakSetiap case yang memiliki isi wajib diakhiri dengan break (atau return/throw). Dart tidak mengizinkan fall-through seperti di C atau Java:
int kode = 2;
switch (kode) {
case 1:
print('Satu');
break;
case 2:
print('Dua');
break; // wajib ada
case 3:
print('Tiga');
break;
default:
print('Tidak dikenal');
}
Dart mengizinkan beberapa case yang kosong (tanpa kode) berdampingan untuk menangani beberapa nilai dengan satu aksi:
String huruf = 'a';
switch (huruf) {
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
print('Huruf vokal');
break;
default:
print('Huruf konsonan');
}
String perintah = 'maju';
switch (perintah) {
case 'maju':
print('Bergerak ke depan');
break;
case 'mundur':
print('Bergerak ke belakang');
break;
case 'berhenti':
print('Berhenti di tempat');
break;
default:
print('Perintah tidak dikenal: $perintah');
}
Jika switch berada di dalam fungsi, bisa menggunakan return sebagai pengganti break:
String namaHari(int hari) {
switch (hari) {
case 1: return 'Senin';
case 2: return 'Selasa';
case 3: return 'Rabu';
case 4: return 'Kamis';
case 5: return 'Jumat';
case 6: return 'Sabtu';
case 7: return 'Minggu';
default: return 'Tidak valid';
}
}
void main() {
print(namaHari(3)); // Rabu
print(namaHari(6)); // Sabtu
}
Gunakan switch:
✓ Membandingkan satu variabel dengan banyak nilai konstan
✓ Nilai yang dibandingkan adalah int, String, atau enum
✓ Banyak cabang setara — lebih bersih dari banyak else if
Gunakan if-else:
✓ Kondisi kompleks atau melibatkan rentang nilai (nilai >= 60)
✓ Membandingkan hasil ekspresi boolean
✓ Kondisi melibatkan banyak variabel sekaligus
// Lebih baik pakai switch:
switch (statusPesanan) {
case 'diproses': ...
case 'dikirim': ...
case 'selesai': ...
}
// Lebih baik pakai if-else:
if (nilai >= 90) { ... }
else if (nilai >= 80) { ... }
else if (nilai >= 70) { ... }
💡 Tips: Di Dart 3.0+, hadir fitur switch expression dan pattern matching yang jauh lebih powerful dan ringkas. Namun untuk pemula, kuasai dulu switch statement dasar yang sudah dijelaskan di sini — itulah fondasi untuk memahami fitur yang lebih canggih. 🚀
Kursus
Dart Dasar
Kategori
Kontrol Alur
Durasi Pelajaran
20 menit