Getters et Setters à Dart et Flutter

Getters et Setters à Dart et Flutter.


Comme dans de nombreux autres langages, les getters \ setters sont des méthodes qui donnent un accès en lecture / écriture aux propriétés des objets.


Dans cet article, nous allons examiner des exemples simples et les exécuter dans Dartpad.



Dans Dart, la lecture et l'écriture des propriétés des objets est implémentée à l'aide de getters \ setters.


Par exemple, regardez le code


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}'); } 

Exécutez le code dans Dartpad.


Chaque propriété de cette classe a un setter implicite pour y écrire et un getter implicite pour obtenir la valeur.


Lorsque nous appelons person.name = 'Newusername'; puis nous passons à la classe setter. Et après cela, nous obtenons sa valeur person.name utilisant getter.


Dans Dart, nous pouvons (et cela est recommandé pour l'abstraction de code) créer nos propres getters et setters. Cela nous permet d'initialiser nos classes avec des propriétés, et à l'avenir de les encapsuler avec différentes méthodes sans changer le code client.


Par exemple, supposons que notre projet avec la classe Person ait évolué et que nous devions déterminer l'âge de la majorité. Nous pouvons le faire sans changer le constructeur et les propriétés de base de l'objet.


 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'}'); } 

Exécutez le code dans Dartpad.


En exécutant le code dans Dartpad, nous voyons que nous avons ajouté un nouveau comportement de classe, tandis que le code client déjà créé ne sera pas affecté et tout continuera à fonctionner.


De la même manière, si dans une partie du projet, nous avons commencé à travailler avec l'âge et non avec la date de naissance, nous pouvons ajouter un setter pour enregistrer l'anniversaire en indiquant l'âge.


 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); } 

Exécutez le code dans Dartpad.


En général, getter & setter sont utilisés si souvent que leur création automatique est intégrée à Android Studio. Lorsque le curseur sur la propriété est pressé Commande + N (dans Windows, Ctrl + N) et leur création sera dans le menu contextuel.


Bon codage pour tout le monde!

Source: https://habr.com/ru/post/fr464095/


All Articles