Flutter'da MVVM Kullanımı

Merhabalar. Bu yazıda, uygulama geliştirme dünyasında köklü ve popüler bir mimari olan MVVM'den (Model-View-ViewModel) ve Flutter projelerimizde MVVM'i nasıl kullanabileceğimizden bahsedeceğim.


Görsel Referansı


Kod kalitenizi artıracak ve geliştirme sürecinizi daha iyi yönetmenizi sağlayacak bu mimariyi neredeyse çoğu şirket tercih ediyor. O yüzden bu konuyu iyi anlamak sektör için de oldukça önemli. Daha fazla uzatmadan konuya giriş yapalım.


Yazılım geliştirme sürecinde belirli kurallara ve mimariye oturtulmamış projelerin büyüdükçe karmaşıklaştığını hepimiz görmüşüzdür. Spagetti kodların oluşmasını engellemek, temiz, okunabilir ve test edilebilir kodlar yazmak için MVVM gibi mimarileri kullanmak son derece önemli.


Temel olarak görünüm ile iş katmanının birbirine karışması işleri git gide zorlaştırıyor. Bu nedenle bu iki katmanın birbirinden ayrılması gerekir. Yani siz görünüme ihtiyaç duymadan modelinizi kolayca değiştirebilmeli ya da tam tersi, modele ihtiyaç duymadan görünümünüzü güncelleyebilmelisiniz. Bu noktada MVVM bu ayrımı kolay bir şekilde yapıyor ve bu süreci yönetmemizi kolaylaştırıyor.


MVVM'in önemini artık anladığımızı düşünüyorum. Yine de 3 maddede özetlemek gerekirse MVVM'in sağladığı faydalar;

  • Sürdürülebilirlik: Görünüm ve iş katmanınızın ayrılmasıyla birlikte kodunuzun bakımı ve yeniden kullanılabilirliği daha kolay hale geliyor. Zamanla projeniz büyüyeceğinden bunlar arasında ayrım yapmanız da kolaylaşıyor.

  • Test Edilebilirlik: ViewModel'leriniz görünümden bağımsız olarak, durumu ve veriyi rahat bir şekilde temsil edebilir. Bu sayede verinin nasıl işlendiğini bilmeye gerek kalmadan bağımsız olarak test edebilirsiniz.

  • Genişletilebilirlik: MVVM mimarisi, kodunuzunun zaman içinde kolay bir şekilde genişletilebilir olmasını sağlar.


Gelin şimdi de tanımları daha yakından inceleyelim.


Model


MVVM mimarisinde Model kavramı, uygulamanızın veri katmanını temsil ediyor. Verilerinizi lokalden veya gerçek zamanlı olarak çekeceğiniz sorguları barındırıyor. Bu katman, verilerinizi uygulamanıza sunmak için ViewModel katmanınız ile iletişim kuruyor. Verileriniz ViewModel katmanınızdan gönderilen bir isteğe cevap olarak geliyor.


View


View, adı ü