Préférences partagées pour les données
Utilisez `shared_preferences` pour stocker localement de petites quantités de données, comme les réglages et préférences des utilisateurs, sous forme de paires clé-valeur.
Préférences partagées pour les données est une leçon Flutter Mobile Development gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Flutter Mobile Development, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Flutter Mobile Development comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
What are Shared Preferences?
When building mobile apps, you often need to store small bits of data locally on the device. This could be anything from a user's dark mode preference to their last logged-in status.
shared_preferences is a Flutter package that helps you do just that! It provides a simple way to store key-value pairs of primitive data types.
Why Use Shared Preferences?
- Simple Data: Ideal for storing simple data types like booleans, integers, doubles, strings, and lists of strings.
- User Settings: Perfect for saving user preferences, app settings, or theme choices.
- Lightweight: It's a quick and easy way to persist small amounts of data without needing a full database.
Think of it like a small digital notepad for your app's temporary memory!
Installing the Package
To use shared_preferences, you first need to add it to your project's dependencies.
Open your pubspec.yaml file and add the following line under dependencies:
dependencies:
flutter:
sdk: flutter
shared_preferences: ^2.2.2 # Add this lineSaving Your First Preference
Once the package is added, you can start saving data. You'll need to get an instance of SharedPreferences and then use methods like setBool(), setString(), etc.
Remember to use await because these operations are asynchronous!
import 'package:shared_preferences/shared_preferences.dart';
Future<void> saveSetting() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
await prefs.setBool('isDarkMode', true);
print('Dark mode setting saved!');
}Run It: Saving a Boolean
Try running this example to see how a boolean value is saved. We'll set a 'welcomeShown' flag to true.
import 'package:flutter/widgets.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences prefs = await SharedPreferences.getInstance();
// Save a boolean value
await prefs.setBool('welcomeShown', true);
print('welcomeShown saved: ${prefs.getBool('welcomeShown')}');
}Retrieving Saved Data
To get data back, you use corresponding get methods like getBool(), getString(), etc. These methods return a nullable type (e.g., bool?) because the key might not exist.
It's good practice to provide a default value using the ?? operator if the key is not found.
import 'package:shared_preferences/shared_preferences.dart';
Future<bool> getSetting() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
// Get 'isDarkMode', default to false if not found
bool isDark = prefs.getBool('isDarkMode') ?? false;
return isDark;
}Run It: Loading a Boolean
Let's load the welcomeShown preference we saved earlier. Notice how we handle the case where it might not exist by providing a default of false.
import 'package:flutter/widgets.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences prefs = await SharedPreferences.getInstance();
// Load 'welcomeShown', default to false if not present
bool welcomeShown = prefs.getBool('welcomeShown') ?? false;
print('Is welcome screen already shown? $welcomeShown');
// Let's try to load a key that doesn't exist
String? userName = prefs.getString('userName');
print('User Name: ${userName ?? 'Guest'}');
}Saving Other Data Types
shared_preferences supports several basic data types:
setString(key, value)for textsetInt(key, value)for whole numberssetDouble(key, value)for decimal numberssetStringList(key, value)for lists of strings
There are corresponding get methods for each type.
Run It: Saving Mixed Data
This example demonstrates saving and loading a string, an integer, and a list of strings. See how different types are handled.
import 'package:flutter/widgets.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences prefs = await SharedPreferences.getInstance();
// Save different data types
await prefs.setString('userName', 'Coddy');
await prefs.setInt('score', 12345);
await prefs.setStringList('favoriteFoods', ['Pizza', 'Sushi', 'Tacos']);
print('All data saved!');
// Load and print them
String? name = prefs.getString('userName');
int? score = prefs.getInt('score');
List<String>? foods = prefs.getStringList('favoriteFoods');
print('User Name: ${name ?? 'N/A'}');
print('Score: ${score ?? 0}');
print('Favorite Foods: ${foods ?? []}');
}Deleting Preferences
You can also remove stored preferences:
remove(key): Deletes a specific key-value pair.clear(): Deletes ALL data stored by your app usingshared_preferences. Use with caution!
Both methods are asynchronous and return a Future<bool> indicating success.
Quick Check
You want to store a user's preferred language, which is a single string like 'en_US' or 'es_ES'. Which shared_preferences method is the most appropriate for saving this data?
Recap & Next Steps
Great job! You've learned how to use shared_preferences to store and retrieve small, simple data locally in your Flutter applications.
- It's ideal for user settings and preferences.
- Supports basic types: bool, int, double, string, and List<String>.
- Operations are asynchronous (use
await). - Remember to handle null values when retrieving data.
Next, you'll explore more structured data storage with SQLite databases!
Questions Fréquemment Posées
La leçon « Préférences partagées pour les données » est-elle gratuite ?
Oui — le texte complet de « Préférences partagées pour les données » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Flutter Mobile Development, passe à CoddyKit PRO. Le cours Flutter Mobile Development comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Préférences partagées pour les données » ?
Utilisez `shared_preferences` pour stocker localement de petites quantités de données, comme les réglages et préférences des utilisateurs, sous forme de paires clé-valeur. Tu pratiques Flutter Mobile Development avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Flutter Mobile Development ?
Aucune expérience préalable n'est requise. Flutter Mobile Development sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Préférences partagées pour les données » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Flutter Mobile Development ?
Oui. Chaque leçon Flutter Mobile Development inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Préférences partagées pour les données
- Intégration d’une base de données SQLite
- Opérations sur le système de fichiers
- Stockage local Hive et NoSQL