Leer y escribir configuraciones
Guarde y observe las preferencias del usuario
Leer y escribir configuraciones es una lección gratuita de Android Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Android Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Android Academy incluye 4 lecciones en total.
Leer y escribir
Una vez definidas las claves, las dos operaciones principales son la lectura del flujo de datos y la escritura con edit. Las lecturas son reactivas y las escrituras son funciones suspend.
El Flow de datos
dataStore.data es un Flow<Preferences>. Cada vez que escribe, el flujo emite una nueva instantánea de Preferences, por lo que los recolectores se mantienen actualizados automáticamente.
val rawData: Flow<Preferences> = dataStore.dataMapear un solo valor
Rara vez necesitará el objeto Preferences completo. Use map para extraer una clave y aplicar un valor predeterminado.
val darkMode: Flow<Boolean> = dataStore.data
.map { prefs -> prefs[PrefKeys.DARK_MODE] ?: false }Manejar errores de lectura
Las lecturas del disco pueden fallar con IOException. Use catch antes de map para emitir preferencias vacías y mantener activo el flujo.
val darkMode: Flow<Boolean> = dataStore.data
.catch { e ->
if (e is IOException) emit(emptyPreferences())
else throw e
}
.map { it[PrefKeys.DARK_MODE] ?: false }Escribir con edit
Para cambiar valores, llame a la función suspend edit. Dentro de la lambda recibirá un objeto de preferencias mutable; establezca las claves en él. Todo el bloque constituye una única transacción.
suspend fun setDarkMode(enabled: Boolean) {
dataStore.edit { prefs ->
prefs[PrefKeys.DARK_MODE] = enabled
}
}edit es una función suspend
Como edit se suspende, debe llamarla desde una corrutina, normalmente dentro de un ViewModel mediante viewModelScope.launch. Así se garantiza que la escritura se realice fuera del subproceso principal.
fun toggleDarkMode(value: Boolean) {
viewModelScope.launch {
repository.setDarkMode(value)
}
}Actualizar varias claves
Un solo bloque edit puede establecer varias claves. Se confirman juntas de forma atómica, por lo que los observadores nunca ven una actualización parcial.
dataStore.edit { prefs ->
prefs[PrefKeys.USERNAME] = "ada"
prefs[PrefKeys.DARK_MODE] = true
prefs[PrefKeys.FONT_SIZE] = 16
}Incrementar un valor
Dentro de edit puede leer el valor actual y calcular uno nuevo, lo que resulta útil para contadores como el número de ejecuciones.
suspend fun incrementLaunchCount() {
dataStore.edit { prefs ->
val current = prefs[PrefKeys.LAUNCH_COUNT] ?: 0
prefs[PrefKeys.LAUNCH_COUNT] = current + 1
}
}Eliminar y borrar
Elimine una sola clave con remove o borre todo el almacén con clear; ambas operaciones deben realizarse dentro de un bloque edit.
dataStore.edit { prefs ->
prefs.remove(PrefKeys.USERNAME)
}
dataStore.edit { prefs ->
prefs.clear()
}Recopilar en Compose
En un Composable, convierta el flujo del ViewModel en estado con collectAsStateWithLifecycle(). La interfaz se recompone cada vez que cambia la preferencia.
val darkMode by viewModel.darkMode.collectAsStateWithLifecycle(initial = false)
Switch(
checked = darkMode,
onCheckedChange = { viewModel.toggleDarkMode(it) }
)Ciclo de lectura, modificación y escritura
En conjunto: la interfaz lee mediante un flujo, el usuario cambia el interruptor, el ViewModel inicia una corrutina que llama a edit, DataStore escribe, el flujo vuelve a emitir y la interfaz se recompone. Todo el proceso es completamente reactivo.
Comprobación rápida
Compruebe su comprensión de la lectura y la escritura.
Resumen
Ahora puede leer y escribir preferencias:
dataStore.dataes unFlow<Preferences>reactivomapextrae un solo valor ycatchgestiona los errores de E/SdataStore.edit { }escribe de forma atómica desde una corrutinacollectAsStateWithLifecyclecontrola la interfaz de Compose
A continuación: datos estructurados y tipados con Proto DataStore.
Preguntas frecuentes
¿La lección «Leer y escribir configuraciones» es gratis?
Sí — el texto completo de «Leer y escribir configuraciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Android Academy, actualiza a CoddyKit PRO. El curso de Android Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Leer y escribir configuraciones»?
Guarde y observe las preferencias del usuario Practicas Android Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Android Academy?
No se requiere experiencia previa. Android Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Leer y escribir configuraciones»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Android Academy?
Sí. Cada lección de Android Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- DataStore frente a SharedPreferences
- Preferences DataStore
- Leer y escribir configuraciones
- Proto DataStore