Flutter
Parse SDK (REST)
Operazioni CRUD su Parse con Flutter e Back4App
10 min
questa guida dimostra come gestire gli oggetti parse su back4app utilizzando il plugin flutter per parse server imparerai le operazioni crud di base creare, leggere, aggiornare e cancellare questo tutorial utilizza una semplice app todo per illustrare queste operazioni lo storage dei dati backend di back4app ruota attorno al parseobject , che contiene coppie chiave valore di dati compatibili con json lo storage dati di back4app accoglie una vasta gamma di tipi di dati comuni, inclusi stringhe, numeri, booleani, datetime, geopoints, pointers, relazioni, così come liste e oggetti fondamentalmente, supporta qualsiasi dato che può essere codificato in formato json, fornendo una soluzione flessibile e robusta per varie esigenze di storage dei dati requisiti per completare questo tutorial, avrai bisogno di flutter versione 3 x x o successiva 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 connessa a back4app nota segui il installa il parse sdk nel progetto flutter per creare un progetto flutter connesso a back4app un dispositivo (o dispositivo virtuale) che esegue android o ios 1\ crea oggetto il savetodo funzione crea un nuovo compito con un titolo e uno done stato impostato su falso ecco come funziona inizializza l'oggetto parse impostando i suoi attributi crea un'istanza di parseobject per la tua classe (ad esempio, 'todo') usa il set metodo per definire le coppie chiave valore salva l'oggetto chiama il save metodo per memorizzare l'oggetto nel database future\<void> savetodo(string title) async { final todo = parseobject('todo') set('title', title) set('done', false); await todo save(); } 2\ leggi oggetto la gettodo funzione interroga il database e restituisce un elenco di attività ecco come funziona inizializza la query crea un'istanza di querybuilder per la tua classe esegui la query usa il query metodo per recuperare i dati gestisci la risposta controlla se la query è stata eseguita con successo e elabora i risultati 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 \[]; } } aggiorna la listview\ builder funzione per estrarre e visualizzare i valori degli oggetti parse // get parse object values final vartodo = snapshot data!\[index]; final vartitle = vartodo get\<string>('title')!; final vardone = vartodo get\<bool>('done')!; 3\ aggiorna oggetto l' updatetodo funzione aggiorna lo stato di un'attività esistente ecco come funziona inizializza l'oggetto parse e imposta gli attributi crea un'istanza di parseobject e imposta il suo objectid usa il set metodo per aggiornare le coppie chiave valore salva l'oggetto chiama il save metodo per aggiornare l'oggetto nel database future\<void> updatetodo(string id, bool done) async { var todo = parseobject('todo') objectid = id set('done', done); await todo save(); } 4\ elimina oggetto la deletetodo funzione rimuove un'attività esistente dal database ecco come funziona inizializza l'oggetto parse crea un'istanza di parseobject e imposta il suo objectid elimina l'oggetto chiama il delete metodo per rimuovere l'oggetto dal database future\<void> deletetodo(string id) async { var todo = parseobject('todo') objectid = id; await todo delete(); } codice di esempio completo ecco il codice completo per una semplice app todo integrata con il backend di 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 } } } la tua app dovrebbe apparire così conclusione hai ora implementato le operazioni crud di base in un'app flutter utilizzando parse su back4app questo tutorial ha dimostrato come aggiungere, recuperare, aggiornare e eliminare attività in un'app todo