More
Cómo optimizar operaciones asíncronas en Flutter con Future.wait y Back4app
7 min
introducción la programación asíncrona es esencial en el desarrollo moderno de aplicaciones, especialmente al tratar con tareas como obtener datos de múltiples fuentes o realizar múltiples solicitudes de red sin embargo, manejar múltiples llamadas asíncronas de manera eficiente puede ser un desafío en flutter, el future wait método proporciona una forma poderosa de gestionar múltiples futures , permitiendo que tu aplicación espere varias operaciones asíncronas de manera concurrente y eficiente en este tutorial, aprenderás cómo usar future wait en flutter para optimizar el rendimiento de tu aplicación al tratar con múltiples tareas asíncronas integraremos esta técnica con back4app, donde puedes realizar búsquedas de datos concurrentes desde tu backend, almacenar los resultados y reducir significativamente el tiempo de espera para tus usuarios 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 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 programación asíncrona en flutter y cómo usar back4app como servicio backend si eres nuevo en back4app, consulta la guía de introducción a back4app https //www back4app com/docs/get started/welcome paso 1 – configuración de 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 clases de parse en tu proyecto de back4app, crea dos nuevas clases de parse llamadas task y project la task clase debe tener campos name (string) y completed (boolean) la project clase debe tener campos title (string) y description (string) agrega datos de ejemplo poblamos estas clases con datos de ejemplo que recuperaremos concurrentemente usando future wait en nuestra 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 – configuración de tu proyecto flutter crea un nuevo proyecto flutter abre tu terminal o símbolo del sistema y ejecuta agrega dependencias abre pubspec yaml y agrega las siguientes dependencias inicializa parse en tu aplicación en lib/main dart , importa el sdk de parse e inicialízalo en la main función 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()); reemplace 'your back4app app id' y 'your back4app client key' con sus credenciales reales de back4app paso 3 – recuperando datos concurrentemente con future wait cree el widget taskprojectscreen en lib/main dart , agregue un nuevo widget que recuperará datos de ambas clases task y project de manera concurrente class taskprojectscreen extends statefulwidget { @override taskprojectscreenstate createstate() => taskprojectscreenstate(); } class taskprojectscreenstate extends state\<taskprojectscreen> { list\<parseobject>? tasks; list\<parseobject>? projects; string? errormessage; @override void initstate() { super initstate(); fetchdata(); } future\<void> fetchdata() async { try { // fetch tasks and projects concurrently final futures = \[ gettasks(), getprojects(), ]; final results = await future wait(futures); setstate(() { tasks = results\[0] as list\<parseobject>; projects = results\[1] as list\<parseobject>; }); } catch (e) { setstate(() { errormessage = e tostring(); }); } } future\<list\<parseobject>> gettasks() async { final query = querybuilder\<parseobject>(parseobject('task')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { throw exception('failed to load tasks'); } } future\<list\<parseobject>> getprojects() async { final query = querybuilder\<parseobject>(parseobject('project')); final response = await query query(); if (response success && response results != null) { return response results as list\<parseobject>; } else { throw exception('failed to load projects'); } } @override widget build(buildcontext context) { if (errormessage != null) { return center(child text('error $errormessage')); } if (tasks == null || projects == null) { return center(child circularprogressindicator()); } return listview( children \[ listtile(title text('tasks')), tasks! map((task) => listtile( title text(task get\<string>('name') ?? 'no name'), subtitle text('completed ${task get\<bool>('completed') ? 'yes' 'no'}'), )), listtile(title text('projects')), projects! map((project) => listtile( title text(project get\<string>('title') ?? 'no title'), subtitle text(project get\<string>('description') ?? 'no description'), )), ], ); } } este widget recupera tareas y proyectos de manera concurrente utilizando future wait , reduciendo el tiempo total de espera al manejar ambas solicitudes simultáneamente paso 4 – probar y ejecutar tu aplicación ejecuta tu aplicación usando flutter run deberías ver una lista de tareas y proyectos mostrados en la pantalla ambos conjuntos de datos se obtienen de manera concurrente, haciendo que el proceso de recuperación de datos sea más rápido y eficiente conclusión en este tutorial, aprendiste cómo usar future wait para optimizar operaciones asíncronas en tu aplicación flutter al obtener datos de múltiples fuentes de manera concurrente e integrarte con back4app, hiciste que tu aplicación fuera más receptiva y redujiste el tiempo de espera general para tus usuarios usar future wait en combinación con un backend robusto como back4app te permite gestionar eficientemente múltiples tareas asíncronas y mejorar el rendimiento de tus aplicaciones flutter para más detalles sobre cómo usar back4app con flutter, consulta la documentación de back4app para flutter https //www back4app com/docs/flutter/overview ¡feliz codificación!