Sobes.tech
Junior

Quelle est la particularité de l'utilisation de SharedPreferences dans Flutter?

sobes.tech IA

Réponse de l'IA

SharedPreferences fournit une API simple pour stocker de petites quantités de données (types primitifs : int, double, bool, String, List<String>) sous forme de paires clé-valeur. Les données sont stockées de manière asynchrone. Cela convient pour stocker les paramètres utilisateur, les drapeaux d'état et d'autres informations non critiques.

Caractéristiques :

  • Facilité d'utilisation : L'API est légère et intuitive.
  • Opérations asynchrones : Toutes les opérations de lecture et d'écriture sont asynchrones, évitant de bloquer le fil d'interface utilisateur.
  • Jeu limité de types : Ne supporte que les types primitifs et les listes de chaînes.
  • Non adapté pour de grands volumes ou données complexes : Peu efficace pour stocker de grandes structures de données ou un grand nombre d'entrées.
  • Dépendance à la plateforme : La mise en œuvre repose sur des mécanismes natifs de stockage (par exemple, NSUserDefaults sur iOS, SharedPreferences sur Android).
  • Stockage non sécurisé pour les informations sensibles : Les données sont stockées en clair, non adaptées pour les mots de passe ou autres informations sensibles.
  • Nécessite await pour accéder : L'obtention de l'instance de SharedPreferences et l'exécution des opérations de lecture/écriture nécessitent l'utilisation de await.

Exemple d'utilisation :

// Obtenir l'instance de SharedPreferences
final prefs = await SharedPreferences.getInstance();

// Enregistrer des données
await prefs.setInt('counter', 10);
await prefs.setBool('isDarkMode', true);
await prefs.setString('username', 'FlutterDev');
await prefs.setStringList('items', ['apple', 'banana']);

// Lire des données
final counter = prefs.getInt('counter') ?? 0; // Utilisation de ?? pour une valeur par défaut
final isDarkMode = prefs.getBool('isDarkMode') ?? false;
final username = prefs.getString('username');
final items = prefs.getStringList('items') ?? [];

// Supprimer des données
await prefs.remove('username');
await prefs.clear(); // Supprime toutes les données