More
Come utilizzare la gestione dei dati in Flutter usando List.generate con Back4app
10 min
introduzione in flutter, il modo più semplice per creare liste dinamiche è utilizzare list generate aiuta, soprattutto quando si tratta di dati recuperati tramite un servizio back end come back4app che si tratti di elementi ui dinamici, gestione di più voci di dati o ottimizzazione delle richieste di rete, list generate almeno semplificherà il tuo codice e migliorerà le prestazioni in questo tutorial, vedremo come gestire in modo efficiente i dati del backend utilizzando list generate in flutter in questo esempio, vedrai come creare una semplice applicazione flutter con back4app per recuperare e visualizzare dinamicamente le recensioni degli utenti, valutandole nel processo imparerai a elaborare i dati del backend, ottimizzare le richieste di rete e gestire operazioni in batch con list generate prerequisiti per completare questo tutorial, avrai bisogno di un account back4app registrati per un account gratuito su back4app com https //www back4app com un 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 di dart, widget flutter e programmazione asincrona passo 1 – configurare il tuo backend back4app crea un progetto back4app accedi al tuo account back4app https //dashboard back4app com/ e crea un nuovo progetto crea una classe parse nel tuo progetto back4app, crea una nuova classe parse chiamata review questa classe memorizzerà le recensioni degli utenti per diversi articoli (ad es , prodotti, film, ecc ) aggiungi i seguenti campi username (string) il nome dell'utente che ha inviato la recensione rating (numero) la valutazione data dall'utente, tipicamente un valore tra 1 e 5 comment (string) il testo della recensione o commento aggiungi dati di esempio popola la review classe con dati di esempio da utilizzare nella tua app flutter ottieni le tue credenziali back4app naviga nelle impostazioni del tuo progetto per recuperare il tuo id applicazione e la chiave client, che ti serviranno per connettere la tua app flutter a back4app passo 2 – configurare il 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 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(), ); } } sostituisci 'your back4app app id' e 'your back4app client key' con le tue credenziali effettive di back4app passo 3 – recupero e visualizzazione dei dati utilizzando list generate crea il widget reviewscreen in lib/main dart , aggiungi un nuovo widget che recupererà le recensioni da back4app e le visualizzerà utilizzando 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), ], ), ), ); } } in questo esempio, reviewtile è un widget personalizzato che visualizza la recensione di un utente la valutazione in stelle è generata dinamicamente utilizzando list generate , creando una riga di icone a stella basata sul valore di rating recuperato dal backend passo 4 – ottimizzazione del recupero dati con list generate e future wait nei casi in cui è necessario recuperare dati da più endpoint backend simultaneamente, è possibile utilizzare list generate in combinazione con future wait per ottimizzare il processo recupero di record correlati multipli immagina di avere un'altra classe chiamata product e vuoi recuperare recensioni correlate per più prodotti contemporaneamente puoi utilizzare list generate per avviare queste richieste in modo concorrente 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; }); } questo approccio riduce il tempo di attesa complessivo recuperando i dati per tutti i prodotti simultaneamente passo 5 – esecuzione di operazioni in batch utilizzando list generate se hai bisogno di eseguire aggiornamenti o cancellazioni in batch su più record recuperati dal backend, list generate può semplificare il processo esempio di aggiornamento in batch ecco come potresti aggiornare lo stato di più record in una sola volta 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'); } utilizzare list generate qui consente di eseguire operazioni in modo efficiente su un gran numero di record in un'unica operazione passo 6 – testare e eseguire la tua app esegui la tua app utilizzando flutter run dovresti vedere un elenco di recensioni degli utenti, con ogni recensione che mostra una valutazione a stelle generata dinamicamente utilizzando list generate se hai implementato le operazioni in batch e l'esempio di multi fetch, testa anche quegli scenari per assicurarti che tutto funzioni correttamente conclusione in questo tutorial, hai imparato come utilizzare list generate in flutter per gestire e visualizzare in modo efficiente i dati recuperati da un backend, come back4app utilizzando list generate , puoi creare elementi ui dinamici, ottimizzare il recupero dei dati e eseguire operazioni in batch in modo pulito e manutenibile questo approccio non solo migliora le prestazioni della tua app, ma mantiene anche il tuo codice organizzato e facile da gestire per ulteriori informazioni su come utilizzare back4app con flutter, dai un'occhiata alla documentazione di back4app per flutter https //www back4app com/docs/flutter/overview buon coding!