Sobes.tech
Junior

Czym są SharedPreferences i jak ich używać?

sobes.tech AI

Odpowiedź od AI

SharedPreferences to prosty mechanizm do przechowywania niewielkich ilości danych w parach klucz-wartość. Idealny do przechowywania ustawień użytkownika lub małych flag.

Użycie:

  1. Dodanie zależności: W pliku pubspec.yaml dodajemy:

    dependencies:
      flutter:
        sdk: flutter
      shared_preferences: ^2.2.0 # Użyj aktualnej wersji
    

    i wykonujemy flutter pub get.

  2. Import:

    import 'package:shared_preferences/shared_preferences.dart';
    
  3. Uzyskanie instancji:

    // Operacja asynchroniczna
    SharedPreferences prefs = await SharedPreferences.getInstance();
    
  4. Zapisywanie danych:

    // Zapisanie ciągu znaków
    prefs.setString('username', 'Alice');
    // Zapisanie liczby (int)
    prefs.setInt('age', 30);
    // Zapisanie liczby (double)
    prefs.setDouble('salary', 50000.50);
    // Zapisanie wartości boolowskiej
    prefs.setBool('darkMode', true);
    // Zapisanie listy ciągów znaków
    prefs.setStringList('items', ['item1', 'item2']);
    

    Wszystkie metody zapisu zwracają Future<bool>, wskazując na powodzenie operacji.

  5. Odczyt danych:

    // Odczytanie ciągu znaków
    String? username = prefs.getString('username'); // Zwraca null, jeśli klucz nie istnieje
    // Odczytanie liczby (int)
    int? age = prefs.getInt('age');
    // Odczytanie liczby (double)
    double? salary = prefs.getDouble('salary');
    // Odczytanie wartości boolowskiej
    bool? darkMode = prefs.getBool('darkMode');
    // Odczytanie listy ciągów znaków
    List<String>? items = prefs.getStringList('items');
    
  6. Usuwanie danych:

    // Usunięcie po kluczu
    prefs.remove('username'); // Zwraca Future<bool>
    // Usunięcie wszystkich danych
    prefs.clear(); // Zwraca Future<bool>
    

Ograniczenia:

  • Nie nadaje się do przechowywania dużych ilości danych lub złożonych struktur.
  • Dane są przechowywane w formacie otwartym (nawet na poziomie aplikacji), nie nadaje się do poufnych informacji.
  • Działa z podstawowymi typami danych. Dla obiektów wymagana jest serializacja/deserializacja (np. za pomocą json).