Getters y Setters en Dart and Flutter

Getters y Setters en Dart and Flutter.


Como en muchos otros idiomas, getters \ setters son métodos que dan acceso de lectura / escritura a las propiedades del objeto.


En este artículo, veremos ejemplos simples y los ejecutaremos en dartpad.



En Dart, la lectura y escritura de las propiedades de los objetos se implementa mediante getters \ setters.


Por ejemplo, mira el código


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

Ejecute el código en Dartpad.


Cada propiedad en esta clase tiene un setter implícito para escribir y un getter implícito para obtener el valor.


Cuando llamamos a person.name = 'Newusername'; luego pasamos a la clase setter. Y después de eso obtenemos su valor person.name usando getter.


En Dart, podemos (y esto se recomienda hacer para la abstracción de código) crear nuestros propios captadores y establecedores. Esto nos permite inicializar nuestras clases con propiedades y, en el futuro, envolverlas con diferentes métodos sin cambiar el código del cliente.


Por ejemplo, digamos que nuestro proyecto con la clase Persona ha evolucionado y necesitamos determinar la edad de la mayoría. Podemos hacer esto sin cambiar el constructor y las propiedades básicas del objeto.


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

Ejecute el código en Dartpad.


Al ejecutar el código en Dartpad, vemos que hemos agregado un nuevo comportamiento de clase, mientras que el código del cliente ya creado no se verá afectado y todo continuará funcionando.


Del mismo modo, si en alguna parte del proyecto comenzamos a trabajar con la edad, y no con la fecha de nacimiento, entonces podemos agregar setter para registrar el cumpleaños al indicar la edad.


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

Ejecute el código en Dartpad.


En general, getter y setter se usan con tanta frecuencia que su creación automática está integrada en Android Studio. Cuando se presiona el cursor sobre la propiedad Comando + N (en Windows, Ctrl + N) y su creación estará en el menú contextual.


Buena codificación para todos!

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


All Articles