Getters and Setters di Dart and Flutter

Getters and Setters di Dart and Flutter.


Seperti dalam banyak bahasa lain, getter \ setters adalah metode yang memberikan akses baca / tulis ke properti objek.


Di artikel ini, kita akan melihat contoh sederhana dan menjalankannya di dartpad.



Di Dart, membaca dan menulis properti apa pun objek diimplementasikan menggunakan getter \ setters.


Misalnya, lihat kodenya


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

Jalankan kode di Dartpad.


Setiap properti di kelas ini memiliki setter implisit untuk menulis padanya dan pengambil getar implisit untuk mendapatkan nilai.


Ketika kami memanggil person.name = 'Newusername'; lalu kita beralih ke kelas setter. Dan setelah itu kita mendapatkan nilainya person.name menggunakan pengambil.


Di Dart, kita dapat (dan ini disarankan untuk dilakukan untuk abstraksi kode) membuat getter dan setter kita sendiri. Ini memungkinkan kita untuk menginisialisasi kelas kita dengan properti, dan di masa depan membungkusnya dengan metode yang berbeda tanpa mengubah kode klien.


Sebagai contoh, katakanlah proyek kami dengan kelas Person telah berkembang dan kami perlu menentukan usia mayoritas. Kita dapat melakukan ini tanpa mengubah konstruktor dan properti dasar objek.


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

Jalankan kode di Dartpad.


Menjalankan kode di Dartpad, kami melihat bahwa kami telah menambahkan perilaku kelas baru, sementara kode klien yang sudah dibuat tidak akan terpengaruh dan semuanya akan terus berfungsi.


Dengan cara yang sama, jika di beberapa bagian proyek kami mulai bekerja dengan usia, dan bukan dengan tanggal lahir, maka kita dapat menambahkan setter untuk mencatat ulang tahun ketika menunjukkan usia.


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

Jalankan kode di Dartpad.


Secara umum, pengambil & penyetel digunakan begitu sering sehingga pembuatan otomatisnya terintegrasi ke dalam Android Studio. Ketika kursor pada properti ditekan Command + N (di Windows, Ctrl + N) dan kreasi mereka akan berada di menu konteks.


Pengodean yang bagus untuk semua orang!

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


All Articles