Flutter | Platform Spesifik Widget Tasarlamak (iOS&Android — Factory Pattern)

Samed Harman
CNK Tech
Published in
2 min readDec 30, 2021

Flutter projelerimizde kimi zaman Android ve iOS için farklı görünümler tasarlama ihtiyacımız doğabilir. Bu senaryomuzu en kolay mantık ile aşağıdaki şekilde gerçekleştirebiliriz.

Bu yöntem basit manada işimizi görse de hem kodun okunabilirliği açısından hem de yarın bir gün örneğin iOS tarafında kendi tasarladığımız custom bir widgetı kullanmak istediğimizde projemizi düzenlemek bizim için zahmetli olacaktır. Bu yüzden şimdi factory method düşüncesi ile widgetlarımızı bize üretecek bir arayüz tanımı yapalım.

Yazdığımız bu soyut sınıfı implemente eden sınıflar createiOSWidget() ve createAndroidWidget() methodlarını doldurmak zorunda olacaklar. Biz de iki platforma spesifik olarak yazmak istediğimiz sınıflara bu arayüzü uygulayacağız. Örneğin bir Switch butonu yazalım ve üzerinde konuşalım.

SwitchPlatform sınıfımız oluşturduğumuz arayüzü uygulayıp geriye iOS için CupertinoSwitch; Android için Switch widgetlarını geriye döndürmektedir. Her iki implementasyon için de istediğimiz modifikasyonları yapabilmekte ve widgetlarımızı yönetebilmekteyiz. Ayrıca widgetlarımızı StatefulBuilder yapısı ile sarmalayıp state değişikliklerinden etkilenmesini sağlayabiliriz. Burada her iki widget’ımızı da StatefulBuilder ile sarmalayıp buton etkileşiminde setState callbacki ile değişen durumumuzu ekranda da görebilmiş olduk. Tabii direkt oraya bir Statefull sınıf da verebilirdik. Benim bu şekilde hoşuma gitti daha tatlı geldi , size de tatlı gelen farklı yollar varsa belirtmekten çekinmeyin :).

Umuyorum faydalı olabilmişimdir , iyi çalışmalar , mutlu yıllar 😊.

Referans kaynak:

Github:

--

--

Samed Harman
CNK Tech

Flutter/Android Mobile App Developer | Computer Engineer