A getter metódusok speciális Dart metódusok amik kiolvassák és visszaadják egy objektum / osztály tulajdonságait.
Minden osztály változónak (tulajdonságnak) létezik a színfalak mögött egy ilyen metódusa, még akkor is, ha az nem látszik. És természetesen sajátot is létrehozhatunk.
Getter nélkül
Van nekünk egy getSummaryData nevű metódusunk, ami egy listát állít elő nekünk és azt a végén visszaadja:
final List<String> chosenAnswers;
List<Map<String, Object>> getSummaryData() {
final List<Map<String, Object>> summary = [];
for (var i = 0; i < chosenAnswers.length; i++) {
summary.add(
{
'question_index': i,
'question': questions[i].text,
// úgy terveztük, hogy a helyes válasz mindig az első elem a listában
'correct_answer': questions[i].answers[0],
'user_answer': chosenAnswers[i]
},
);
}
return summary;
}
A lista a kód tetején levő chosenAnswers tulajdonságon alapul.
A metódus fontosabb bjellemzői:
- nem kap kívülről bemeneti értékeket, azaz nincsenek paraméterei
- funkciója mindössze annyi, hogy előállít néhány adatot néhány tulajdonság alapján
És most jön a getter
A fentiekhez hasonló esetekben használhatunk getter metódust a következőképpen:
- Célszerű átnevezni a metódust, hogy sokkal inkább emlékeztessen a neve egy tulajdonságra, ezért eltávolítjuk a nevéből a „get” szót és marad csak „summaryData”.
- Eltávolítjuk a () zárójelpárt a neve után.
- A neve elé beírjuk a get kulcsszót. Ez egy speciális kulcsszó a Dart-ban, ami létrehoz egy getter-t.
- Mivel a getter is gyakorlatilag egy metódus, továbbra is megmarad a metódus törzse.
List<Map<String, Object>> get summaryData {
final List<Map<String, Object>> summary = [];
for (var i = 0; i < chosenAnswers.length; i++) {
summary.add(
{
'question_index': i,
'question': questions[i].text,
// úgy terveztük, hogy a helyes válasz mindig az első elem a listában
'correct_answer': questions[i].answers[0],
'user_answer': chosenAnswers[i]
},
);
}
return summary;
}
A get kulcsszónak köszönhetően egyrészt már nem hívhatjuk meg úgy, mint egy metódust. Inkább úgy kell használni, mint egy változót vagy tulajdonságot (annak ellenére természetesen, hogy ez a színfalak mögött továbbra is egy metódus maradt).
Meg kell említeni a getter párját, a setter-t is.
Dart dokumentáció
A hivatalos Dart doksi itt említi a használatát.