¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Flutter
  3. Datos
Extrait - Flutter Desarrolle sus aplicaciones móviles multiplataforma con Dart
Extractos del libro
Flutter Desarrolle sus aplicaciones móviles multiplataforma con Dart Volver a la página de compra del libro

Datos

Introducción

El uso de datos es una práctica fundamental. Es necesario comprender cómo guardar estos datos y poder reutilizarlos. En este capítulo, se discutirán varias maneras de hacerlo.

Primero veremos el sistema de almacenamiento llamado Shared Preferences. Se trata de una herramienta muy práctica y sobre todo, fácil de implementar. Por otro lado, no ofrece garantías suficientes para el almacenamiento de datos más sensibles o que necesiten conservarse más tiempo. Para esto, discutiremos la base de datos que incorpora SQLite.

Finalmente, dado que hoy día el modelo se presta a ello, estudiaremos la explotación de datos en formato JSON a través de una API.

Shared Preferences

1. Introducción

Las Shared Preferences son una buena forma de guardar datos con Flutter. Esta práctica se deriva de la funcionalidad del mismo nombre, disponible en Android y de NSUserDefaults en iOS.

Con este sistema, los datos se pueden conservar en el dispositivo del usuario de forma asincrónica. Sin embargo, este método de persistencia no está garantizado. Por lo tanto, debe evitar guardar datos importantes de esta manera.

2. Recuperación de dependencias

El uso de Shared Preferences necesita el paquete shared_preferences. Su declaración se hace indicando el archivo pubspec.yaml:

dependencies: 
 shared_preferences: ^0.5.6+3 

Una vez declarada, la dependencia se recuperará haciendo clic en Packages get.

Este paquete pertenece al programa Flutter Favorite. Por lo tanto, está recomendado por el equipo de Flutter.

3. Creación de la aplicación

El propósito de la aplicación es guardar los datos de una persona en las Shared Preferences y poder recuperarlos para mostrarlos en la pantalla. La aplicación también permitirá que estos datos se eliminen según sea necesario.

a. Clase Persona

En un nuevo proyecto de Flutter, en la carpeta lib se crea un archivo llamado persona.dart, que contiene una clase llamada Persona. La clase incluye tres atributos (nombre, apellido y edad), un constructor y los descriptores de acceso.

class Persona { 
 String _nombre; 
 String _apellido; 
 String _edad; 
 
 Persona(this._nombre, this._apellido, this._edad); 
 
 String get edad => _edad;  
  
 set edad(String value) {  
   _edad = value; 
 } 
 
 String get apellido => _apellido;  
  
 set apellido(String value) {  
   _apellido = value; 
 } 
 
 String get nombre => _nombre;  
  
 set nombre(String value) {  
   _nombre = value; 
 } 
} 

Esta clase se utilizará como apoyo para la creación de una nueva persona, que se utilizará durante todo el programa.

b. main.dart

En el archivo main.dart, MyHomePage extiende StatefulWidget para beneficiarse del ciclo de vida de este widget y la actualización...

SQLite

1. Introducción

Hay otra forma de mantener los datos en un dispositivo de manera más fiable que con las Shared Preferences. Se trata de una base de datos interna SQLite. Como indica su nombre, SQLite es una base de datos de tipo relacional, en la que se utiliza el lenguaje SQL.

Por lo tanto, la información se puede almacenar en una base de datos dentro de tablas y repartirse en columnas. Esta estructura será más eficiente y segura.

Flutter proporciona una dependencia que le permite manipular la base de datos SQLite: sqflite.

Sin embargo, sin conocimientos de lenguaje SQL, utilizar esta herramienta puede resultar complicado.

2. Recuperación de las dependencias

Para recuperar el paquete sqflite, hay que modificar el archivo pubspec.yaml.

dependencies: 
 path_provider: ^1.6.5 
 path: ^1.6.4 
 sqflite: ^1.3.0 

Una vez agregadas estas tres dependencias, debes terminar haciendo clic en Packages get.

En el código anterior, se recuperan además otras dos dependencias. Serán imprescindibles para el ejemplo que se muestra poco después.

Path_provider le permite encontrar rutas o ubicaciones de uso común en el sistema de archivos.

Path es útil en operaciones que permiten la manipulación de rutas o ubicaciones.

3. Creación de la aplicación

Esta aplicación es un poco más compleja que la realizada con las Shared Preferences. Para establecer una comparación entre los dos métodos de persistencia de los datos, se reproducirá la misma aplicación.

a. Clase Persona

En la carpeta lib, se crea un archivo llamado persona.dart.

Por lo tanto, la aplicación se basará en la clase Persona que se describe ahí:

final String tablePersona = 'persona';  
final String columnaId = 'id';  
final String columnaNombre = 'nombre';  
final String columnaApellido = 'apellido';  
final String columnaEdad = 'edad'; 
 
class Persona { 
 int id; 
 String nombre; 
 String apellido; 
 String edad; 
  
 Persona(); 
  
 Persona.fromMap(Map<String, dynamic> map) {  
   id = map[columnaId];  
   nombre = map[columnaNombrebre];  
   apellido...

JSON

El formato JSON se usa de manera muy común actualmente para transmitir información.

1. Definición

JSON significa JavaScript Object Notation.

Se trata de datos organizados en un formato preciso y de forma estructurada. Este formato es, como tal, un competidor de XML.

En los archivos JSON, los datos se trabajan en torno al principio clave/valor. Los valores pueden ser objetos, tablas o tipos más genéricos como números, cadenas de caracteres, booleanos, etc.

La ventaja del estándar JSON es que es fácilmente legible y comprensible para un humano, ya que contiene texto. Su formato también permite a los sistemas interpretarlo sin ningún problema (existen intérpretes para casi todos los lenguajes). Esta sintaxis (clave/valor) es más ligera que la de XML (etiqueta) y, por lo tanto, los archivos JSON son menos pesados. Esto es importante si los datos provienen de la red.

A continuación, se muestra un ejemplo de datos estructurados en JSON:

{ 
   "persona": [ 
 
       { 
           "id": "1", 
           "nombre": "John", 
           "apellido": "DOE" 
       }, 
 
       { 
           "id": "2", 
           "nombre": "Jane", 
           "apellido": "DOE" 
       } 
 
   ] 
} 

En el ejemplo anterior, se transmite información que contiene dos personas. El archivo contiene una tabla de personas. Cada una tiene un id, un nombre y un apellido.

2. Recuperación de las dependencias

En sí mismas, no hay dependencias que recuperar para manipular JSON con Dart. Al realizar la importación de dart:convert, es posible acceder a dos métodos que permiten la codificación y decodificación JSON.

import...