Dart-ban kétfajta paramétert adhatunk egy függvénynek: az egyik a pozíció, a másik pedig a nevesített paraméter. Angolul positional és named arguments.
A kettő közötti különbséget úgy lehet megmagyarázni, hogy egy nevesített paraméterre a paraméter nevével lehet hivatkozni. A pozíció paraméternek pedig csak egy értéket adunk át abban a sorrendben, ahogyan az a függvény definícióban szerepel.
Positional
void add (num1, num2) {
num1 + num2;
}
// hívás:
void demo() {
add(3, 2);
}
A fenti függvényben csak annyit tudunk, hogy van két szám típusú paramétere az első és a második pozíción. Tehát itt kötött a paraméterek hívási sorrendje!
Egy pozíció argumentum lehet opcionális, ezt a [] -lel jelöljük:
void add(a, [b]) {
print(a + b);
}
Az opcionális paramétereknek lehet adni kezdőértéket is:
void add(a, [b = 5]) {
print(a + b);
}
Named
void add({num1, num2}) {
num1 + num2;
}
void demo() {
add(num2: 10, num1: 23);
}
A nevesített paraméterek esetében a paramétereket { } között adjuk meg és a hívásban is látszik egy nagy különbség: mindegy, hogy milyen sorrendben adjuk meg a paramétereket, mert a nevével tudunk rájuk hivatkozni.
Itt is lehet default értéket adni egy paraméternek:
void add({a, b = 5}) {
print(a + b);
}
A required kulcsszóval kötelezővé tudunk tenni paramétert:
void add({required a, required b}) {
print(a + b);
}
A kettőt együtt használva
Például:
const ExpenseItem(this.expense, {super.key});
Itt egy konstruktoron belül használtuk a pozícionális és a nevesített paramétert. A pozíció paraméterrel szoktuk kezdeni, és ebben az esetben nem kell a required kulcsszó, mert a pozíció paraméterek minden esetben kötelezőek.
Mikor melyiket?
Fejlesztőként teljesen mindegy, hogy melyik típust használjuk. Keverhetjük is a kettőt.
Widgetek paraméter listája VSCode-ban
Ha egy függvény vagy widget paraméter listáját akarjuk megtudni, akkor írjuk le a widget nevét, utána tegyünk () zárójel párt, majd a két zárójel között CTRL+SPACE billentyű kombinációval „lejön” az összes megadható paraméter listája.