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.
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:
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:
requiredberarti parameter wajib diisi- Tanpa
requireddan tanpa default value, parameter jadi opsional (tipenya nullable, boleh tidak diisi) String kota = 'Jakarta'memberi default value kalau tidak diisi
Optional positional parameter
Selain named, ada juga positional yang opsional pakai kurung siku:
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?
| Jenis | Sintaks | Cocok 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:
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.