Sobes.tech
Junior

Was ist die Besonderheit bei der Verwendung von SharedPreferences in Flutter?

sobes.tech KI

Antwort von AI

SharedPreferences bietet eine einfache API zum Speichern kleiner Datenmengen (primitive Typen: int, double, bool, String, List<String>) in Form von Schlüssel-Wert-Paaren. Die Daten werden asynchron gespeichert. Dies eignet sich für die Speicherung von Benutzereinstellungen, Statusflags und anderen nicht kritischen Informationen.

Merkmale:

  • Benutzerfreundlichkeit: Die API ist leichtgewichtig und intuitiv.
  • Asynchrone Operationen: Alle Lese- und Schreiboperationen sind asynchron, um das Blockieren des UI-Threads zu vermeiden.
  • Begrenzter Typensatz: Unterstützt nur primitive Typen und String-Listen.
  • Nicht geeignet für große Datenmengen oder komplexe Daten: Nicht effizient für große Datenstrukturen oder viele Einträge.
  • Plattformabhängigkeit: Die Implementierung basiert auf nativen Speichermethoden (z.B. NSUserDefaults auf iOS, SharedPreferences auf Android).
  • Unsichere Speicherung für vertrauliche Informationen: Daten werden im Klartext gespeichert, nicht geeignet für Passwörter oder andere sensible Daten.
  • Zugriff erfordert await: Das Abrufen der SharedPreferences-Instanz und das Ausführen von Lese-/Schreiboperationen erfordern die Verwendung von await.

Beispiel:

// Zugriff auf SharedPreferences-Instanz
final prefs = await SharedPreferences.getInstance();

// Daten speichern
await prefs.setInt('counter', 10);
await prefs.setBool('isDarkMode', true);
await prefs.setString('username', 'FlutterDev');
await prefs.setStringList('items', ['apple', 'banana']);

// Daten lesen
final counter = prefs.getInt('counter') ?? 0; // Standardwert mit ??
final isDarkMode = prefs.getBool('isDarkMode') ?? false;
final username = prefs.getString('username');
final items = prefs.getStringList('items') ?? [];

// Daten entfernen
await prefs.remove('username');
await prefs.clear(); // Alle Daten löschen