Flutter'da GetX ile State Management ve Dependency Injection

GetX, basit ve pratik bir şekilde yüksek performanslı durum yönetimi (state management), bağımlılık enjeksiyonu (dependency injection) ve rota yönetimi (route management) ile Flutter için ekstra kolay ve güçlü bir çözümdür.



GetX'in 3 temel prensibi vardır. Bunlar; performans, verimlilik ve organizasyon.

Performans olarak GetX, performansa ve minimum kaynak tüketimine odaklanmıştır. GetX, Stream veya ChangeNotifier'ı kullanmaz. StatelessWidget kullanıldığı, StatefulWidget kullanmayı gerektirmediği için daha performanslı çalışır.

Verimlilik olarak GetX, daha kolay ve anlaşılır bir syntax kullanır. Daha az kod kullanarak saatler sürecek işlemlerinizi daha hızlı yapmanıza olanak sağlar.

Geliştirici olarak kontrolleri bellekten kaldırma işlemleri yapılması gerekir. GetX ile buna gerek yoktur. Çünkü GetX'te varsayılan olarak kullanılmayan kontroller bellekten kaldırılır ve bu bize hem hız hem de verimlilik sağlar. Bellekte tutulması istenilen bağımlılıklar (dependency) varsa "permanent: true" olarak belirtmelidir. Bağımlılıkların belleğe yüklenmesi default olarak lazy yani kullanılıyorsa yüklenir, kullanılmıyorsa kaldırılır şeklinde gelmektedir.

Organizasyon olarak GetX, view, presentation logic (sunum mantığı), business logic (iş mantığı), dependency injection ve navigation işlemlerinin ayrılmasına izin verir. Rotalar arasında gezinmek için context'e ihtiyaç yoktur. Bunun için widget ağacına (visualization) bağımlılığı yoktur.


InheritedWidget sayesinde kontrollere erişmek için context'e ihtiyaç yoktur. Bu nedenle sunum ve iş mantığı görselleştirme katmanından tamamen ayrılır. Controllers, Models, Blocs sınıfları MultiProviders aracılığıyla widget ağacına enjekte etmeye gerek yoktur. Bunun için GetX, kendine özgü dependency injection özelliğini kullanır.

GetX genel olarak geliştiricilere yüksek hız ve kolaylıklar sağlıyor diyebiliriz. Çok fazla özelliğe sahip olduğu için sadece state yönetimi olarak bakamayız. Navigation işlemleri, Dependency Injection gibi durumlar için çok güzel imkanlar sunuyor. Yalnızca state yönetimi kullanılırsa, yalnızca state yönetimi derlenecektir. Yalnızca navigator işlemleri kullanılırsa, state yönetiminden hiçbir şey derlenmez. Bu da bize performanslı uygulamalar yapmamıza olanak sağlamaktadır.


GetX ile State Yönetimi


GetX'in iki farklı durum yöneticisi vardır: Basit durum yöneticisi (GetBuilder) ve reaktif durum yöneticisi (GetX / Obx).

Reactive State Manager