fungsiparameternamedMenengah5 mnt baca

Named Parameter dan Default Value

Parameter opsional, named parameter, dan default value supaya fungsi fleksibel.

Masalah dengan positional parameter

Sejauh ini parameter kita bersifat positional: urutan menentukan arti.

dart
void buatUser(String nama, int umur, String kota) {
  print('$nama, $umur tahun, dari $kota');
}

void main() {
  buatUser('Rizky', 17, 'Bandung');
}

Masalahnya: kalau parameternya lima dan tipenya mirip, gampang tertukar. buatUser('Bandung', 'Rizky', 17) tidak error secara tipe kalau semuanya String, tapi hasilnya kacau. Solusinya: named parameter.

Named parameter

Dengan kurung kurawal, parameter dipanggil pakai nama, jadi urutan bebas:

dart
void buatUser({required String nama, required int umur, String kota = 'Jakarta'}) {
  print('$nama, $umur tahun, dari $kota');
}

void main() {
  buatUser(nama: 'Rizky', umur: 17);
  buatUser(umur: 20, nama: 'Sinta', kota: 'Surabaya');
}

Perhatikan tiga hal baru:

  1. required berarti parameter wajib diisi
  2. Tanpa required dan tanpa default value, parameter jadi opsional (tipenya nullable, boleh tidak diisi)
  3. String kota = 'Jakarta' memberi default value kalau tidak diisi

Optional positional parameter

Selain named, ada juga positional yang opsional pakai kurung siku:

dart
String sapa(String nama, [String sapaan = 'Halo']) {
  return '$sapaan, $nama!';
}

void main() {
  print(sapa('Rizky'));                 // Halo, Rizky!
  print(sapa('Rizky', 'Selamat pagi')); // Selamat pagi, Rizky!
}

Beda dengan named: di sini urutan tetap menentukan, tapi parameter boleh dilewat.

Catatan teknis: Jangan campur named dan optional positional dalam satu fungsi. Pilih satu gaya saja. Untuk API publik dan fungsi dengan banyak parameter, named parameter lebih disukai karena kode di tempat pemanggilan jadi dokumentasi sendiri: buatUser(nama: 'Rizky', umur: 17) langsung jelas tanpa harus buka definisi fungsi.

Kapan pakai yang mana?

JenisSintaksCocok untuk
Required positional(String nama)1-2 parameter yang jelas
Required named{required String nama}3+ parameter, biar tidak tertukar
Optional named + default{String kota = 'Jakarta'}konfigurasi, opsi
Optional positional[String x = 'a']kasus sederhana, jarang dipakai

Contoh nyata gaya Flutter

Widget Flutter hampir selalu pakai named parameter, makanya kode Flutter terlihat seperti ini:

dart
void main() {
  // bayangkan ini widget Flutter:
  kartu(nama: 'Rizky', umur: 17, warna: 'biru');
}

void kartu({required String nama, required int umur, String warna = 'putih'}) {
  print('Kartu $nama ($umur) warna $warna');
}

Kalau kamu sudah nyaman dengan pola ini, membaca kode Flutter nanti akan terasa familiar. Named parameter adalah salah satu alasan kode Flutter tetap terbaca walau widget-nya bersarang dalam.