Héctor Álvarez

Taller tecnologías móviles

Implementación de base de datos Local

Esquema de la clase

  • Introducción
  • Introducción a Hive
  • Configuración básica
  • Llamado de Boxes
  • Repositorios DB
  • Pantallas de inventario

Introducción

La implementación de SharedPreferences nos ha mostrado una forma de guardar datos localmente de manera sencilla mediante un modelo clave/valor.

Pero si trabajamos con muchos datos es difícil de mantenerlos y tendríamos que parsear los datos cada vez que queramos acceder o guardar cambios.

También los datos son guardados sin encriptación y pueden ser vista por todos los que puedan navegar a su carpeta de apliación.

Si queremos guardar muchos datos de manera local es conveniente usar una base de datos como Sqflite o Hive.

Introducción a Hive

Hive es una base de datos NoSQL extremanamente rápida.

De la misma manera que SharedPreferences utiliza el modelo clave/valor, aunque en este caso la clave sería a modo de caja de datos donde cada caja de datos puede contener una lista de objetos con su key y atributos de objeto.

Es una base de datos encriptada, con el algoritmo AES-256, por lo que los datos no pueden ser vistos desde fuera de la aplicación.

Dependencias en pubspec.yaml

Agregamos las dependencias hive_ce y las dependencias de desarrollo build_runner (auto generador y hive_ce_generator).

product entity

product repository

get products usecase

data local product repository

Inicialización de HIVE

Acabamos de crear una entidad para obtener los productos, esta misma entidad la reutilizaremos para la base de datos HIVE.

Tenemos que crear casos de uso y repositorios específicos para el apartado de base de datos.

Luego tenemos que crear los tipos de hive, las cajas y los adaptadores, luego ejecutar el generador y registrarlos en main.

hive product repository

check hive product received usecase

get hive products usecase

add hive product usecase

edit hive product usecase

remove hive product usecase

hive types

En este archivo creamos constantes las cuales serán los ID's de cada adapter de Hive, para poder separarlos dentro de la misma caja de objetos (ya que product y el enum Categories están en el mismo archivo).

hive boxes

Creamos un archivo de constantes para las cajas de datos de Hive.

Es un string que contiene el nombre de cada caja de datos, en este caso sólo creamos una caja de datos para los objetos de productos y las Categirías.

hive adapters

Generar partes

Con este comando se generan los archivos faltantes, o sea, las partes .g.dart.

Este comando debería generar los tres siguientes archivos:
hive_adapters.g.dart
hive_adapters.g.yaml
hive_registrar.g.dart

Editar main

En este main implementamos solamente una caja, pero a medida que la aplicación crece, tendremos que asignar/abrir cuántas cajas de datos necesitemos.

Implementación de data db hive product repository

Pantallas de prueba

Tenemos ya toda la base para implementar nuestra base de datos local, sólo falta probarla en una pantalla

Crearemos dos pantallas, una de ordenes y otra de inventario que agreguemos desde las ordenes.

La pantalla ordenes obtendrá los datos desde el repositorio local; tendrán un botón para registrarlos en DB (repositorio DB).

La pantalla inventario obtendrá los datos sólo desde el repositorio db; en esta pantalla podremos modificar la cantidad y eliminar un registro.

Modificar Pages

Modificar RouterApp

Crear order presenter

Crear Order controller

Crear Order view

Inventory presenter

Crear Inventory controller

Crear Inventory view

Modificar Home controller