More
Cómo utilizar el manejo de datos en Flutter usando List.generate con Back4app
10 min
introducción en flutter, la forma más simple de crear listas dinámicas es utilizando list generate ayuda, especialmente al tratar con datos obtenidos a través de un servicio de backend como back4app ya sea elementos de ui dinámicos, manejo de varias entradas de datos, o optimización de solicitudes de red, list generate al menos facilitará tu código y mejorará el rendimiento en este tutorial, vamos a ver cómo manejar eficientemente los datos del backend utilizando list generate en flutter en este ejemplo, verás cómo crear una simple aplicación de flutter con back4app para obtener y mostrar reseñas de usuarios de manera dinámica, calificándolas en el proceso aprenderás sobre el procesamiento de datos del backend, la optimización de solicitudes de red y operaciones por lotes con list generate requisitos previos para completar este tutorial, necesitarás una cuenta de back4app regístrate para obtener una cuenta gratuita en back4app com https //www back4app com un entorno de desarrollo de flutter configurado en tu máquina local sigue la guía de instalación de flutter https //flutter dev/docs/get started/install si aún no lo has configurado conocimientos básicos de dart, widgets de flutter y programación asíncrona paso 1 – configurando tu backend de back4app crea un proyecto de back4app inicia sesión en tu cuenta de back4app https //dashboard back4app com/ y crea un nuevo proyecto crea una clase parse en tu proyecto de back4app, crea una nueva clase parse llamada review esta clase almacenará reseñas de usuarios para diferentes elementos (por ejemplo, productos, películas, etc ) agrega los siguientes campos nombre de usuario (string) el nombre del usuario que envió la reseña calificación (número) la calificación dada por el usuario, típicamente un valor entre 1 y 5 comentario (string) el texto o comentario de la reseña agregar datos de ejemplo población de la review clase con datos de ejemplo para usar en tu aplicación flutter obtén tus credenciales de back4app navega a la configuración de tu proyecto para recuperar tu id de aplicación y clave de cliente, que necesitarás para conectar tu aplicación flutter a back4app paso 2 – configurando tu proyecto de flutter crear un nuevo proyecto de flutter abre tu terminal o símbolo del sistema y ejecuta agregar dependencias abre pubspec yaml y agrega las siguientes dependencias inicializar parse en tu aplicación en lib/main dart , importa el sdk de parse e inicialízalo en la función principal import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your back4app app id'; const keyclientkey = 'your back4app client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize(keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true); runapp(myapp()); } class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( home reviewscreen(), ); } } reemplaza 'your back4app app id' y 'your back4app client key' con tus credenciales reales de back4app paso 3 – recuperar y mostrar datos usando list generate crea el widget reviewscreen en lib/main dart , agrega un nuevo widget que obtenga reseñas de back4app y las muestre usando list generate class reviewscreen extends statefulwidget { @override reviewscreenstate createstate() => reviewscreenstate(); } class reviewscreenstate extends state\<reviewscreen> { list\<parseobject>? reviews; @override void initstate() { super initstate(); fetchreviews(); } future\<void> fetchreviews() async { final query = querybuilder\<parseobject>(parseobject('review')); final response = await query query(); if (response success && response results != null) { setstate(() { reviews = response results as list\<parseobject>; }); } } @override widget build(buildcontext context) { return scaffold( appbar appbar(title text('user reviews')), body reviews == null ? center(child circularprogressindicator()) listview\ builder( itemcount reviews! length, itembuilder (context, index) { final review = reviews!\[index]; return reviewtile( username review\ get\<string>('username') ?? 'anonymous', rating review\ get\<int>('rating') ?? 0, comment review\ get\<string>('comment') ?? '', ); }, ), ); } } class reviewtile extends statelesswidget { final string username; final int rating; final string comment; reviewtile({required this username, required this rating, required this comment}); @override widget build(buildcontext context) { return card( margin edgeinsets symmetric(vertical 10, horizontal 15), child padding( padding const edgeinsets all(15 0), child column( crossaxisalignment crossaxisalignment start, children \[ text( username, style textstyle(fontweight fontweight bold), ), sizedbox(height 5), row( children list generate(5, (index) { return icon( index < rating ? icons star icons star border, color colors amber, ); }), ), sizedbox(height 10), text(comment), ], ), ), ); } } en este ejemplo, reviewtile es un widget personalizado que muestra la reseña de un usuario la calificación por estrellas se genera dinámicamente usando list generate , creando una fila de íconos de estrellas basada en el rating valor recuperado del backend paso 4 – optimizando la obtención de datos con list generate y future wait en casos donde necesitas obtener datos de múltiples puntos finales de backend simultáneamente, puedes usar list generate en combinación con future wait para optimizar el proceso obteniendo múltiples registros relacionados imagina que tienes otra clase llamada product y quieres obtener reseñas relacionadas para múltiples productos a la vez puedes usar list generate para iniciar estas solicitudes de manera concurrente future\<void> fetchmultipleproductsreviews(list\<string> productids) async { list\<future\<list\<parseobject>>> requests = list generate(productids length, (index) { final query = querybuilder\<parseobject>(parseobject('review')) whereequalto('productid', productids\[index]); return query query() then((response) => response results as list\<parseobject>); }); list\<list\<parseobject>> allreviews = await future wait(requests); setstate(() { allproductreviews = allreviews; }); } este enfoque reduce el tiempo de espera general al obtener datos para todos los productos simultáneamente paso 5 – realizando operaciones por lotes usando list generate si necesitas realizar actualizaciones o eliminaciones por lotes en múltiples registros obtenidos del backend, list generate puede simplificar el proceso ejemplo de actualización por lotes aquí te mostramos cómo podrías actualizar el estado de múltiples registros de una sola vez future\<void> updatemultiplereviews(list\<string> reviewids, string newstatus) async { list\<future\<parseobject>> updaterequests = list generate(reviewids length, (index) { parseobject review = parseobject('review') objectid = reviewids\[index]; review\ set('status', newstatus); return review\ save(); }); await future wait(updaterequests); print('all reviews updated'); } usar list generate aquí te permite realizar operaciones de manera eficiente en un gran número de registros en una sola operación paso 6 – probar y ejecutar tu aplicación ejecuta tu aplicación usando flutter run deberías ver una lista de reseñas de usuarios, con cada reseña mostrando una calificación de estrellas generada dinámicamente usando list generate si implementaste las operaciones por lotes y el ejemplo de múltiples recuperaciones, prueba esos escenarios también para asegurarte de que todo funcione correctamente conclusión en este tutorial, aprendiste cómo usar list generate en flutter para manejar y mostrar de manera eficiente los datos recuperados de un backend, como back4app al usar list generate , puedes crear elementos de ui dinámicos, optimizar la recuperación de datos y realizar operaciones por lotes de manera limpia y mantenible este enfoque no solo mejora el rendimiento de tu aplicación, sino que también mantiene tu base de código organizada y fácil de gestionar para más información sobre cómo usar back4app con flutter, consulta la documentación de back4app flutter https //www back4app com/docs/flutter/overview ¡feliz codificación!