Sobes.tech
Junior

Ce sunt SharedPreferences și cum le folosești?

sobes.tech AI

Răspuns de la AI

SharedPreferences este un mecanism simplu pentru salvarea unor volume mici de date în perechi cheie-valoare. Ideal pentru salvarea setărilor utilizatorului sau a unor mici steaguri.

Utilizare:

  1. Adăugarea dependenței: În fișierul pubspec.yaml, adăugăm:

    dependencies:
      flutter:
        sdk: flutter
      shared_preferences: ^2.2.0 # Folosiți versiunea actuală
    

    și executăm flutter pub get.

  2. Import:

    import 'package:shared_preferences/shared_preferences.dart';
    
  3. Obținerea instanței:

    // Operație asincronă
    SharedPreferences prefs = await SharedPreferences.getInstance();
    
  4. Salvarea datelor:

    // Salvare string
    prefs.setString('username', 'Alice');
    // Salvare număr (int)
    prefs.setInt('age', 30);
    // Salvare număr (double)
    prefs.setDouble('salary', 50000.50);
    // Salvare valoare boolean
    prefs.setBool('darkMode', true);
    // Salvare listă de stringuri
    prefs.setStringList('items', ['item1', 'item2']);
    

    Toate metodele de salvare returnează Future<bool>, indicând succesul operației.

  5. Citirea datelor:

    // Citire string
    String? username = prefs.getString('username'); // Returnează null dacă cheia nu există
    // Citire număr (int)
    int? age = prefs.getInt('age');
    // Citire număr (double)
    double? salary = prefs.getDouble('salary');
    // Citire valoare boolean
    bool? darkMode = prefs.getBool('darkMode');
    // Citire listă de stringuri
    List<String>? items = prefs.getStringList('items');
    
  6. Ștergerea datelor:

    // Ștergere după cheie
    prefs.remove('username'); // Returnează `Future<bool>`
    // Ștergerea tuturor datelor
    prefs.clear(); // Returnează `Future<bool>`
    

Limitări:

  • Nu este potrivit pentru stocarea unor volume mari de date sau structuri complexe.
  • Datele sunt stocate în formă deschisă (chiar și la nivel de aplicație), nu este potrivit pentru informații sensibile.
  • Funcționează cu tipuri de date de bază. Pentru obiecte, este necesară serializarea/deserializarea (de exemplu, cu json).