Android Academy · Leçon

Lire et écrire des paramètres

Enregistrez et observez les préférences de l'utilisateur.

Leçon 3 sur 413 étapes

Lire et écrire des paramètres est une leçon Android Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

Lecture et écriture

Une fois les clés définies, les deux opérations essentielles sont la lecture du flux de données et l’écriture avec edit. Les lectures sont réactives et les écritures sont des fonctions suspendues.

Le flux de données

dataStore.data est un Flow<Preferences>. Chaque fois que vous écrivez, le flux émet un nouvel instantané Preferences, de sorte que les collecteurs restent automatiquement à jour.

val rawData: Flow<Preferences> = dataStore.data

Mappage d’une valeur unique

Vous souhaitez rarement l’objet Preferences entier. Utilisez map pour extraire une clé et lui appliquer une valeur par défaut.

val darkMode: Flow<Boolean> = dataStore.data
    .map { prefs -> prefs[PrefKeys.DARK_MODE] ?: false }

Gestion des erreurs de lecture

Les lectures sur le disque peuvent échouer avec IOException. Utilisez catch avant map pour émettre des préférences vides et maintenir le flux actif.

val darkMode: Flow<Boolean> = dataStore.data
    .catch { e ->
        if (e is IOException) emit(emptyPreferences())
        else throw e
    }
    .map { it[PrefKeys.DARK_MODE] ?: false }

Écriture avec edit

Pour modifier les valeurs, vous appelez la fonction suspendue edit. Dans la lambda, vous recevez un objet de préférences mutable : définissez-y les clés. L’ensemble du bloc constitue une transaction.

suspend fun setDarkMode(enabled: Boolean) {
    dataStore.edit { prefs ->
        prefs[PrefKeys.DARK_MODE] = enabled
    }
}

edit est une fonction suspendue

Comme edit est suspendue, vous devez l’appeler depuis une coroutine, généralement dans un ViewModel avec viewModelScope.launch. Cela garantit que l’écriture s’effectue en dehors du thread principal.

fun toggleDarkMode(value: Boolean) {
    viewModelScope.launch {
        repository.setDarkMode(value)
    }
}

Mise à jour de plusieurs clés

Un seul bloc edit peut définir plusieurs clés. Elles sont validées ensemble de manière atomique, si bien que les observateurs ne voient jamais une mise à jour partielle.

dataStore.edit { prefs ->
    prefs[PrefKeys.USERNAME] = "ada"
    prefs[PrefKeys.DARK_MODE] = true
    prefs[PrefKeys.FONT_SIZE] = 16
}

Incrémentation d’une valeur

Dans edit, vous pouvez lire la valeur actuelle et en calculer une nouvelle, ce qui est pratique pour les compteurs tels que le nombre de lancements.

suspend fun incrementLaunchCount() {
    dataStore.edit { prefs ->
        val current = prefs[PrefKeys.LAUNCH_COUNT] ?: 0
        prefs[PrefKeys.LAUNCH_COUNT] = current + 1
    }
}

Suppression et effacement

Supprimez une seule clé avec remove ou effacez le magasin avec clear, dans les deux cas à l’intérieur d’un bloc edit.

dataStore.edit { prefs ->
    prefs.remove(PrefKeys.USERNAME)
}

dataStore.edit { prefs ->
    prefs.clear()
}

Collecte dans Compose

Dans un Composable, transformez le flux du ViewModel en état avec collectAsStateWithLifecycle(). L’interface est recomposée chaque fois que le paramètre change.

val darkMode by viewModel.darkMode.collectAsStateWithLifecycle(initial = false)

Switch(
    checked = darkMode,
    onCheckedChange = { viewModel.toggleDarkMode(it) }
)

Cycle lecture-modification-écriture

En résumé : l’interface lit via un flux, l’utilisateur active ou désactive l’option, le ViewModel lance une coroutine qui appelle edit, DataStore écrit, le flux émet à nouveau et l’interface est recomposée. La réactivité est assurée de bout en bout.

Vérification rapide

Vérifiez votre compréhension de la lecture et de l’écriture.

Récapitulatif

Vous pouvez maintenant lire et écrire des paramètres :

  • dataStore.data est un Flow<Preferences> réactif
  • map extrait une valeur unique et catch gère les erreurs d’entrées-sorties
  • dataStore.edit { } écrit de manière atomique depuis une coroutine
  • collectAsStateWithLifecycle pilote l’interface Compose

Ensuite : les données structurées typées avec Proto DataStore.

Gratuit pour commencer

Apprends Kotlin avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
36
Leçons
152

Questions Fréquemment Posées

La leçon « Lire et écrire des paramètres » est-elle gratuite ?

Oui — le texte complet de « Lire et écrire des paramètres » 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 « Lire et écrire des paramètres » ?

Enregistrez et observez les préférences de l'utilisateur. 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 3 sur 4.

Combien de temps prend la leçon « Lire et écrire des paramètres » ?

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