Flutter
Parse SDK (REST)
Fonctions Cloud Parse pour Flutter: Guide Dev Complet
18 min
utiliser les fonctions cloud dans une application flutter introduction pour des applications complexes, parfois vous avez juste besoin d'un peu de logique qui ne s'exécute pas sur un appareil mobile le code cloud rend cela possible le code cloud est facile à utiliser car il est construit sur le même sdk javascript parse qui alimente des milliers d'applications la seule différence est que ce code s'exécute sur votre serveur parse plutôt que sur l'appareil mobile de l'utilisateur vous pouvez utiliser le code cloud pour décharger le traitement sur les serveurs parse, augmentant ainsi la performance perçue de votre application vous pouvez créer des hooks qui s'exécutent chaque fois qu'un objet est enregistré ou supprimé cela est utile si vous souhaitez valider ou assainir vos données vous pouvez également utiliser le code cloud pour modifier des objets liés ou déclencher d'autres processus tels que l'envoi d'une notification push lorsque vous mettez à jour votre code cloud, il devient instantanément disponible pour tous les environnements mobiles vous n'avez pas à attendre une nouvelle version de votre application cela vous permet de modifier le comportement de l'application à la volée et d'ajouter de nouvelles fonctionnalités plus rapidement cette section explique comment créer et déployer du code cloud, suivie de la manière d'appeler une fonction cloud dans des projets flutter via back4app dans ce guide, l'accent est mis sur la démonstration de l'utilisation de la fonction cloud via flutter vous pouvez trouver des informations plus approfondies dans la documentation officielle de cloud code de parse prérequis pour compléter ce tutoriel, vous aurez besoin de version de flutter 2 2 x ou ultérieure https //flutter dev/docs/get started/install android studio https //developer android com/studio ou vs code installé (avec plugins dart et flutter) une application créée sur back4app remarque suivez le tutoriel de nouvelle application parse pour apprendre à créer une application parse sur back4app une application flutter connectée à back4app remarque suivez le installer le sdk parse sur le projet flutter pour créer un projet flutter connecté à back4app un appareil (ou un appareil virtuel) exécutant android ou ios objectif exécutez le code cloud parse sur back4app depuis une application flutter 1 créer un fichier de code cloud allez sur votre application à site web de back4app https //www back4app com/ et cliquez sur paramètres du serveur paramètres du serveur trouvez le code cloud code cloud et cliquez sur fonctions et hébergement web fonctions et hébergement web cela ressemble à ceci 3\ téléchargez ou créez un nouveau fichier (vous pouvez également modifier le fichier actuel main js main js directement dans le navigateur) ensuite, cliquez sur déployer déployer comme indiqué ici votre main js main js le fichier devrait ressembler à ceci 1 parse cloud define("hello", async (request) => { 2 console log("hello from cloud code!"); 3 return "hello from cloud code!"; 4 }); 5 6 parse cloud define("sumnumbers", async (request) => { 7 return (request params number1 + request params number2); 8 }); 9 10 parse cloud define("createtodo", async (request) => { 11 const title = request params title; 12 const done = request params done; 13 14 const todo = parse object extend('todo'); 15 const todo = new todo(); 16 todo set('title', title); 17 todo set('done', done); 18 19 try { 20 await todo save(); 21 return todo; 22 } catch (error) { 23 console log('todo create error ' + error code + ' ' + error message); 24 } 25 }); 26 27 parse cloud define("getlisttodo", async (request) => { 28 let query = new parse query("todo"); 29 query descending("done"); 30 return await query find(); 31 }); vous passez des paramètres à votre fonction cloud depuis votre application flutter et y accédez ensuite dans le request params request params objet 2 comprendre la classe parsecloudfunction la parsecloudfunction parsecloudfunction classe définit des méthodes pour interagir avec les fonctions cloud de parse une fonction cloud peut être appelée avec parsecloudfunction execute({parameters params}) parsecloudfunction execute({parameters params}) qui retourne un objet de type map ou parsecloudfunction executeobjectfunction<>({parameters params}) parsecloudfunction executeobjectfunction<>({parameters params}) qui retourne un parseobject les paramètres sont optionnels et un objet de type map est attendu 3 appeler une fonction cloud parse maintenant que vous avez déployé les fonctions cloud, nous pouvons appeler les fonctions en utilisant flutter exemple 1 appeler une fonction cloud et obtenir le retour 1 //executes a cloud function with no parameters that returns a map object 2 final parsecloudfunction function = parsecloudfunction('hello'); 3 final parseresponse parseresponse = await function execute(); 4 if (parseresponse success && parseresponse result != null) { 5 print(parseresponse result); 6 } le résultat affiché dans la console sera exemple 2 appeler une fonction cloud avec des paramètres et obtenir le retour 1 //executes a cloud function with parameters that returns a map object 2 final parsecloudfunction function = parsecloudfunction('sumnumbers'); 3 final map\<string, dynamic> params = \<string, dynamic>{ 4 'number1' 10, 5 'number2' 20 6 }; 7 final parseresponse parseresponse = 8 await function execute(parameters params); 9 if (parseresponse success) { 10 print(parseresponse result); 11 } le résultat affiché dans la console sera exemple 2 1 appeler une fonction cloud avec des paramètres et obtenir le retour 1 //executes a cloud function with parameters that returns a map object 2 final parsecloudfunction function = parsecloudfunction('sumnumbers'); 3 final map\<string, dynamic> params = \<string, dynamic>{ 4 'number1' 10, 5 'number2' 20 6 }; 7 final parseresponse parseresponse = 8 await function execute(parameters params); 9 if (parseresponse success) { 10 print(parseresponse result); 11 } exemple 3 appeler une fonction cloud avec des paramètres et obtenir un parseobject en retour 1 //executes a cloud function that returns a parseobject type 2 final parsecloudfunction function = parsecloudfunction('createtodo'); 3 final map\<string, dynamic> params = \<string, dynamic>{ 4 'title' 'task 1', 5 'done' false 6 }; 7 final parseresponse parseresponse = 8 await function executeobjectfunction\<parseobject>(parameters params); 9 if (parseresponse success && parseresponse result != null) { 10 if (parseresponse result\['result'] is parseobject) { 11 //transforms the return into a parseobject 12 final parseobject parseobject = parseresponse result\['result']; 13 print(parseobject objectid); 14 } 15 } le résultat affiché dans la console sera exemple 4 appeler une fonction cloud qui renvoie une liste de cartes pouvant être converties en un parseobject 1 //executes a cloud function with parameters that returns a map object 2 final parsecloudfunction function = parsecloudfunction('getlisttodo'); 3 final parseresponse parseresponse = await function execute(); 4 if (parseresponse success) { 5 if (parseresponse result != null) { 6 for (final todo in parseresponse result) { 7 //use fromjson method to convert map in parseobject 8 print(parseobject('todo') fromjson(todo)); 9 } 10 } 11 } le résultat affiché dans la console sera 1 flutter {"classname" "todo","objectid" "cr3g4rcct1","createdat" "2021 06 23t03 20 34 933z","updatedat" "2021 06 23t03 20 34 933z","title" "task 1","done"\ false} 2 flutter {"classname" "todo","objectid" "6barcicpke","createdat" "2021 06 23t03 20 54 294z","updatedat" "2021 06 23t03 20 54 294z","title" "task 1","done"\ false} 3 flutter {"classname" "todo","objectid" "tyza74l89q","createdat" "2021 06 23t03 39 42 049z","updatedat" "2021 06 23t03 39 42 049z","title" "task 1","done"\ false} 4 flutter {"classname" "todo","objectid" "arjm8q7h8d","createdat" "2021 06 24t03 33 27 925z","updatedat" "2021 06 24t03 33 27 925z","title" "task 1","done"\ false} 5 appeler la fonction cloud depuis flutter utilisons maintenant notre exemple d'appel de fonction cloud dans l'application flutter, avec une interface simple ouvrez votre projet flutter, allez au main dart main dart fichier, nettoyez tout le code et remplacez le par 1 import 'package\ flutter/cupertino dart'; 2 import 'package\ flutter/material dart'; 3 import 'package\ parse server sdk flutter/parse server sdk dart'; 4 5 void main() async { 6 widgetsflutterbinding ensureinitialized(); 7 8 final keyapplicationid = 'your app id here'; 9 final keyclientkey = 'your client key here'; 10 11 final keyparseserverurl = 'https //parseapi back4app com'; 12 13 await parse() initialize(keyapplicationid, keyparseserverurl, 14 clientkey keyclientkey, debug true); 15 16 runapp(materialapp( 17 title 'flutter geopoint', 18 debugshowcheckedmodebanner false, 19 home homepage(), 20 )); 21 } 22 23 class homepage extends statefulwidget { 24 @override 25 homepagestate createstate() => homepagestate(); 26 } 27 28 class homepagestate extends state\<homepage> { 29 30 void docallcloudcodehello() async { 31 //executes a cloud function with no parameters that returns a map object 32 final parsecloudfunction function = parsecloudfunction('hello'); 33 final parseresponse parseresponse = await function execute(); 34 if (parseresponse success && parseresponse result != null) { 35 print(parseresponse result); 36 } 37 } 38 39 void docallcloudcodesumnumbers() async { 40 //executes a cloud function with parameters that returns a map object 41 final parsecloudfunction function = parsecloudfunction('sumnumbers'); 42 final map\<string, dynamic> params = \<string, dynamic>{ 43 'number1' 10, 44 'number2' 20 45 }; 46 final parseresponse parseresponse = 47 await function execute(parameters params); 48 if (parseresponse success) { 49 print(parseresponse result); 50 } 51 } 52 53 void docallcloudcodecreatetodo() async { 54 //executes a cloud function that returns a parseobject type 55 final parsecloudfunction function = parsecloudfunction('createtodo'); 56 final map\<string, dynamic> params = \<string, dynamic>{ 57 'title' 'task 1', 58 'done' false 59 }; 60 final parseresponse parseresponse = 61 await function executeobjectfunction\<parseobject>(parameters params); 62 if (parseresponse success && parseresponse result != null) { 63 if (parseresponse result\['result'] is parseobject) { 64 //transforms the return into a parseobject 65 final parseobject parseobject = parseresponse result\['result']; 66 print(parseobject tostring()); 67 } 68 } 69 } 70 71 void docallcloudcodegetlisttodo() async { 72 //executes a cloud function with parameters that returns a map object 73 final parsecloudfunction function = parsecloudfunction('getlisttodo'); 74 final parseresponse parseresponse = await function execute(); 75 if (parseresponse success) { 76 if (parseresponse result != null) { 77 for (final todo in parseresponse result) { 78 //use fromjson method to convert map in parseobject 79 print(parseobject('todo') fromjson(todo)); 80 } 81 } 82 } 83 } 84 85 @override 86 widget build(buildcontext context) { 87 return scaffold( 88 body padding( 89 padding const edgeinsets all(16 0), 90 child column( 91 crossaxisalignment crossaxisalignment stretch, 92 children \[ 93 container( 94 height 200, 95 child image network( 96 'https //blog back4app com/wp content/uploads/2017/11/logo b4a 1 768x175 1 png'), 97 ), 98 center( 99 child const text('flutter on back4app call clode code', 100 style textstyle(fontsize 18, fontweight fontweight bold)), 101 ), 102 sizedbox( 103 height 8, 104 ), 105 container( 106 height 50, 107 child elevatedbutton( 108 onpressed docallcloudcodehello, 109 child text('cloud code hello'), 110 style elevatedbutton stylefrom(primary colors blue)), 111 ), 112 sizedbox( 113 height 8, 114 ), 115 container( 116 height 50, 117 child elevatedbutton( 118 onpressed docallcloudcodesumnumbers, 119 child text('cloud code sumnumber'), 120 style elevatedbutton stylefrom(primary colors blue)), 121 ), 122 sizedbox( 123 height 8, 124 ), 125 container( 126 height 50, 127 child elevatedbutton( 128 onpressed docallcloudcodecreatetodo, 129 child text('cloud code createtodo'), 130 style elevatedbutton stylefrom(primary colors blue)), 131 ), 132 sizedbox( 133 height 8, 134 ), 135 container( 136 height 50, 137 child elevatedbutton( 138 onpressed docallcloudcodegetlisttodo, 139 child text('cloud code getlisttodo'), 140 style elevatedbutton stylefrom(primary colors blue)), 141 ), 142 ], 143 ), 144 )); 145 } 146 } trouvez votre identifiant d'application et vos identifiants de clé client en naviguant vers le tableau de bord de votre application à site web de back4app https //www back4app com/ mettez à jour votre code dans main dart main dart avec les valeurs de l'applicationid et de la clientkey de votre projet dans back4app keyapplicationid = app id app id keyclientkey = client key client key exécutez le projet, et l'application se chargera comme indiqué dans l'image conclusion à ce stade, vous êtes capable de coder et d'appeler votre propre cloud code dans votre application flutter en utilisant les fonctionnalités de base de parse server via back4app !