Sobes.tech
Junior

Qual è la caratteristica dell'uso di SharedPreferences in Flutter?

sobes.tech AI

Risposta dell'AI

SharedPreferences fornisce un'API semplice per memorizzare piccoli volumi di dati (tipi primitivi: int, double, bool, String, List<String>) sotto forma di coppie chiave-valore. I dati vengono salvati in modo asincrono. È adatto per memorizzare impostazioni utente, flag di stato e altre informazioni non critiche.

Caratteristiche:

  • Facilità d'uso: L'API è leggera e intuitiva.
  • Operazioni asincrone: Tutte le operazioni di lettura e scrittura sono asincrone, evitando di bloccare il thread dell'interfaccia utente.
  • Set limitato di tipi: Supporta solo tipi primitivi e liste di stringhe.
  • Non adatto per grandi volumi o dati complessi: Non è efficiente per strutture di dati grandi o molte registrazioni.
  • Dipendenza dalla piattaforma: L'implementazione si basa su meccanismi di memorizzazione nativi (ad esempio, NSUserDefaults su iOS, SharedPreferences su Android).
  • Memorizzazione insicura per informazioni sensibili: I dati sono memorizzati in chiaro, non adatti per password o altre informazioni sensibili.
  • Richiede await per l'accesso: L'ottenimento dell'istanza di SharedPreferences e l'esecuzione di operazioni di lettura/scrittura richiedono l'uso di await.

Esempio di utilizzo:

// Ottenere l'istanza di SharedPreferences
final prefs = await SharedPreferences.getInstance();

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

// Leggere dati
final counter = prefs.getInt('counter') ?? 0; // Uso di ?? per valore di default
final isDarkMode = prefs.getBool('isDarkMode') ?? false;
final username = prefs.getString('username');
final items = prefs.getStringList('items') ?? [];

// Rimuovere dati
await prefs.remove('username');
await prefs.clear(); // Rimuove tutti i dati