0Pricing
Android Academy · Leçon

DataStore de préférences

Stockez réactivement des paramètres clé-valeur.

DataStore de préférences est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 2 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 Android Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Android Academy comprend 4 leçons au total.

Preferences DataStore

Preferences DataStore stocke de simples paires clé-valeur, tout comme SharedPreferences, mais avec l’API asynchrone moderne. Il n’impose pas de schéma ni de sûreté de type à l’ensemble de l’objet.

Vous accédez aux valeurs au moyen de clés typées.

Création de DataStore

Vous créez une seule instance de DataStore par fichier au moyen du délégué de propriété preferencesDataStore, au niveau supérieur d’un fichier Kotlin. Le name devient le nom du fichier sur le disque.

import androidx.datastore.preferences.preferencesDataStore
import androidx.datastore.preferences.core.Preferences

val Context.dataStore: DataStore<Preferences> by
    preferencesDataStore(name = "settings")

Pourquoi un délégué au niveau supérieur

Le délégué garantit qu’il existe exactement une instance de DataStore pour ce nom de fichier dans votre processus. La création de deux instances pour le même fichier provoque une erreur, car elles tenteraient d’utiliser les mêmes données.

Le déclarer comme extension Context au niveau supérieur le conserve sous forme de singleton.

Clés de préférences

Chaque valeur nécessite une clé typée. La clé nomme l’entrée et fixe également son type. Des fonctions utilitaires créent des clés pour chaque type pris en charge.

import androidx.datastore.preferences.core.stringPreferencesKey
import androidx.datastore.preferences.core.booleanPreferencesKey
import androidx.datastore.preferences.core.intPreferencesKey

val USERNAME = stringPreferencesKey("username")
val DARK_MODE = booleanPreferencesKey("dark_mode")
val LAUNCH_COUNT = intPreferencesKey("launch_count")

Types de clés pris en charge

Preferences DataStore prend en charge les types de clés primitifs suivants :

  • stringPreferencesKey
  • booleanPreferencesKey
  • intPreferencesKey, longPreferencesKey, floatPreferencesKey, doublePreferencesKey
  • stringSetPreferencesKey

Définir les clés en un seul endroit

Une pratique courante consiste à regrouper toutes les clés dans un object afin de les trouver et de les réutiliser facilement, en évitant les fautes de frappe dans les noms de chaînes.

object PrefKeys {
    val USERNAME = stringPreferencesKey("username")
    val DARK_MODE = booleanPreferencesKey("dark_mode")
    val FONT_SIZE = intPreferencesKey("font_size")
}

Clés textuelles et noms de variables

N’oubliez pas que l’argument textuel (par exemple « dark_mode ») est celui qui est écrit sur le disque. Si vous le renommez plus tard, les anciennes valeurs deviennent inaccessibles. Le nom Kotlin du val sert uniquement dans votre code.

Un DataStore par domaine

Vous pouvez créer plusieurs DataStore pour différents domaines, chacun avec son propre nom de fichier, par exemple un magasin « settings » et un magasin « user_session ». Regroupez les clés associées.

val Context.settingsStore by preferencesDataStore(name = "settings")
val Context.sessionStore by preferencesDataStore(name = "session")

Accès depuis la couche d’interface

Bien que le délégué soit rattaché à Context, ne le lisez pas directement dans les Composables. Injectez DataStore dans un dépôt, puis exposez des flux à un ViewModel. L’interface reste ainsi testable.

Structure simple d’un dépôt

Envelopper DataStore dans une classe de dépôt vous fournit une API claire et un emplacement unique où définir les clés et la logique de mappage.

class SettingsRepository(private val dataStore: DataStore<Preferences>) {
    val darkMode: Flow<Boolean> = dataStore.data
        .map { it[PrefKeys.DARK_MODE] ?: false }
}

Valeurs par défaut

Une clé peut ne pas encore exister, auquel cas les lectures renvoient null. Fournissez toujours une valeur par défaut avec l’opérateur Elvis ?: lors du mappage d’une valeur de préférence.

val fontSize: Flow<Int> = dataStore.data
    .map { prefs -> prefs[PrefKeys.FONT_SIZE] ?: 14 }

Vérification rapide

Vérifiez votre compréhension des clés de préférences.

Récapitulatif

Vous avez configuré Preferences DataStore :

  • Créer une instance au moyen du délégué de niveau supérieur preferencesDataStore
  • Définir des clés typées avec stringPreferencesKey, booleanPreferencesKey, etc.
  • Regrouper les clés dans un object et envelopper l’accès dans un dépôt
  • Toujours fournir des valeurs par défaut pour les clés absentes

Ensuite : lire et écrire réellement ces paramètres.

Questions Fréquemment Posées

La leçon « DataStore de préférences » est-elle gratuite ?

Oui — le texte complet de « DataStore de préférences » 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 Android Academy, passe à CoddyKit PRO. Le cours Android Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « DataStore de préférences » ?

Stockez réactivement des paramètres clé-valeur. Tu pratiques Android Academy 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 Android Academy ?

Aucune expérience préalable n'est requise. Android Academy 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 2 sur 4.

Combien de temps prend la leçon « DataStore de préférences » ?

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 Android Academy ?

Oui. Chaque leçon Android Academy 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

  1. DataStore ou SharedPreferences
  2. DataStore de préférences
  3. Lire et écrire des paramètres
  4. Proto DataStore
← Retour à Android Academy