CodeBlanks Logo Icon CodeBlanks

Özel annotation

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

main.dart
// Todo annotation sınıfını tanımla (msg, const constructor)

// run metodunu tanımla

void main() {
  // run metodunu çağır
}

Örnek çözüm

main.dart
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

Soru
class Todo {
  final String msg;
  ____ Todo(this.msg);
}
Cevap
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

Orta seviye bölümündeki tüm dersler