
Flutter’da Cubit ve Bloc Yapıları: Temel Farklar ve Bir Sayaç Uygulaması
Learn when to automate, when to delegate, and how to get the best of both worlds.

Emirhan Soylu
22 Nis 2025
Flutter’da uygulama yazarken uygulamamız karmaşık hale gelebilir. Bu durumda, büyük ve karmaşık uygulamaları yönetmek için bazı durum yönetimlerine (State Management) ihtiyaç duyarız. Bu makalede, Flutter’da Cubit ve Bloc yapılarını inceleyeceğiz ve her birinin ne olduğunu, nasıl çalıştığını ve bir sayaç uygulaması oluşturmak için nasıl kullanılabileceğini göstereceğiz.
Flutter BLoC kütüphanesi Google tarafından onaylanmış bir kütüphanedir ve uygulamalar içinde kullanılan en popüler durum yönetimleridir.
Bu iki yapıyı da kullanmak için ilk önce kütüphanemizi projemize eklememiz gerekiyor. IDE’mizin terminalini açıyoruz ve aşağıdaki kodu yazıyoruz.
Kütüphanenin yüklenip yüklenmediğini pubspec.yaml dosyasından kontrol edebilirsiniz.
Flutter’da Cubit ve Bloc Yapıları
Flutter’da Cubit ve Bloc, uygulamanızın durumunu yönetmek için kullanılan iki popüler durum yönetimidir. Her ikisi de iş mantığını (business logic) ve kullanıcı arayüzünü (UI) birbirinden ayırır, böylece kodunuzu daha modüler ve test edilebilir hale getirir. Ancak, her ikisinin de bazı farklılıkları vardır.
Cubit
Cubit, “CUBe IT” (Cube it — Onu küplerle inşa et) kavramının kısaltmasıdır. Cubit, basit ve doğrusal durum yönetimi için kullanılır. Genellikle küçük ve orta ölçekli uygulamalarda tercih edilir. Cubit, Cubit sınıfından türetilir ve genellikle sadece bir tip durumu yönetir. Yalnızca durumun değiştiğinde yeniden yapılanmayı tetikler.
Bloc (Business Logic Component)
Bloc, “Business Logic Component” (İş Mantığı Bileşeni) kavramının kısaltmasıdır. Bloc, daha karmaşık durum yönetimi ve olay akışı gerektiren uygulamalar için daha uygundur. Genellikle büyük ve karmaşık uygulamalarda tercih edilir. Bloc, Bloc sınıfından türetilir ve olaylar (events) üzerinden durumları değiştirir.
Cubit ve Bloc Arasındaki Farklar
Cubit ve Bloc arasındaki ana farklar şunlardır:
Karmaşıklık: Cubit, basit ve doğrusal durum yönetimi için kullanılırken, Bloc daha karmaşık durum yönetimi ve olay akışı gerektiren uygulamalar için daha uygundur.
Olay Yönetimi: Cubit, genellikle tek bir olaya (event) yanıt olarak durumu güncellerken, Bloc, birden çok olayı (event) yönetir ve durumu günceller.
Kullanım Alanı: Cubit, küçük ve orta ölçekli uygulamalarda kullanılmak üzere tasarlanmıştır. Bloc ise, büyük ve karmaşık uygulamalarda tercih edilir.
Bir Sayaç Uygulaması Oluşturma
Şimdi, Cubit ve Bloc yapılarını kullanarak basit bir sayaç uygulaması oluşturalım. Bu uygulama, kullanıcının artırma ve azaltma düğmelerine basarak sayacı değiştirmesine izin verecek.
Cubit ile Sayaç Uygulaması
Öncelikle, Cubit yapısını kullanarak sayaç uygulamasını oluşturalım.
Bu kod, Cubit yapısını kullanarak basit bir sayaç uygulaması oluşturur. Cubit sınıfını tanımlar ve artırma ve azaltma yöntemlerini içerir. BlocProvider widget'ını kullanarak Cubit'i sayfa içine entegre eder ve BlocBuilder widget'ını kullanarak Cubit'in durumunu dinler ve sayfa içeriğini günceller.
Bloc ile Sayaç Uygulaması
Şimdi, Bloc yapısını kullanarak sayaç uygulamasını oluşturalım.
Bu kod, Bloc yapısını kullanarak basit bir sayaç uygulaması oluşturur. Bloc sınıfını tanımlar ve olayları dinler. BlocProvider widget'ını kullanarak Bloc'u sayfa içine entegre eder ve BlocBuilder widget'ını kullanarak Bloc'un durumunu dinler ve sayfa içeriğini günceller.
Bu makalede, Flutter’da Cubit ve Bloc yapılarını inceledik. Cubit, basit ve doğrusal durum yönetimi için kullanılırken, Bloc daha karmaşık durum yönetimi ve olay akışı gerektiren uygulamalar için daha uygundur. Her iki yapı da kodunuzu daha modüler, test edilebilir ve ölçeklenebilir hale getirir. Ayrıca, her iki yapıyı kullanarak basit bir sayaç uygulaması oluşturmayı da gördük. Umarım bu makale, Flutter geliştirme sürecinizde size yardımcı olur.



