Özel annotation
- Dart kursu
- Orta seviye
- Ders 77/116
- 5 dk
Kendi annotation sınıfını yazmayı öğrenirsin.
Özel annotation yazmak
Kendi annotation'ını yazabilirsin. Bir annotation aslında const constructor'ı olan bir sınıftır. Örneğin class Todo { final String msg; const Todo(this.msg); } bir annotation sınıfıdır.
Bunu @Todo('düzelt') biçiminde kullanırsın. @ işaretinden sonra sınıf adı ve varsa argümanlar yazılır. Dart bu etiketi ilgili öğeye bağlar.
Özel annotation'lar genellikle kod üretim araçlarıyla birlikte kullanılır. Tek başına bir çalışma etkisi yoktur; bir etiket bilgisi taşır.
Annotation'u uygulamak
Tanımladığın Todo annotation'ını bir metoda uygulayabilirsin. Örnek: @Todo('test ekle') void run() { ... }. Burada annotation, metoddan hemen önce yazılır.
Annotation'a argüman geçebilirsin: @Todo('mesaj'). Bu, const Todo('mesaj') çağrısına karşılık gelir.
Bir öğeye birden fazla annotation eklenebilir. Araçlar bu etiketleri tarayıp rapor üretebilir; örneğin tüm Todo etiketlerini listeleyebilir.
Uygulama Todo annotation
Bir Todo annotation sınıfı tanımla: final String msg alanı ve const Todo(this.msg) constructor'ı olsun. @Todo('test') ile işaretlenmiş void run() { print('çalıştı'); } metodunu yaz. main içinde run() çağır.
Başlangıç kodu
// Todo annotation sınıfını tanımla (msg, const constructor)
// run metodunu tanımla
void main() {
// run metodunu çağır
}Örnek çözüm
class Todo {
final String msg;
const Todo(this.msg);
}
@Todo('test')
void run() {
print('çalıştı');
}
void main() {
run();
}Beklenen çıktı
çalıştı
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Özel bir annotation ne gerektirir?
- Bir Future döndüren metod
- const constructor'lı bir sınıf Doğru cevap
- En az bir abstract metod
- Bir enum
Açıklama: annotation const constructor'lı bir sınıftır.
2 const constructor
class Todo {
final String msg;
____ Todo(this.msg);
}
class Todo {
final String msg;
const Todo(this.msg);
}
Açıklama: const constructor const ile başlar.
3 Özel annotation parçaları
| Kavram | Anlamı |
|---|---|
class Todo |
Annotation sınıfı |
const Todo(this.msg) |
const constructor |
@Todo('test') |
Uygulama |
final String msg |
Alan |