Sobes.tech
Junior

SharedPreferences nedir ve nasıl kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

SharedPreferences, küçük veri hacimlerini anahtar-değer çiftleri olarak saklamak için basit bir mekanizmadır. Kullanıcı ayarlarını veya küçük bayrakları saklamak için idealdir.

Kullanım:

  1. Bağımlılığı ekle: pubspec.yaml dosyasına şunu ekliyoruz:

    dependencies:
      flutter:
        sdk: flutter
      shared_preferences: ^2.2.0 # Güncel sürümü kullanın
    

    ve flutter pub get komutunu çalıştırıyoruz.

  2. İçe aktar:

    import 'package:shared_preferences/shared_preferences.dart';
    
  3. Örnek alın:

    // Asenkron işlem
    SharedPreferences prefs = await SharedPreferences.getInstance();
    
  4. Veri kaydet:

    // Dize kaydet
    prefs.setString('username', 'Alice');
    // Sayı (int) kaydet
    prefs.setInt('age', 30);
    // Sayı (double) kaydet
    prefs.setDouble('salary', 50000.50);
    // Boolean değer kaydet
    prefs.setBool('darkMode', true);
    // Dize listesi kaydet
    prefs.setStringList('items', ['item1', 'item2']);
    

    Tüm kaydetme metodları Future<bool> döner ve işlemin başarılı olup olmadığını gösterir.

  5. Veri oku:

    // Dize oku
    String? username = prefs.getString('username'); // Anahtar bulunamazsa null döner
    // Sayı (int) oku
    int? age = prefs.getInt('age');
    // Sayı (double) oku
    double? salary = prefs.getDouble('salary');
    // Boolean değeri oku
    bool? darkMode = prefs.getBool('darkMode');
    // Dize listesi oku
    List<String>? items = prefs.getStringList('items');
    
  6. Veri sil:

    // Anahtarla sil
    prefs.remove('username'); // `Future<bool>` döner
    // Tüm verileri sil
    prefs.clear(); // `Future<bool>` döner
    

Kısıtlamalar:

  • Büyük veri hacimleri veya karmaşık yapılar için uygun değildir.
  • Veriler açık biçimde saklanır (uygulama seviyesinde bile), hassas bilgiler için uygun değildir.
  • Temel veri tipleriyle çalışır. Nesneler için serileştirme/serileştirmeden geçmek gerekir (örneğin json kullanarak).