SwiftUI ile Widget Geliştirme
Apple iOS 14 ile birlikte birçok yeni geliştirme ve özellik sundu. Bunların en önemlilerinden bir tanesi de iOS da ekranda uygulamalara ait ufak özellikler görebildiğimiz Widgetlar oldu. Widgetlar sayesinde uygulamamıza ait ufak özellikleri kullanıcıya uygulamayı açmadan sunabiliyoruz.
Yeni gelen Widgetlar sadece SwiftUI ile yazılabiliyor. Bu da bizlere Apple’ın yeni dekleratif UI geliştirmemize yarayan SwiftUI’a ne kadar önem verdiğini ve geliştiricileri yönlendimeye çalıştığını gösteriyor. Biz de bu yazıda SwiftUI kullanarak basit bir geri sayım widgetı geliştireceğiz.
Hadi Başlayalım…
İlk önce projemize Widget target ekleyerek başlıyoruz.
Apple bizim için başlangıç için gerekli ayarlamaları yapıp, gerekli dosyaları sunuyor. Bu şekilde çalıştırdığımızda bir saat widgetı ile karşılaşıyoruz.
Widget
Widgetımızın giriş kısmı Widgettan türeyen objemiz oluyor. Burada iki çeşit Configuration verebiliyoruz. Dinamik ve Statik. Kullanıcıdan veri alıp işlememiz gereken yerlerde Dinamik, ekstra bir arguman gerektirmeyen widget tasarımımızda statik yapı kullanabiliriz. Burada widget başlık ve açıklamamızı giriyoruz. Burada bir diğer önemli nokta da Provider() objesi. Birazdan bahsedeceğimiz provider bize widget görüntüsü sunan bir obje.
Provider
Provider bize widgetın durumuna göre entry gönderen objedir. Örneğin widget ilk açıldığında placeholder metodu otomatik olarak tetiklenir ve basit bir entry modeli döner. Biz de bu dönen entry modeli UI oluşturmakta kullanırız. Widgetın ne zaman refresh olması gerektiği gibi özellikleri provider üzerinden belirleriz.
SimpleEntry
Bu objeyi bir ViewModel olarak düşünebiliriz. Widget lifecycle değiştikçe bizim entry modelimiz değişir ve birazdan bahsedeceğimiz view bu modele göre kendisini düzenler.
AppWidgetEntryView
Widgetın görsel objesidir. İçerisine entry alır ve bu entrye göre içeriğini düzenler. Provider her tetiklendiğinde bir entry üretilir ve enrtyView a paslanır. Bu sayece sync olunmuş olur.
Preview
Bu kısım SwiftUI’dan itibaren hayatımıza giren, uygulamayı cihaz veya simulatörde run etmeden, tasarladığımız görsel objeleri o an görmemizi sağlayan özellik. Burada biz de widgetımızın nasıl gözüktüğünü onu geliştirirken görebilmekteyiz.
Sonuç
Widgetlar SwiftUI ile geliştirmeye başlamak için iyi bir başlangıç noktası olabilir. Basit bir yapısı ve kullanımı olduğunu düşünüyorum. Tabiki yeni bir özellik ve teknoloji olduğundan bazı kısıtlama ve eksiklikleri var. Örneğin widgetlar üzerinde herhangi bir aksiyon elementi konulamıyor şuan; scroll, picker, button gibi. Ama ileride bu özelliğin herkes tarafından birincil kullanılacağını düşünüyorum. Okuduğunuz için teşekkürler.