Flutter’da SharedPreferences Kullanımı: Verilerinizi Kalıcı Hale Getirin

 


Herkese merhaba.

Flutter uygulamalarında, kullanıcı ayarlarını veya uygulama verilerini cihazda kalıcı olarak saklamak önemlidir. İşte tam da bu noktada, Flutter’da SharedPreferences devreye girer. Bu yazıda, SharedPreferences paketini Flutter projenize nasıl dahil edebileceğinizi, verileri nasıl kaydedip okuyabileceğinizi ve tüm detaylarıyla nasıl kullanabileceğinizi öğreneceksiniz.

Flutter’da SharedPreferences Nedir ve Ne İşe Yarar?

SharedPreferences, Flutter’daki küçük veri parçalarını cihazda kalıcı olarak saklamak için kullanılan bir paket olup, özellikle kullanıcı ayarları ve uygulama durumu gibi bilgileri saklamak için idealdir. Bu sayede uygulamanın her açılışında veriler kaybolmaz, kullanıcı uygulamanızda oturum açtığında veya uygulamayı yeniden başlattığında önceki veriler korunur.

SharedPreferences genellikle:

  • Kullanıcı adı ve şifre gibi küçük verilerin saklanmasında,
  • Kullanıcı tercihleri (tema, dil seçimi) gibi ayarların saklanmasında,
  • Uygulama durumu bilgilerini tutmak için kullanılır.

SharedPreferences Paketini Flutter’a Nasıl Dahil Edersiniz?

Flutter projelerinde SharedPreferences’ı kullanmaya başlamak için, önce paketi projeye dahil etmemiz gerekiyor. Bunun için pubspec.yaml dosyasına şu satırı ekleyin:

dependencies:
shared_preferences: ^2.5.3

Not: Yazıyı yazdığım tarihteki en güncel versiyon numarası yukarıda yer almaktadır. Siz yükleme yaparken bu numara değişmiş olabilir. Versiyon numaralarının yükleme sırasında otomatik olarak dosyaya eklenmesini istiyorsanız, aşağıdaki komut satırı ile de yükleme yapabilirsiniz.

$ flutter pub add shared_preferences

Bu işlemden sonra, artık SharedPreferences paketini kullanmaya başlayabiliriz!

SharedPreferences ile Verileri Kaydetme, Okuma ve Silme

Veriyi Kaydetme

SharedPreferences kullanarak verileri kaydetmek oldukça basittir. Aşağıdaki örnekte, kullanıcı adını kaydedeceğiz.

import 'package:shared_preferences/shared_preferences.dart';

void saveUsername() async {
final prefs = await SharedPreferences.getInstance();

await prefs.setString('username', 'flutter_dev');
print("Kullanıcı adı kaydedildi!");
}

SharedPreferences.getInstance() ile SharedPreferences nesnesini alıyoru. Burada kaydedeceğimiz veri türü String olduğunda kullanıcı adını setStringile kaydediyoruz. Eğer başka türde veri kaydetmek isterseniz, setIntsetBool gibi metodlar da kullanılabilir.

Veriyi Okumak

Kaydettiğimiz veriyi okumak için şu kodu kullanabiliriz:

void getUsername() async {
final prefs = await SharedPreferences.getInstance();

String? username = prefs.getString('username');

if (username != null) {
print("Kullanıcı adı: $username");
} else {
print("Kullanıcı adı bulunamadı!");
}
}

Burada, getString metodu ile kaydettiğimiz kullanıcı adını okuyup ekrana yazdırıyoruz. Eğer değer bulunmazsa, null dönecektir.

Veriyi Güncellemek

Kaydedilen veriyi güncellemek de oldukça kolaydır. Örneğin, kullanıcı adını değiştirebiliriz. Bunun için yine setString metodunu kullanıyoruz ancak bu defa yeni değeri ekliyoruz.

void updateUsername() async {
final prefs = await SharedPreferences.getInstance();

await prefs.setString('username', 'new_flutter_dev');
print("Kullanıcı adı güncellendi!");
}

Not: Burada aklınıza şu gelmiş olabilir: update işlemi için de set methodunu kullanıyoruz. Bunu yaparken program var olanı güncelleyeceğini nereden biliyor? Ya ikinci bir değer kaydederse?

Bu noktada devreye SharedPreference’ın çalışma mantığı olan ‘key’ kavramı devreye giriyor.

SharedPreferences, belirli bir anahtara (key) karşılık gelen veriyi değiştirir. Eğer aynı anahtar daha önce kaydedilmişse, yeni bir değerle değiştirilir. Eğer aynı anahtar daha önce kaydedilmemişse, SharedPreferences yeni bir veri ekler. Yani, yeni bir veri kaydetme yerine, mevcut veriyi günceller.

Örneğin yukarıdaki örnekte şu şekilde çalıştı:

Yeni Veri Kaydetme: Eğer daha önce belirttiğiniz anahtar (örneğin 'username') SharedPreferences'ta yoksa, setString ile kaydedilen değer bir yeni veri olarak eklendi.

Var Olan Veriyi Güncelleme: Eğer aynı anahtar zaten SharedPreferences’ta varsa, setString mevcut değeri güncelledi. Bu, eski değerin üzerine yeni değeri yazdı.

Yani, SharedPreferences set metodları her zaman yalnızca bir anahtar altında tek bir değer saklar. Aynı anahtar için iki farklı değer kaydedilemez. Eğer bir anahtar daha önce kaydedilmişse, yeni veri eski verinin yerine geçer.

Veriyi Silmek

Bir veriyi silmek için remove metodunu kullanabiliriz. Aşağıdaki örnekte, kaydedilen kullanıcı adını siliyoruz:

void deleteUsername() async {
final prefs = await SharedPreferences.getInstance();

await prefs.remove('username');
print("Kullanıcı adı silindi!");
}

Tüm Verileri Temizlemek

Eğer tüm SharedPreferences verilerini silmek isterseniz, clear metodunu kullanabilirsiniz:

void clearAllData() async {
final prefs = await SharedPreferences.getInstance();

await prefs.clear();
print("Tüm veriler temizlendi!");
}

SharedPreferences ile Kullanıcı Ayarlarını Kaydetme

SharedPreferences, özellikle kullanıcı ayarları gibi bilgileri saklamak için çok faydalıdır. Örneğin, bir kullanıcı temayı değiştirdiğinde bu tercihi kaydedebiliriz. Burada tabiki yazacağımız method isDarkMode adında bool bir parametre istiyor.

void saveThemePreference(bool isDarkMode) async {
final prefs = await SharedPreferences.getInstance();

await prefs.setBool('isDarkMode', isDarkMode);
print("Tema tercihi kaydedildi!");
}

Bunu daha sonra şu şekilde okuyabiliriz:

void getThemePreference() async {
final prefs = await SharedPreferences.getInstance();

bool isDarkMode = prefs.getBool('isDarkMode') ?? false;
print("Dark mode: $isDarkMode");
}

Veri Türleriyle Çalışmak

SharedPreferences, yalnızca String değil, farklı veri türlerini de saklayabilir. İşte bazı örnekler:

  • setIntprefs.setInt('key', 123);
  • setBoolprefs.setBool('key', true);
  • setDoubleprefs.setDouble('key', 3.14);
  • setStringListprefs.setStringList('key', ['apple', 'banana']);

Aynı şekilde, verileri okumak için de getIntgetBoolgetDouble, ve getStringList gibi metotlar kullanabilirsiniz.

Sık Sorulan Sorular

SharedPreferences ile Veri Kaydetmek Ne Kadar Güvenlidir?SharedPreferences, küçük veri saklama işlemleri için uygundur. Ancak, büyük veya hassas veriler için daha güvenli çözümler tercih edilmelidir.

SharedPreferences, Flutter Uygulamalarında Hangi Durumlarda Kullanılır?SharedPreferences, kullanıcı ayarları, tema tercihleri, oturum bilgileri ve küçük verilerin saklanmasında kullanılır.

Verileri SharedPreferences’ta Kaç Gün Saklayabilirim? Veriler, cihazda kalıcı olarak saklanır ve sadece kullanıcı veriyi manuel olarak silene kadar saklanır.

Sonuç

Flutter’da SharedPreferences kullanarak verilerinizi cihazda kalıcı hale getirmek çok basit ve etkilidir. Kullanıcı bilgilerini, tercihleri ve uygulama durumlarını saklamak için bu yöntemi kullanabilirsiniz. Ayrıca, SharedPreferences verilerini okuyup güncellemek de oldukça kolaydır. Bu sayede, SharedPreferences kullanarak uygulamanızda kalıcı veri saklamayı öğrenmiş oldunuz!

Buraya kadar okuduğunuz için teşekkür ederim.

Yazımı beğendiyseniz clap tuşuna basmayı ve diğer içeriklerimden haberdar olabilmek için abone olmayı unutmayın.

Teşekkürler.

Selin.

Hiç yorum yok: