Flutter
Parse SDK (REST)
Funzioni Cloud Code in Flutter con Parse SDK
18 min
utilizzare le funzioni cloud in un'app flutter introduzione per app complesse, a volte hai solo bisogno di un po' di logica che non viene eseguita su un dispositivo mobile il cloud code rende questo possibile il cloud code è facile da usare perché è costruito sullo stesso sdk javascript di parse che alimenta migliaia di app l'unica differenza è che questo codice viene eseguito nel tuo server parse piuttosto che sul dispositivo mobile dell'utente puoi utilizzare il cloud code per scaricare l'elaborazione sui server parse, aumentando così le prestazioni percepite della tua app puoi creare hook che vengono eseguiti ogni volta che un oggetto viene salvato o eliminato questo è utile se desideri convalidare o sanificare i tuoi dati puoi anche utilizzare il cloud code per modificare oggetti correlati o avviare altri processi come l'invio di una notifica push quando aggiorni il tuo cloud code, diventa disponibile per tutti gli ambienti mobili istantaneamente non devi aspettare una nuova versione della tua applicazione questo ti consente di cambiare il comportamento dell'app al volo e aggiungere nuove funzionalità più rapidamente questa sezione spiega come creare e distribuire il cloud code, seguita da come chiamare una funzione cloud nei progetti flutter tramite back4app in questa guida, l'obiettivo è dimostrare l'uso delle funzioni cloud tramite flutter puoi trovare informazioni più dettagliate in documentazione ufficiale del cloud code di parse requisiti per completare questo tutorial, avrai bisogno di versione flutter 2 2 x o successiva https //flutter dev/docs/get started/install android studio https //developer android com/studio o vs code installato (con plugin dart e flutter) un'app creata su back4app nota segui il tutorial nuova app parse per imparare a creare un'app parse su back4app un'app flutter collegata a back4app nota segui il installa il parse sdk nel progetto flutter per creare un progetto flutter collegato a back4app un dispositivo (o dispositivo virtuale) che esegue android o ios obiettivo esegui il codice cloud parse su back4app da un'app flutter 1 crea un file di codice cloud vai alla tua app su sito web di back4app https //www back4app com/ e clicca su impostazioni del server impostazioni del server trova il codice cloud codice cloud e clicca su funzioni e hosting web funzioni e hosting web dovrebbe apparire così 3\ carica o crea un nuovo file (puoi anche modificare il file main js main js direttamente nel browser) poi, clicca su deploy deploy come mostrato qui il tuo main js main js dovrebbe apparire così 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 }); passi i parametri alla tua funzione cloud dalla tua app flutter e li accedi poi all'interno del request params request params oggetto 2 comprendere la classe parsecloudfunction la parsecloudfunction parsecloudfunction classe definisce metodi per interagire con le funzioni cloud di parse una funzione cloud può essere chiamata con parsecloudfunction execute({parameters params}) parsecloudfunction execute({parameters params}) che restituisce un oggetto mappa o parsecloudfunction executeobjectfunction<>({parameters params}) parsecloudfunction executeobjectfunction<>({parameters params}) che restituisce un parseobject i parametri sono facoltativi e ci si aspetta un oggetto mappa 3 chiama la funzione cloud di parse ora che hai distribuito le funzioni cloud, possiamo chiamare le funzioni utilizzando flutter esempio 1 chiama una funzione cloud e ottieni il ritorno 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 } il risultato visualizzato nella console sarà esempio 2 chiama una cloud function con parametri e ottieni il ritorno 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 } il risultato visualizzato nella console sarà esempio 2 1 chiama una cloud function con parametri e ottieni il ritorno 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 } esempio 3 chiama una funzione cloud con parametri e ottieni parseobject come ritorno 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 } il risultato visualizzato nella console sarà esempio 4 chiama una funzione cloud che restituisce un elenco di mappe che possono essere convertite in 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 } il risultato visualizzato nella console sarà 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 chiama la funzione cloud da flutter utilizziamo ora la nostra chiamata di esempio alla funzione cloud nell'app flutter, con un'interfaccia semplice apri il tuo progetto flutter, vai al main dart main dart file, pulisci tutto il codice e sostituiscilo con 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 } trova le tue credenziali application id e client key navigando al dashboard della tua app su sito web di back4app https //www back4app com/ aggiorna il tuo codice in main dart main dart con i valori di applicationid e clientkey del tuo progetto in back4app keyapplicationid = app id app id keyclientkey = client key client key esegui il progetto e l'app si caricherà come mostrato nell'immagine conclusione a questo punto, sei in grado di codificare e chiamare il tuo cloud code nella tua app flutter utilizzando le funzionalità di parse server core tramite back4app!