Sobes.tech
Junior

Was sind SharedPreferences und wie verwendet man sie?

sobes.tech KI

Antwort von AI

SharedPreferences ist ein einfacher Mechanismus zum Speichern kleiner Datenmengen in Schlüssel-Wert-Paaren. Ideal zum Speichern von Benutzereinstellungen oder kleinen Flags.

Verwendung:

  1. Abhängigkeit hinzufügen: In der Datei pubspec.yaml fügen wir hinzu:

    dependencies:
      flutter:
        sdk: flutter
      shared_preferences: ^2.2.0 # Verwenden Sie die aktuelle Version
    

    und führen flutter pub get aus.

  2. Importieren:

    import 'package:shared_preferences/shared_preferences.dart';
    
  3. Instanz erhalten:

    // Asynchrone Operation
    SharedPreferences prefs = await SharedPreferences.getInstance();
    
  4. Daten speichern:

    // String speichern
    prefs.setString('username', 'Alice');
    // Zahl (int) speichern
    prefs.setInt('age', 30);
    // Zahl (double) speichern
    prefs.setDouble('salary', 50000.50);
    // Booleschen Wert speichern
    prefs.setBool('darkMode', true);
    // Liste von Strings speichern
    prefs.setStringList('items', ['item1', 'item2']);
    

    Alle Speichermethoden geben Future<bool> zurück, was den Erfolg angibt.

  5. Daten lesen:

    // String lesen
    String? username = prefs.getString('username'); // Gibt null zurück, wenn Schlüssel nicht vorhanden
    // Zahl (int) lesen
    int? age = prefs.getInt('age');
    // Zahl (double) lesen
    double? salary = prefs.getDouble('salary');
    // Booleschen Wert lesen
    bool? darkMode = prefs.getBool('darkMode');
    // Liste von Strings lesen
    List<String>? items = prefs.getStringList('items');
    
  6. Daten entfernen:

    // Entfernen nach Schlüssel
    prefs.remove('username'); // Gibt Future<bool> zurück
    // Alle Daten löschen
    prefs.clear(); // Gibt Future<bool> zurück
    

Einschränkungen:

  • Nicht geeignet für die Speicherung großer Datenmengen oder komplexer Strukturen.
  • Daten werden in unverschlüsselter Form gespeichert (auch auf Anwendungsebene), nicht geeignet für sensible Informationen.
  • Funktioniert mit Basistypen. Für Objekte ist Serialisierung/Deserialisierung erforderlich (z.B. mit json).