Flutter-Lifecycle

Mustafa ⚡
GdgTekirdag
Published in
2 min readMay 5, 2018

Merhaba…

Serinin ilk yazısında Scaffold sınıfından bahsetmiştim. Bu yazımda ise Lifecycle’ı detaylı bir şekilde inceleyeceğiz.

Bir önceki blogpost’a buradan ulaşabilirsiniz;

Lifecycle’dan önce Widget yapısı hakkında bilgi sahibi değilseniz bu yazıya göz atın derim;

Lifecycle (Yaşam Döngüsü)

  • Bir Widget çalışmaya başladığı zaman sırasıyla initState() ve build() metotlarını çalıştırır. Daha sonra kullanıcının bulunduğu etkileşime göre didUpdateConfig() ve setState() metotları çalışır. En son uygulama kapatıldığında ise dispose() metodu çalışır.

Daha iyi açıklamak gerekirse Lifecycle aslında şunların takibini yapar ;

  • Uygulama oluşturulduğunda, kullanıcı arayüzle karşılaşmadan önce yapılacaklar.
  • Kullanıcı arayüzle karşılaştı, daha sonra uygulamayı arka plana aldığında yapılacaklar,
  • Kullanıcı uygulama arka plandayken, tekrar uygulamaya döndüğünde yapılacaklar
  • Kullanıcı arayüzle etkileşim kurduğunda (örneğin bir butona tıklandığında) yapılacaklar vb…

Yukardaki resim StatefulWidget için geçerli bir diyagramdır.

initState()

  • Uygulamanın ayağa kalktığı ve kullanıcının arayüzle buluşmadan önceki geçen zaman dilimini temsil ediyor.

setState()

  • setState() metodu aslında render motorunun yeniden çalışmasını sağlıyor.Örnekle açıklamak gerekirse;

Bir Button ve Text tanımladık. Ve butona her basıldığında Text içindeki rakamın artmasını istiyoruz. Bu durumu 2'ye bölerek açıklayalım

setState kullanmadan rakamı arttırabiliriz fakat bunu ekranda göremeyiz. Çünkü ekran güncellenmez.

setState kullanarak rakamı artırabildiğimiz gibi ekranda da görebiliriz. Çünkü burada render motoru yeniden çalışır ve ekran güncellenir.

Kullanım şekli;

didUpdateConfig

  • Bu bölüm lokasyon değiştiğinde, uygulama alta alındığında, bir sonraki sayfaya geçildiğinde vb. durumlarda yapılacakları belirttiğimiz kısımdır.
  • Aşağıdaki örnek uygulama alta alındığında izlenilen durumları kapsamaktadır. Bunun için didChangeAppLifecycleState() metodu kullanılmıştır.
  • Bu metodu kullanabilmemiz için önce bir gözlemci diyebileceğimiz WidgetsBindingObserver’a aşağıdaki gibi sınıfımıza ekleyip, initState metodu içinde dinlemeye başlıyoruz.
  • Daha sonra didChangeAppLifecycleState() metodunun içinde if kontrolüyle, durumlar için yapılacakları belirtiyoruz.
  • Kullanıcı uygulamayı arka plana aldığında “paused” çalışacak, tekrar uygulamaya döndüğünde ise “resumed” çalışacak.

dispose()

  • Bu metodun çalışması ile uygulama tamamen ölür. Tekrar çağrılmak istenirse en baştan initState() metodundan başlar.

Serinin bu bölümünde anlatacaklarım bu kadardı. Bir sonraki yazımda “Google Maps Api” kullanarak yakındaki restoranları bulan, menü ve fiyatlarını listeleyen uygulama örneği yapmayı planlıyorum. Umarım faydalı bir yazı olmuştur 😲

--

--