رسائل ورسائل في دارت ورفرفة.
كما هو الحال في العديد من اللغات الأخرى ، فإن getters \ setters هي طرق تتيح الوصول للقراءة / الكتابة إلى خصائص الكائن.
في هذه المقالة ، سننظر في أمثلة بسيطة ونعمل عليها في dartpad.

في Dart ، يتم تطبيق قراءة وكتابة أي خصائص للكائنات باستخدام getters \ setters.
على سبيل المثال ، انظر إلى الكود
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}'); }
قم بتشغيل الكود في Dartpad.
تحتوي كل خاصية في هذه الفئة على أداة الضبط الضمني للكتابة إليها والرابط الضمني للحصول على القيمة.
عندما نسمي person.name = 'Newusername';
ثم ننتقل إلى الصف واضعة. وبعد ذلك نحصل على قيمة person.name
باستخدام getter.
في Dart ، يمكننا (وهذا موصى به من أجل تجريد الكود) إنشاء مجموعاتنا وأداة التثبيت الخاصة بنا. يتيح لنا ذلك تهيئة فصولنا بخصائص ، وفي المستقبل ، نلفها بطرق مختلفة دون تغيير رمز العميل.
على سبيل المثال ، دعنا نقول أن مشروعنا مع فئة الأشخاص قد تطور ونحتاج إلى تحديد سن الرشد. يمكننا القيام بذلك دون تغيير المنشئ والخصائص الأساسية للكائن.
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'}'); }
قم بتشغيل الكود في Dartpad.
عند تشغيل الكود في Dartpad ، نرى أننا أضفنا سلوكًا جديدًا في الفصل ، بينما لن يتأثر رمز العميل الذي تم إنشاؤه بالفعل وسيستمر كل شيء في العمل.
بنفس الطريقة ، إذا بدأنا العمل مع تقدم العمر في جزء من المشروع ، وليس مع تاريخ الميلاد ، فيمكننا حينئذٍ إضافة مضيف لتسجيل عيد الميلاد عند الإشارة إلى العمر.
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); }
قم بتشغيل الكود في Dartpad.
بشكل عام ، يتم استخدام getter & setter في كثير من الأحيان بحيث يتم إنشاء الإنشاء التلقائي في Android Studio. عند الضغط على المؤشر الموجود بالخاصية ، Command + N (في Windows ، Ctrl + N) وسيكون إنشائها في قائمة السياق.
الترميز الجيد للجميع!