Flutter
Parse SDK (REST)
Облачные функции Parse в приложении Flutter
18 мин
использование облачных функций в приложении flutter введение для сложных приложений иногда вам просто нужно немного логики, которая не работает на мобильном устройстве облачный код делает это возможным облачный код легко использовать, потому что он основан на том же sdk javascript parse, который поддерживает тысячи приложений единственное отличие заключается в том, что этот код выполняется на вашем сервере parse, а не на мобильном устройстве пользователя вы можете использовать облачный код для разгрузки обработки на серверы parse, тем самым увеличивая воспринимаемую производительность вашего приложения вы можете создавать хуки, которые выполняются каждый раз, когда объект сохраняется или удаляется это полезно, если вы хотите проверить или очистить ваши данные вы также можете использовать облачный код для изменения связанных объектов или запуска других процессов, таких как отправка push уведомления когда вы обновляете свой облачный код, он становится доступным для всех мобильных сред мгновенно вам не нужно ждать нового релиза вашего приложения это позволяет вам изменять поведение приложения на лету и быстрее добавлять новые функции в этом разделе объясняется, как создать и развернуть облачный код, а затем как вызвать облачную функцию в проектах flutter через back4app в этом руководстве основное внимание уделяется демонстрации использования облачной функции через flutter вы можете найти более подробную информацию в https //docs parseplatform org/cloudcode/guide/ предварительные условия чтобы завершить этот учебник, вам потребуется https //flutter dev/docs/get started/install https //developer android com/studio или https //code visualstudio com/ (с https //docs flutter dev/get started/editor dart и flutter) приложение https //www back4app com/docs/get started/new parse app на back4app примечание следуйте https //www back4app com/docs/get started/new parse app чтобы узнать, как создать parse app на back4app flutter приложение, подключенное к back4app примечание следуйте https //www back4app com/docs/flutter/parse sdk/parse flutter sdk чтобы создать проект flutter, подключенный к back4app устройство (или виртуальное устройство), работающее на android или ios цель запустите parse cloud code на back4app из приложения flutter 1 создайте файл cloud code перейдите в ваше приложение на https //www back4app com/ и нажмите на настройки сервера настройки сервера найдите cloud code cloud code и нажмите на функции и веб хостинг функции и веб хостинг это выглядит так 3\ загрузите или создайте новый файл (вы также можете редактировать текущий main js main js файл прямо в браузере) затем нажмите на развернуть развернуть как показано здесь ваш main js main js файл должен выглядеть так 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 }); вы передаете параметры в вашу облачную функцию из вашего приложения flutter и получаете к ним доступ внутри request params request params объекта 2 понимание класса parsecloudfunction класс parsecloudfunction parsecloudfunction предоставляет методы для взаимодействия с облачными функциями parse облачная функция может быть вызвана с parsecloudfunction execute({parameters params}) parsecloudfunction execute({parameters params}) которая возвращает объект карты или parsecloudfunction executeobjectfunction<>({parameters params}) parsecloudfunction executeobjectfunction<>({parameters params}) которая возвращает parseobject параметры являются необязательными, и ожидается объект карты 3 вызов облачной функции parse теперь, когда вы развернули облачные функции, мы можем вызывать функции, используя flutter пример 1 вызов облачной функции и получение результата 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 } результат, отображаемый в консоли, будет 1 пример 2 вызов облачной функции с параметрами и получение результата 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 } результат, отображаемый в консоли, будет flutter привет из облачного кода ! пример 2 1 вызов облачной функции с параметрами и получение результата 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 } flutter 30 пример 3 вызов облачной функции с параметрами и получение parseobject в ответ 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 } результат, отображаемый в консоли, будет flutter {"classname" "todo","objectid" "h0khsir6kt","createdat" "2021 06 25t00 21 10 023z","updatedat" "2021 06 25t00 21 10 023z","title" "задача 1","done" \ false } пример 4 вызов облачной функции, которая возвращает список карт, которые можно преобразовать в 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 } результат, отображаемый в консоли, будет 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 вызов облачной функции из flutter теперь давайте используем наш пример вызова облачной функции в приложении flutter с простым интерфейсом откройте ваш проект flutter, перейдите к main dart main dart файлу, очистите весь код и замените его на 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 } найдите свои учетные данные application id и client key, перейдя на панель управления вашего приложения по адресу https //www back4app com/ обновите свой код в main dart main dart с значениями applicationid и clientkey вашего проекта в back4app keyapplicationid = app id app id keyclientkey = client key client key запустите проект, и приложение загрузится, как показано на изображении заключение на этом этапе вы можете писать код и вызывать свой собственный cloud code в своем приложении flutter, используя функции parse server core через back4app!