1. Anatomi Fungsi di Dart
Fungsi adalah blok kode modular yang dapat menerima parameter input, memproses logika, dan mengembalikan (return) sebuah nilai.
// Tipe Return + Nama Fungsi + Parameter Input
int hitungLuasPersegi(int sisi) {
return sisi * sisi;
}
// Arrow Syntax (=>) untuk fungsi 1 baris
int hitungKeliling(int sisi) => 4 * sisi;
2. Positional vs Named Parameters
Dart memiliki sistem parameter yang sangat fleksibel, yang menjadi kunci arsitektur Widget pada Flutter:
Named Parameters ({required ...})
Parameter dipanggil menggunakan label nama, urutan argumen tidak berpengaruh. Sangat mudah dibaca dan dipahami.
void buatUser({required String nama, int umur = 17, String role = 'Siswa'}) {
print("User: $nama ($umur thn) - Role: $role");
}
void main() {
// Pemanggilan dengan label
buatUser(nama: "Fauzi", role: "Ketua Kelas");
}
Optional Positional Parameters ([...])
Parameter opsional dibungkus tanda kurung siku siku dengan nilai bawaan (default value).
String sambut(String nama, [String salam = 'Selamat Pagi']) {
return "$salam, $nama!";
}
3. First-Class Functions & Higher-Order Functions
Di Dart, fungsi diperlakukan sebagai objek kelas utama (First-Class Object), sehingga fungsi dapat disimpan dalam variabel, dikirim sebagai argumen, atau di-return dari fungsi lain:
void main() {
var angka = [1, 2, 3, 4, 5];
// Anonymous Function / Lambda pada fungsi .map() dan .where()
var angkaGenap = angka.where((n) => n % 2 == 0).toList();
var angkaKuadrat = angka.map((n) => n * n).toList();
print("Genap: $angkaGenap"); // [2, 4]
print("Kuadrat: $angkaKuadrat"); // [1, 4, 9, 16, 25]
}