Flutter ile Singleton Deseni: Küresel Durum Yönetiminin Temeli

Singleton Deseni, yazılım geliştirmede belirli bir sınıfın yalnızca bir örneğinin olmasını ve bu örneğin küresel olarak erişilebilir olmasını sağlayan bir tasarım desenidir. Bu tasarım deseni genellikle aynı veri veya durumun uygulamanın farklı bölümleri arasında paylaşılması gerektiğinde kullanılır. Peki, Singleton Deseni Flutter projelerinde nasıl kullanılır ve hangi durumlarda tercih edilmelidir?


Singleton Deseni Neden Kullanılmalıdır?

  • Global Durum Yönetimi: Kullanıcı oturum bilgileri, uygulama ayarları veya önbellek gibi verileri global bir konumda depolayarak farklı bileşenlerde kullanabilirsiniz.
  • Bellek Yönetimi: Aynı sınıfın birden fazla örneğinin oluşturulmasını önleyerek bellek kullanımını optimize eder.
  • Karmaşıklığı Azaltır: eIt, merkezi veri yönetimi sağlayarak kodun daha düzenli ve okunabilir olmasını sağlar.

Flutter’da Singleton Desenini Kullanma

Dart’ın sunduğu özellikleri kullanarak Singleton Desenini Flutter’da kolayca uygulayabilirsiniz. İşte adım adım bir örnek:

Örnek Senaryo: Kullanıcı Oturum Bilgilerini Yönetme

Kullanıcının oturum bilgilerini bir sınıfta saklayalım ve bu bilgilere uygulamanın farklı ekranlarından erişelim.

class UserSession {
// Sınıfın tek bir örneğini saklamak için statik değişken
static final UserSession _instance = UserSession._internal();
// Özel oluşturucu, harici örneklemeyi engeller
UserSession._internal();
// Tek bir örneğe erişen alıcı
static UserSession get instance => _instance;
// Kullanıcı oturum bilgilerini tutmak için değişkenler
String? username;
String? email;
// Kullanıcı oturum bilgilerini ayarlayan yöntem
void setUser(String username, String email) {
this.username = username;
this.email = email;
}
// Oturum bilgilerini döndüren yöntem
String getUserInfo() {
return “Kullanıcı: $username, E-posta: $email”;
}
}

Tekil Kullanım

Artık UserSession sınıfının tek bir örneğine sahip olacağız ve buna uygulamanın herhangi bir yerinden erişebileceğiz:

void main() {
// Kullanıcı oturum bilgilerini ayarla
UserSession.instance.setUser(“Burak”, “burak@example.com”);
// Oturum bilgilerini farklı bir ekranda görüntüle
print(UserSession.instance.getUserInfo()); // Çıktı: Kullanıcı: Burak, E-posta: burak@example.com
}

Flutter Projelerinde Tekil Kullanım Alanları

  • Kullanıcı Oturum Yönetimi: Kullanıcının oturum açma durumunu ve bilgilerini genel olarak yönetebilirsiniz.
  • Uygulama Ayarları: Tema, dil veya diğer yapılandırma ayarlarını tek bir yerde saklayabilirsiniz.
  • API ve Servis Çağrıları: Uygulama genelinde tek bir HTTP istemcisi (örneğin Dio veya Http) kullanabilirsiniz.
  • Önbellek Yönetimi: Yerel veritabanı veya bellek tabanlı verileri yönetmek için kullanılabilir.

Alternatifler: Singleton Yerine Ne Kullanılabilir?

  • Sağlayıcı: Flutter projelerinde küresel durum yönetimi için sıklıkla kullanılan bir durum yönetimi çözümüdür. Singleton’lara göre daha esnek ve test edilebilir yapılar sunar.
  • GetIt: Bağımlılık enjeksiyon yapısıyla hizmetlere küresel erişim sağlar ve daha modüler bir yapı sunar.

Sonuç

Singleton Deseni, özellikle küçük ve orta ölçekli projelerde Flutter projelerinde küresel veri yönetimi için etkili bir çözüm sunar. Ancak, daha büyük projeler için durum yönetimi çözümlerini (Sağlayıcı, Blok, Riverpod) kullanmak daha iyi bir seçenek olabilir. Singleton kullanırken veri tutarlılığını ve test edilebilirliğini göz önünde bulundurmak önemlidir.

Facebook
Twitter
Email
Print