Dart’da Extension Metodlar

Egemen TURK
Flutter Students Club
2 min readMar 29, 2022

Extension Metod Nedir?

Dart dili çok fazla güzel özellik barındırıyor, bir çoğu Dart ile yeni tanışan geliştiriciler tarafından bilinmiyor. Bunlardan bir tanesi Extension adını verdiğimiz metodlar. Bu yazımda Extension metodalara göz atacağız.

Extension metodlar Dart 2.7 ile hayatımıza girdi. Dart geliştiricilerinin göre kullanılması tamamen opsiyoneldir.

Extension Metodlar mevcut kütüphanelere yeni metodlar eklememize yarıyor.

Extension nasıl yazılır ilk olarak taslak bir kod bloğuna bakalım;

extension <extension name> on <type> {
definition
}

Küçük bir örnekle başlayalım;

void main() {
String clubName = "Flutter Students Club";
bool isContains = clubName.contains("Club");
print(isContains);
}

Yazdığımız kod bloğunda clubName adlı değişkende içerik kontrolü yaptık. Birden fazla değişkende kontrol yapacağımızı varsayarsak tekrar tekrar isContains’in içeriğini değiştirmemiz lazım. Bu sorunu basit bir fonksiyon yazarak çözebiliriz;

bool isContains(String text){
return text.contains("Club");
}

Daha kullanışlı hale getirdik. Fonksiyon haricinde Dart bize çok daha güzel bir yol sunuyor. Extension Metodlar 💪

extension Contains on String{
bool get isContains{
return contains("Club");
}
}

Contains adında Extension oluşturduk. Extension içinde küçük bir getter yazarak kelimenin “Club” anahtar kelimesini içerip içermediğini kontrol ettik. Artık kullanıma hazır;

void main() {
String clubName = "Flutter Students Club";
print(clubName.isContains);
}

Sonuç true olarak döner.

Nullable Extension

Extension metodlar Nullable tip sistemini de destekliyor.

extension StringExt on String?{
String? get fullName{
if(firstName == null || lastName == null)
return null;
return '$firstName $lastName';
}
}

Private Extension

Extension metodların bir diğer güzel özelliği ise private yapabilmemizdir. Yazdığınız Extension metoda bir isim vermezseniz extension private olur fakat private Extension metodu oluşturduğunuz dosyadan başka yerde kullanamazsınız.

//private Extensionextension on String{
bool get isContains{
return contains("Flutter");
}
}

Ayrıca Extension’a isim verip private yapmak isterseniz metod isminin önüne “_” ekleyerek private extension elde edebilirsiniz.

//private Extensionextension _Contains on String{
bool get isContains{
return contains("Flutter");
}
}

Flutter’da Nasıl Kullanılır ?

Extension’ların nasıl Flutter’da kullanıldığını Ekranın ortasına “Flutter Students Club” yazan basit bir uygulama üzerinden anlatacağım.

Center widgetını Extension metod olarak yazalım;

Extension’ı oluşturduk. Yapmamız gereken tek işlem fonksiyon kullanırmış gibi yazdığımız Extension’ı kullanmak.

Umarım faydalı bir içerik olmuştur. Bir sonraki yazıda görüşmek üzere 👋

Kaynaklar:

--

--