More
Come ottimizzare le operazioni asincrone in Flutter con Future.wait e Back4App?
7 min
introduzione la programmazione asincrona è essenziale nello sviluppo di app moderne, specialmente quando si tratta di compiti come il recupero di dati da più fonti o l'esecuzione di più richieste di rete tuttavia, gestire più chiamate asincrone in modo efficiente può essere una sfida in flutter, il future wait metodo fornisce un modo potente per gestire più futures , consentendo alla tua app di attendere diverse operazioni asincrone in modo concorrente ed efficiente in questo tutorial, imparerai come utilizzare future wait in flutter per ottimizzare le prestazioni della tua app quando gestisci più compiti asincroni integreremo questa tecnica con back4app, dove puoi eseguire recuperi di dati concorrenti dal tuo backend, memorizzare i risultati e ridurre significativamente il tempo di attesa per i tuoi utenti requisiti per completare questo tutorial, avrai bisogno di un account back4app registrati per un account gratuito su back4app com https //www back4app com ambiente di sviluppo flutter configurato sul tuo computer locale segui la guida all'installazione di flutter https //flutter dev/docs/get started/install se non l'hai ancora configurato conoscenze di base sulla programmazione asincrona in flutter e su come utilizzare back4app come servizio backend se sei nuovo su back4app, dai un'occhiata alla guida per iniziare con back4app https //www back4app com/docs/get started/welcome passo 1 – configurazione del tuo backend back4app crea un progetto back4app accedi al tuo account back4app https //dashboard back4app com/ e crea un nuovo progetto crea classi parse nel tuo progetto back4app, crea due nuove classi parse chiamate task e project la classe task dovrebbe avere i campi name (string) e completed (boolean) la classe project dovrebbe avere i campi title (string) e description (string) aggiungi dati di esempio popola queste classi con dati di esempio che recupereremo contemporaneamente utilizzando future wait nella nostra app flutter ottieni le tue credenziali back4app naviga nelle impostazioni del tuo progetto per recuperare il tuo application id e client key, che ti serviranno per connettere la tua app flutter a back4app passo 2 – configurazione del tuo progetto flutter crea un nuovo progetto flutter apri il tuo terminale o prompt dei comandi e esegui aggiungi dipendenze apri pubspec yaml e aggiungi le seguenti dipendenze inizializza parse nella tua app in lib/main dart , importa il sdk di parse e inizializzalo nella funzione main 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()); sostituisci 'your back4app app id' e 'your back4app client key' con le tue credenziali effettive di back4app passo 3 – recupero dei dati concurrentemente con future wait crea il widget taskprojectscreen in lib/main dart , aggiungi un nuovo widget che recupererà i dati sia dalla classe task che dalla classe project contemporaneamente 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'), )), ], ); } } questo widget recupera task e progetti contemporaneamente utilizzando future wait , riducendo il tempo totale di attesa gestendo entrambe le richieste simultaneamente passo 4 – testare e eseguire la tua app esegui la tua app usando flutter run dovresti vedere un elenco di attività e progetti visualizzati sullo schermo entrambi i set di dati vengono recuperati contemporaneamente, rendendo il processo di recupero dei dati più veloce ed efficiente conclusione in questo tutorial, hai imparato come utilizzare future wait per ottimizzare le operazioni asincrone nella tua app flutter recuperando dati da più fonti contemporaneamente e integrandoti con back4app, hai reso la tua app più reattiva e ridotto il tempo di attesa complessivo per i tuoi utenti utilizzare future wait in combinazione con un backend robusto come back4app ti consente di gestire in modo efficiente più attività asincrone e migliorare le prestazioni delle tue applicazioni flutter per ulteriori dettagli su come utilizzare back4app con flutter, dai un'occhiata alla documentazione di back4app per flutter https //www back4app com/docs/flutter/overview buon coding!