Mostrando entradas con la etiqueta Kotlin. Mostrar todas las entradas
Mostrando entradas con la etiqueta Kotlin. Mostrar todas las entradas

jueves, 24 de julio de 2025

KivStore: Biblioteca ligera de Kotlin que simplifica el trabajo con DataStore de Android



SharedPreferences no se recomienda usar por Google por ser bloqueante, no contar con type safety y disponer de un manejo de errores deficiente, en su lugar tenemos a DataStore, y bueno en tiempos donde lo que se tenía era SharedPreferences utilice la librería KotPref, la que proporcionaba un manejo práctico y además agregaba soporte para LiveData. Dicho esto y para proporcionar una migración super fácil me decidí por desarrollar lo que he llamado KivStore.

KivStore es una librería que envuelve a DataStore simplificando su uso, proporciona una api con seguridad de tipos basada en delegados, esto facilita la gestión de datos y observadores de tipo Flow y LiveData.

Todo es tan simple (Como con KotPref, ya que está inspirado en dicha librería), tan solo debemos crear nuestro modelo:


Y listo, ya podemos usarlo en nuestros proyectos:


Así mismo la reactividad, el observar valores es muy sencillo:

Con Flow:

Con LiveData:


Pero sobre todo hay que destacar que la librería mantiene en memoria los datos que se usa, así estos se mantienen actualizados y se sirven al instante, al mismo tiempo que se persisten.

Ya está perfecto, todo bonito, pero como lo instalo y configuro en mi proyecto?

También es sencillo, se instala a través de JitPack:


Y agregamos la dependencia:

implementation("com.github.darkzyrb.kivstore:kivstore:v1.8.1")
// Mirar en el repositorio la última versión

Luego se inicializa en el Application de tu proyecto:


Y listo, creas tus modelos y voila.

Más información en el repositorio: https://github.com/DarkzyRB/kivstore

viernes, 20 de junio de 2025

Soporte de tipos Double para SharedPreferences en Android Studio Kotlin (Y librería KotPref)

Hace poco implemente un flujo de datos de tipo Flow desde un source de datos (y consecuentes capas) hasta la vista de un composable en Android, y pues requería datos de tipo Double por su precisión en una de las propiedades del modelo, desde hace un tiempo vengo usando kotpref que es una excelente librería para el manejo de datos en local con SharedPreferences, el caso es que este no proporciona soporte para tipos Double, claro, porque directamente SharedPreferences no te da el soporte para ello, así que desarrolle la extensión para dicha librería.

Pero vamos por pasos, la raíz del tema es SharedPreferences, entonces debía soportar de forma limpia aquello, y pues la manera eficiente es usando bits, lo que guarda tal cual el contenido que es lo que deseamos, luego lo recuperamos como un double, peeeeeero como nos gusta la funcionalidad y usabilidad creamos la extensión para SharedPreferences primero:

De esta manera ya podemos y con confianza almacenar y recuperar de forma “nativa”:

preferences.putDouble(key, value)

preferences.getDouble(key, defaultValue)


Así que ya podemos continuar con el desarrollo de la extensión para Kotpref, comenzando con extender AbstractPref que es propia de la librería de Kotpref, y sobrescribimos sus métodos:

Y ahora los métodos de acceso:


Y voila, espero les sirva, dejo el link del repositorio de la extensión en cuestión:

https://github.com/darkzyrb/kotpref-extensions/tree/master/double-pref