Skip to content

SharedPreferences Flutter

SharedPreferences est idéal pour stocker de petites quantités de données simples comme les préférences utilisateur, les tokens d’authentification, ou les configurations d’application.

dependencies:
shared_preferences: ^2.2.2
import 'package:shared_preferences/shared_preferences.dart';
// Obtenir une instance de SharedPreferences
final prefs = await SharedPreferences.getInstance();
// Sauvegarder différents types de données
await prefs.setInt('counter', 10);
await prefs.setString('action', 'Start');
await prefs.setStringList('items', <String>['Earth', 'Moon', 'Sun']);
await prefs.setBool('isDarkMode', true);
await prefs.setDouble('rating', 4.5);
// Lire les données
final int? counter = prefs.getInt('counter');
final bool? repeat = prefs.getBool('repeat');
final double? decimal = prefs.getDouble('decimal');
final String? action = prefs.getString('action');
final List<String>? items = prefs.getStringList('items');
// Supprimer des données
final success = await prefs.remove('counter');
// Nettoyer toutes les données
await prefs.clear();
class PreferencesService {
static const String _keyCounter = 'counter';
static const String _keyUsername = 'username';
static Future<SharedPreferences> get _prefs async =>
await SharedPreferences.getInstance();
static Future<int> getCounter() async {
final prefs = await _prefs;
return prefs.getInt(_keyCounter) ?? 0;
}
static Future<void> setCounter(int value) async {
final prefs = await _prefs;
await prefs.setInt(_keyCounter, value);
}
static Future<String?> getUsername() async {
final prefs = await _prefs;
return prefs.getString(_keyUsername);
}
static Future<void> setUsername(String username) async {
final prefs = await _prefs;
await prefs.setString(_keyUsername, username);
}
}
  1. Centralisation des clés : Définir toutes les clés comme constantes
  2. Service abstrait : Créer une couche d’abstraction pour l’accès aux données
  3. Valeurs par défaut : Toujours fournir des valeurs par défaut
  4. Gestion d’erreurs : Gérer les cas où les données peuvent être corrompues
  5. Limitation : Ne pas stocker de gros volumes de données (< 1MB recommandé)
  • Préférences utilisateur : thème, langue, notifications
  • Paramètres d’application : première ouverture, tutoriel terminé
  • Tokens non-sensibles : identifiants de session temporaires
  • Configuration : URL d’API, environnement de développement
  • État de l’interface : dernière page visitée, préférences d’affichage