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,
NSUserDefaultssu iOS,SharedPreferencessu Android). - Memorizzazione insicura per informazioni sensibili: I dati sono memorizzati in chiaro, non adatti per password o altre informazioni sensibili.
- Richiede
awaitper l'accesso: L'ottenimento dell'istanza diSharedPreferencese l'esecuzione di operazioni di lettura/scrittura richiedono l'uso diawait.
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