More
Comment utiliser la gestion des données dans Flutter en utilisant List.generate avec Back4app
11 min
introduction dans flutter, la manière la plus simple de créer une liste dynamique est d'utiliser list generate cela aide, surtout lorsqu'il s'agit de données récupérées via un service back end comme back4app que ce soit des éléments d'interface utilisateur dynamiques, la gestion de plusieurs entrées de données, ou l'optimisation des requêtes réseau, list generate facilitera au moins votre code et améliorera les performances dans ce tutoriel, nous allons voir comment gérer efficacement les données back end en utilisant list generate dans flutter dans cet exemple, vous verrez comment créer une simple application flutter avec back4app pour récupérer et afficher dynamiquement les avis des utilisateurs, en les notant au passage vous apprendrez à traiter les données back end, à optimiser les requêtes réseau et à effectuer des opérations par lots avec list generate prérequis pour compléter ce tutoriel, vous aurez besoin de un compte back4app inscrivez vous pour un compte gratuit sur back4app com https //www back4app com un environnement de développement flutter configuré sur votre machine locale suivez le guide d'installation de flutter https //flutter dev/docs/get started/install si vous ne l'avez pas encore configuré connaissances de base en dart, widgets flutter et programmation asynchrone étape 1 – configuration de votre backend back4app créer un projet back4app connectez vous à votre compte back4app https //dashboard back4app com/ et créez un nouveau projet créer une classe parse dans votre projet back4app, créez une nouvelle classe parse nommée review cette classe stockera les avis des utilisateurs pour différents articles (par exemple, produits, films, etc ) ajoutez les champs suivants nom d'utilisateur (string) le nom de l'utilisateur qui a soumis l'avis évaluation (number) l'évaluation donnée par l'utilisateur, généralement une valeur entre 1 et 5 commentaire (string) le texte ou le commentaire de l'avis ajouter des données d'exemple remplissez la review classe avec des données d'exemple à utiliser dans votre application flutter obtenez vos identifiants back4app accédez aux paramètres de votre projet pour récupérer votre id d'application et votre clé client, dont vous aurez besoin pour connecter votre application flutter à back4app étape 2 – configuration de votre projet flutter créer un nouveau projet flutter ouvrez votre terminal ou invite de commande et exécutez ajouter des dépendances ouvrez pubspec yaml et ajoutez les dépendances suivantes initialiser parse dans votre application dans lib/main dart , importez le sdk parse et initialisez le dans la fonction 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(), ); } } remplacez 'your back4app app id' et 'your back4app client key' par vos véritables identifiants back4app étape 3 – récupération et affichage des données à l'aide de list generate créer le widget reviewscreen dans lib/main dart , ajoutez un nouveau widget qui récupérera les avis de back4app et les affichera en utilisant 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), ], ), ), ); } } dans cet exemple, reviewtile est un widget personnalisé qui affiche l'avis d'un utilisateur la note par étoiles est générée dynamiquement en utilisant list generate , créant une rangée d'icônes d'étoiles basée sur la valeur de rating récupérée du backend étape 4 – optimisation de la récupération des données avec list generate et future wait dans les cas où vous devez récupérer des données à partir de plusieurs points de terminaison backend simultanément, vous pouvez utiliser list generate en combinaison avec future wait pour optimiser le processus récupération de plusieurs enregistrements liés imaginez que vous avez une autre classe nommée product et que vous souhaitez récupérer des avis liés pour plusieurs produits à la fois vous pouvez utiliser list generate pour initier ces demandes simultanément 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; }); } cette approche réduit le temps d'attente global en récupérant les données pour tous les produits simultanément étape 5 – effectuer des opérations par lots en utilisant list generate si vous devez effectuer des mises à jour ou des suppressions par lots sur plusieurs enregistrements récupérés du backend, list generate peut simplifier le processus exemple de mise à jour par lots voici comment vous pourriez mettre à jour le statut de plusieurs enregistrements en une seule fois 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'); } utiliser list generate ici vous permet d'effectuer efficacement des opérations sur un grand nombre d'enregistrements en une seule opération étape 6 – tester et exécuter votre application exécutez votre application en utilisant flutter run vous devriez voir une liste d'avis d'utilisateurs, chaque avis affichant une note étoilée générée dynamiquement en utilisant list generate si vous avez implémenté les opérations par lots et l'exemple de multi récupération, testez également ces scénarios pour vous assurer que tout fonctionne correctement conclusion dans ce tutoriel, vous avez appris à utiliser list generate dans flutter pour gérer et afficher efficacement les données récupérées d'un backend, comme back4app en utilisant list generate , vous pouvez créer des éléments d'interface utilisateur dynamiques, optimiser la récupération de données et effectuer des opérations par lots de manière propre et maintenable cette approche améliore non seulement les performances de votre application, mais garde également votre code organisé et facile à gérer pour plus d'informations sur l'utilisation de back4app avec flutter, consultez la documentation back4app flutter https //www back4app com/docs/flutter/overview bon codage!