Flutter
Parse SDK (REST)
Operaciones CRUD con Parse en Flutter y Back4App
10 min
esta guía demuestra cómo gestionar objetos parse en back4app utilizando el plugin de flutter para parse server aprenderás las operaciones básicas de crud crear, leer, actualizar y eliminar este tutorial utiliza una simple aplicación de todo para ilustrar estas operaciones el almacenamiento de datos en el backend de back4app gira en torno al parseobject , que contiene pares clave valor de datos compatibles con json el almacenamiento de datos de back4app acomoda una amplia gama de tipos de datos comunes, incluyendo cadenas, números, booleanos, datetime, geopoints, pointers, relaciones, así como listas y objetos esencialmente, admite cualquier dato que pueda ser codificado en formato json, proporcionando una solución flexible y robusta para diversas necesidades de almacenamiento de datos requisitos previos para completar este tutorial, necesitarás flutter versión 3 x x o posterior android studio https //developer android com/studio o vs code instalado (con plugins dart y flutter) una aplicación creada en back4app nota sigue el tutorial de nueva aplicación parse para aprender cómo crear una aplicación parse en back4app una aplicación flutter conectada a back4app nota sigue el instalar parse sdk en el proyecto flutter para crear un proyecto flutter conectado a back4app un dispositivo (o dispositivo virtual) que ejecute android o ios 1\ crear objeto el savetodo función crea una nueva tarea con un título y un done estado establecido en falso así es como funciona inicializar el objeto parse configurando sus atributos crear una instancia de parseobject para tu clase (por ejemplo, 'todo') usa el set método para definir los pares clave valor guardar el objeto llama al save método para almacenar el objeto en la base de datos future\<void> savetodo(string title) async { final todo = parseobject('todo') set('title', title) set('done', false); await todo save(); } 2\ leer objeto la gettodo función consulta la base de datos y devuelve una lista de tareas así es como funciona inicializar la consulta crea una instancia de querybuilder para tu clase ejecutar la consulta usa el query método para recuperar datos manejar la respuesta verifica si la consulta fue exitosa y procesa los resultados future\<list\<parseobject>> gettodo() async { querybuilder\<parseobject> querytodo = querybuilder\<parseobject>(parseobject('todo')); final parseresponse apiresponse = await querytodo query(); if (apiresponse success && apiresponse results != null) { return apiresponse results as list\<parseobject>; } else { return \[]; } } actualiza la listview\ builder función para extraer y mostrar los valores del objeto parse // get parse object values final vartodo = snapshot data!\[index]; final vartitle = vartodo get\<string>('title')!; final vardone = vartodo get\<bool>('done')!; 3\ actualizar objeto la updatetodo función actualiza el estado de una tarea existente así es como funciona inicializar el objeto parse y establecer atributos crear una instancia de parseobject y establecer su objectid utilizar el método set para actualizar pares clave valor guardar el objeto llamar al método save para actualizar el objeto en la base de datos future\<void> updatetodo(string id, bool done) async { var todo = parseobject('todo') objectid = id set('done', done); await todo save(); } 4\ eliminar objeto la deletetodo función elimina una tarea existente de la base de datos así es como funciona inicializar el objeto parse crear una instancia de parseobject y establecer su objectid eliminar el objeto llamar al método delete para eliminar el objeto de la base de datos future\<void> deletetodo(string id) async { var todo = parseobject('todo') objectid = id; await todo delete(); } código de ejemplo completo aquí está el código completo para una aplicación simple de todo integrada con el backend de back4app import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your app id here'; const keyclientkey = 'your client key here'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize(keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true); runapp(const materialapp(home todoapp())); } class todoapp extends statefulwidget { const todoapp({super key}); @override // ignore library private types in public api todoappstate createstate() => todoappstate(); } class todoappstate extends state\<todoapp> { list\<parseobject> tasks = \[]; texteditingcontroller taskcontroller = texteditingcontroller(); @override void initstate() { super initstate(); gettodo(); } @override widget build(buildcontext context) { return materialapp( debugshowcheckedmodebanner false, theme themedata( primarycolor colors white, hintcolor colors black, scaffoldbackgroundcolor colors white, appbartheme appbartheme(backgroundcolor color fromargb(255, 68, 122, 246))), home scaffold( appbar appbar( title const text('todo list'), ), body container( decoration boxdecoration( border border all(color colors black), ), child column( children \[ const sizedbox(height 20), buildtaskinput(), const sizedbox(height 20), expanded(child buildtasklist()), ], ), ), ), ); } widget buildtaskinput() { return padding( padding const edgeinsets symmetric(horizontal 20), child row( children \[ expanded( child textfield( controller taskcontroller, decoration inputdecoration( hinttext 'enter tasks', filled true, fillcolor colors grey\[200], border outlineinputborder( borderradius borderradius circular(8), borderside borderside none, ), ), ), ), const sizedbox(width 10), elevatedbutton( onpressed addtodo, style buttonstyle( foregroundcolor materialstateproperty all\<color>(colors black)), child const text('add'), ), ], ), ); } widget buildtasklist() { return listview\ builder( itemcount tasks length, itembuilder (context, index) { final vartodo = tasks\[index]; final vartitle = vartodo get\<string>('title') ?? ''; bool done = vartodo get\<bool>('done') ?? false; return listtile( title row( children \[ checkbox( value done, onchanged (newvalue) { updatetodo(index, newvalue!); }, ), expanded(child text(vartitle)), ], ), trailing iconbutton( icon const icon(icons delete), onpressed () { deletetodo(index, vartodo objectid!); }, ), ); }, ); } future\<void> addtodo() async { string task = taskcontroller text trim(); if (task isnotempty) { var todo = parseobject('todo') set('title', task) set('done', false); var response = await todo save(); if (response success) { setstate(() { tasks add(todo); }); taskcontroller clear(); } else { // handle error } } } future\<void> updatetodo(int index, bool done) async { final vartodo = tasks\[index]; final string id = vartodo objectid tostring(); var todo = parseobject('todo') objectid = id set('done', done); var response = await todo save(); if (response success) { setstate(() { tasks\[index] = todo; }); } else { // handle error } } future\<void> gettodo() async { var querybuilder = querybuilder\<parseobject>(parseobject('todo')); var apiresponse = await querybuilder query(); if (apiresponse success && apiresponse results != null) { setstate(() { tasks = apiresponse results as list\<parseobject>; }); } else { // handle error } } future\<void> deletetodo(int index, string id) async { var todo = parseobject('todo') objectid = id; var response = await todo delete(); if (response success) { setstate(() { tasks removeat(index); }); } else { // handle error } } } tu aplicación debería verse así conclusión ahora has implementado las operaciones básicas de crud en una aplicación flutter utilizando parse en back4app este tutorial demostró cómo agregar, recuperar, actualizar y eliminar tareas en una aplicación todo