Flutter Uygulama Mimarileri (Provider,Mobx,BLOC)

Ramazan
3 min readSep 24, 2022

--

Uygulama mimarilerini anlatmadan ilk önce uygulama mimarileri ne işe yarar oradan başlayalım.

Uygulama mimarileri bir uygulama tasarımında birden çok işlevlerin olması ve bu işlevlerin çoğalması ve karmaşıklığının artması sonucunda uygulama geliştiricilerinin vakitlerinin büyük çoğunluğunu bu yönde ayrılması ayrıca yeni kişilerin uygulama geliştirmeye katılması ve entegre edilmesi uygulamanın hem zamandan hemze bütçeden zor durumlara düşmesi dolayından çeşitli uygulama mimarilerinin çıkmasına yol açmıştır.

Uygulama mimarilerinde olması gereken bazı özellikler şunlardır ;

1-) İşlevsellik Yazılımın kullanımı acısından basit ve anlaşılır olmasıdır.

2-) Performans İşlem hızı, yanıt süresi, çıktı ve üretkenlik dikkate alınmasıdır.

3-) Güvenilirlik Yazılımı verilen koşullar altında istenilen işlevselliği ortaya koymasıdır.

4-) Desteklene bilirlik Programlama geliştiricilerinin yazılımı bir platformdan diğerine herhangi bir değişiklik yapmadan veya minimum değişiklikle aktarabilme kolaylığı anlamına gelir.

5-) Kendine Güven Bağımsız servislerden birinin kesintiye uğramasına rağmen optimum performans gösterme yeteneğini ifade eder.

Yazılım mimarisinin bu yapısı SOLİD yani yazılım mimarisi ilkeleri ‘ne bağlı kalmalıdır.

PROVİDER Mimarisi

Provider, basitçe kendi state’i olan ve bu state’i BuildContext (BuildContext az ve öz bir şekilde bir widget’in Widget Tree’de nerede olduğunu anlamasını sağlayan ve parent-child arası data geçişine yarayan yapımızdır kendisi.) ile kendi çocuklarına aktarabilen bir widget. Uygulamanın çeşitli yerlerinde kullanılan ayarlar olsun, kullanıcının bilgisi olsun birden fazla widget için gereken tüm bilgiler için Provider kullanabilirsiniz. Aşağıdaki yazıda Provider mimarisinin pozitif ve negatif yanları verilmiştir.

Pozitif yanları;

Provider az kodlama ile sayfalar arası veri aktarımını sağlar.

Ortak veri oluşturarak bu veriyi her taraftan erişmeye yarar.

Veride değişim olduğu anda kullanılan sayfalarda veri değişimi algılar. Yani dinleme işlemi otomatiktir.

Negatif yanları;

Çok fazla sayfadan oluşan uygulamalarda sayfa geçişlerinde taşınan bilgi ne kadar çok artarsa karmaşıklık o derece artar.

Not; Provider mimarisi Stateless widget içinde çalışabilmektedir. Ama Stateful widget içinde çalışamazlar.

Provider Mimarisi

Mobx Mimarisi

Flutter ile uygulama geliştirirken ekranda güncelleme yapmak istediğimizde bir StatefulWidget oluşturup setState kullanarak bu işlemi yapabiliyoruz. Fakat setState kullanmak demek tüm sayfayı yeniden çizilmesi demektir. Ekranda belirli kısımları güncellemek ister isek bu yapı State Management yapısından daha iyidir. Bu sayede tüm sayfayı yeniden çizmek yerine sadece değiştirmek istediğimiz Widget’ ı yeniden çizmiş olacağız.

Pozitif yanları;

Sayfa içinde veri değişimi olduğundan anlık değişimi dinlenebilmesi.

Dinleme işlemi otomatik yapılabilmesi.

Büyük çaplı uygulamalarda veri kontrolü daha az kodlama ile sağlanabilmesi karmaşıklığı azaltması.

Negatif yanları;

Tetikleme ve dinleme işlemi sadece bulunduğu sayfada olması. Diğer sayfalarda bu tetikleme işlemlerini göremeyiz.

Not; Provider mimarisi Stateless widget içinde çalışabilmektedir. Ama Stateful widget içinde çalışamazlar.

Bloc(Business Logic Component) Mimarisi

BLOC (Business Logic Component)’ın kısaltılmışı olması. Uygulamanın mantığıyla, arayüzünü ayırmak. Her bir UI elementi uygulamanın mantığından parçalar içeriyorsa bunların bakımını sağlamak, test etmek ve değişiklikler yapmak zorlaşır. Üstelik AngularDart tarafında da bir uygulama yazıyorsanız, Flutter’a has UI kodlarının ve mantık içeren Dart kodlarının olabildiğince ayrılması, kodunuzun tekrar kullanılabilirliğini artmasına yarar.

Klasik yöntemlerdeki tasarım ve işlemsel kodlamalar ve görsel nesne kodlamaların bir arada tutulduğu yapılardan daha ayrı bir şekilde. Sayfa yapısı ,işlemsel kodlamalar ,repository olarak ayrı ayrı tutulması ve veri tabanı ekleme veya değiştirme işlemlerinde kolaylık ve uygulama içinde verilerin değişimi ve kodlanmasını daha düzenli ve işlevsel hale getirilmesini sağlıyor.

Bende bu mimari ile ToDo App uygulaması geliştirdim.

Bloc mimarisi yapısını basit şekilde bir uygulama halinde görebilirsiniz.

Uygulama linki aşağıda verilmiştir.

Github Link: https://github.com/ramazan1071/todo_app

--

--