Getter und Setter in Dart und Flutter.
Wie in vielen anderen Sprachen sind Getter \ Setter Methoden, die Lese- / Schreibzugriff auf Objekteigenschaften ermöglichen.
In diesem Artikel werden einfache Beispiele betrachtet und im Dartpad ausgeführt.

In Dart wird das Lesen und Schreiben von Eigenschaften von Objekten mithilfe von getters \ setters implementiert.
Schauen Sie sich zum Beispiel den Code an
class Person { String name; int birthYear; Person(this.name, this.birthYear); } void main() { Person person = Person('username', 1990); print('Hello ${person.name}, you was born in ${person.birthYear}'); person.name = 'Newusername'; print('Hello ${person.name}, you was born in ${person.birthYear}'); }
Führen Sie den Code in Dartpad aus.
Jede Eigenschaft in dieser Klasse verfügt über einen impliziten Setter zum Schreiben und einen impliziten Getter zum Abrufen des Werts.
Wenn wir person.name = 'Newusername';
dann wenden wir uns der Setterklasse zu. Und danach erhalten wir seinen Wert person.name
mit getter.
In Dart können wir (und dies wird für die Code-Abstraktion empfohlen) unsere eigenen Getter und Setter erstellen. Auf diese Weise können wir unsere Klassen mit Eigenschaften initialisieren und sie in Zukunft mit verschiedenen Methoden umschließen, ohne den Clientcode zu ändern.
Nehmen wir zum Beispiel an, unser Projekt mit der Personenklasse hat sich weiterentwickelt und wir mussten das Alter der Mehrheit bestimmen. Wir können dies tun, ohne den Konstruktor und die grundlegenden Eigenschaften des Objekts zu ändern.
class Person { String name; int birthYear; bool get isAdult => (DateTime.now().year - birthYear) > 18; Person(this.name, this.birthYear); } void main() { Person personAdult = Person('adultUser', 1990); print('Hello ${personAdult.name}, you was born in ${personAdult.birthYear}, you are ${personAdult.isAdult ? 'adult' : 'not adult'}'); Person personNotAdult = Person('adultUser', 2005); print('Hello ${personNotAdult.name}, you was born in ${personNotAdult.birthYear}, you are ${personNotAdult.isAdult ? 'adult' : 'not adult'}'); }
Führen Sie den Code in Dartpad aus.
Wenn Sie den Code in Dartpad ausführen, sehen Sie, dass wir ein neues Klassenverhalten hinzugefügt haben, während bereits erstellter Client-Code nicht betroffen ist und alles weiterhin funktioniert.
Auf die gleiche Weise können wir, wenn wir in einem Teil des Projekts mit dem Alter und nicht mit dem Geburtsdatum zu arbeiten begonnen haben, einen Setter hinzufügen, um den Geburtstag bei Angabe des Alters aufzuzeichnen.
class Person { String name; int birthYear; bool get isAdult => (DateTime.now().year - birthYear) > 18; int get age => (DateTime.now().year - birthYear); set age(int val) => birthYear = (DateTime.now().year - val); Person(this.name, this.birthYear); } void main() { Person personAdult = Person('adultUser', 1990); print('Hello ${personAdult.name}, you was born in ${personAdult.birthYear}, you are ${personAdult.isAdult ? 'adult' : 'not adult'}'); Person personNotAdult = Person('adultUser', 2005); print('Hello ${personNotAdult.name}, you was born in ${personNotAdult.birthYear}, you are ${personNotAdult.isAdult ? 'adult' : 'not adult'}'); //check how setter work print(personAdult.birthYear); personAdult.age = 5; print(personAdult.birthYear); }
Führen Sie den Code in Dartpad aus.
Im Allgemeinen werden Getter und Setter so oft verwendet, dass ihre automatische Erstellung in Android Studio integriert ist. Wenn der Cursor auf die Eigenschaft gedrückt wird, drücken Sie Befehlstaste + N (in Windows Strg + N) und ihre Erstellung erfolgt im Kontextmenü.
Gute Codierung an alle!