Flutter
...
Data Objects
Relación Uno a Muchos en Flutter con Parse
16 min
relación uno a muchos en flutter introducción usando parse, puedes almacenar objetos de datos estableciendo relaciones entre ellos para modelar este comportamiento, cualquier parseobject parseobject puede ser utilizado como un valor en otro parseobject parseobject internamente, el marco de parse almacenará el objeto referido en un solo lugar, para mantener la consistencia eso puede darte un poder extra al construir y ejecutar consultas complejas hay tres tipos principales de relaciones uno a uno uno a uno , estableciendo relaciones directas entre dos objetos y solo ellos; uno a muchos uno a muchos , donde un objeto puede estar relacionado con muchos otros objetos; muchos a muchos muchos a muchos , que puede crear muchas relaciones complejas entre muchos objetos en esta guía detallaremos cómo funciona la relación uno a muchos relación uno a muchos utilizando un ejemplo práctico de aplicación hay dos formas de crear una relación uno a muchos relación uno a muchos en parse la primera es usando los punteros punteros en clase hija clase hija , que es la más rápida en tiempo de creación y consulta la segunda es usando arreglos arreglos de punteros punteros en la clase padre, lo que puede llevar a tiempos de consulta lentos dependiendo de su tamaño debido a este problema de rendimiento, solo usaremos ejemplos de punteros implementarás una aplicación de registro de libros en flutter y crearás y consultarás objetos relacionados usando los punteros punteros de parse la relación como uno a uno uno a uno no es común y no vamos a cubrirla en nuestras guías como ejemplo, una relación entre la clase usuario y otra clase que contendrá datos sensibles del usuario por razones de seguridad https //blog back4app com/parse server best practices/ ( 1 4 no dejes que los usuarios tengan acceso a datos sensibles de otros ) requisitos previos flutter versión 2 2 x o posterior https //flutter dev/docs/get started/install android studio https //developer android com/studio o vs code instalado (con plugins dart y flutter) una aplicación creada en back4app nota sigue el tutorial de nueva aplicación parse para aprender a crear una aplicación parse en back4app una aplicación flutter conectada a back4app nota sigue el instalar parse sdk en el proyecto flutter para crear un proyecto flutter conectado a back4app un dispositivo (o dispositivo virtual) que ejecute android o ios entendiendo la aplicación de libro la clase de objeto principal que utilizarás es la libro libro , almacenando cada entrada de libro en el registro además, estas son las otras tres clases de objeto editorial editorial nombre de la editorial del libro, relación de uno a muchos con libro libro ; género género género del libro, relación de uno a muchos con libro libro ten en cuenta que para este ejemplo consideraremos que un libro solo puede tener un género; autor autor autor del libro, relación de muchos a muchos con libro libro , ya que un libro puede tener más de un autor y un autor puede tener más de un libro también; una representación visual de este modelo de datos asumiremos que cada clase de objeto ( editor editor , género género ) tiene solo un tipo de cadena nombre nombre atributo y libro libro tiene título título y año año , aparte de cualquier atributo relacional adicional en las guías anteriores ya hemos visto cómo guardar y leer parseobject parseobject así que en esta guía, no cubriremos cómo guardar y leer género género y editor editor objetos encontrarás las siguientes pantallas en la aplicación de libros registro y listado de géneros registro y lista de editores registro de libros lista de editores y libros detalles del libro no explicaremos el código de la aplicación flutter ya que el enfoque principal de esta guía es usar flutter con parse utilizando relaciones 1 crear plantilla de aplicación de libros primero, ejecutemos la plantilla del proyecto de la aplicación de libros abre tu proyecto de flutter de la guía anterior flutter plugin for parse server el repositorio de la aplicación flutter de libros https //github com/templates back4app/flutter associations también está disponible para que lo clones y ejecutes el proyecto copia el main dart https //github com/templates back4app/flutter associations/blob/master/lib/main dart y reemplaza tu código actual de guías anteriores nota cuando debug debug el parámetro en la función parse() initialize parse() initialize es true true , permite mostrar las llamadas a la api de parse en la consola esta configuración puede ayudar en la depuración del código se recomienda desactivar el modo de depuración en la versión de lanzamiento paso 2 conectar la plantilla al proyecto de back4app encuentra tu id de aplicación y las credenciales de clave de cliente navegando a tu panel de control de la aplicación en panel de control de back4app >configuración de la aplicación >seguridad y claves https //www back4app com/docs/parse dashboard/app settings actualiza tu código en main dart main dart con los valores de applicationid y clientkey de tu proyecto en back4app keyapplicationid = id de la aplicación keyclientkey = clave de cliente ejecuta el proyecto, y la aplicación se cargará como se muestra en la imagen haz clic en agregar género agregar género para registrar y ver la lista de géneros géneros que se utilizarán en el registro de libros haga clic en agregar editor agregar editor para registrarse y ver la lista de editores editores que se utilizarán en el registro de libros haga clic en agregar libro agregar libro para registrar un nuevo libro libro utilizando relaciones con género género y editor editor haga clic en lista de editor/libro lista de editor/libro para ver la lista de editores editores y libros libros 3 guardar un objeto libro y sus relaciones esta función creará un nuevo libro en la base de datos de back4app con relaciones busque la función dosavebook dosavebook en el archivo main dart main dart , e inserte el código a continuación dentro de la future\<void> dosavebook() future\<void> dosavebook() función 1 final book = parseobject('book') 2 set('title', controllertitle text trim()) 3 set('year', int parse(controlleryear text trim())) 4 //the objectid will be converted to a pointer on the save() method 5 set('genre', parseobject('genre') objectid = genre objectid) 6 //you can also convert to a pointer object before the saving using the topointer() method 7 set( 8 'publisher', 9 (parseobject('publisher') objectid = publisher objectid) 10 topointer()); 11 12 await book save(); para construir esta función, sigue estos pasos 1\ crea una nueva instancia de la clase libro clase libro con el comando parseobject('book') parseobject('book') 2 usa la función set función set para establecer los campos de este objeto 2 1 título título es un atributo de texto que recibe valor del controlador de texto 2 2 género género recibe el valor definiendo un parseobject parseobject con el objectid objectid del género género ( parse convertirá en puntero al guardar ) 2 3 editor editor recibe el valor definiendo un parseobject parseobject con el objectid objectid del editor editor ( ten en cuenta que podemos especificar para parse que queremos guardar como un puntero puntero usando el topointer() topointer() método ) 3 llama a la función save función save en parseobject parseobject , que registrará efectivamente el objeto en tu base de datos en el panel de control de back4app ejecuta la aplicación y prueba la nueva función haz clic en el agregar libro agregar libro botón completa la información del libro la aplicación requiere la selección de los autores, pero el código para ellos se cubrirá solo en la próxima guía haz clic en guardar libro guardar libro botón para confirmar que el nuevo objeto se guarda en la base de datos con relaciones, puedes acceder al back4app dashboard back4app dashboard y acceder a la clase book clase book si accedes a tu clase book usando el dashboard, puedes hacer clic en el valor del puntero del objeto y serás redirigido al objeto referenciado puede parecer una función inofensiva, pero esto hace que la depuración y el rastreo de errores sean mucho más rápidos que buscarlos manualmente 4 consultar la lista de libros y sus objetos relacionados esta función consultará libros en la base de datos de back4app utilizando relaciones con el editor a través del editor, obtendremos la lista de libros busca la función getbooklist getbooklist en el archivo main dart main dart , luego reemplaza el código a continuación dentro de la future\<list\<parseobject>> getbooklist(string publisherid) future\<list\<parseobject>> getbooklist(string publisherid) función 1 querybuilder\<parseobject> querybook = 2 querybuilder\<parseobject>(parseobject('book')) 3 whereequalto('publisher', 4 (parseobject('publisher') objectid = publisherid) topointer()) 5 orderbyascending('title'); 6 final parseresponse apiresponse = await querybook query(); 7 8 if (apiresponse success && apiresponse results != null) { 9 return apiresponse results; 10 } else { 11 return \[]; 12 } para construir esta función, sigue estos pasos crea una instancia de parsequery parsequery objeto para book book clase inserta una condición en la consulta, para buscar books books donde el campo publisher publisher es igual a pointer pointer de publisher parseobject publisher parseobject ordenamos el resultado en orden ascendente name name realiza un método de búsqueda de la consulta usando query() query() método si las operaciones tienen éxito, se devolverán los objetos en book book ejecuta la aplicación y prueba la nueva consulta primero, haz clic en el list publisher/book list publisher/book botón ¡está hecho! en este punto, aprendiste cómo crear y consultar relaciones de uno a muchos en parse en flutter flutter en la próxima guía, te mostraremos cómo hacer relaciones de muchos a muchos y cómo realizar consultas que devuelvan datos de objetos relacionados