Flutter
...
Data Objects
Relazioni 1:N in Flutter con Parse SDK: Guida Completa
16 min
relazione uno a molti su flutter introduzione utilizzando parse, puoi memorizzare oggetti di dati stabilendo relazioni tra di essi per modellare questo comportamento, qualsiasi parseobject parseobject può essere utilizzato come valore in altri parseobject parseobject internamente, il framework parse memorizzerà l'oggetto a cui si fa riferimento in un solo posto, per mantenere la coerenza questo può darti ulteriore potere quando costruisci ed esegui query complesse ci sono tre principali tipi di relazione uno a uno uno a uno , stabilendo relazioni dirette tra due oggetti e solo tra di essi; uno a molti uno a molti , dove un oggetto può essere correlato a molti altri oggetti; molti a molti molti a molti , che può creare molte relazioni complesse tra molti oggetti in questa guida dettaglieremo come funziona la relazione uno a molti relazione uno a molti utilizzando un esempio pratico di app ci sono due modi per creare una relazione uno a molti relazione uno a molti in parse il primo è utilizzare i puntatori puntatori in classe figlia classe figlia , che è il più veloce in termini di creazione e tempo di query il secondo è utilizzare array array di puntatori puntatori nella classe genitore, il che può portare a tempi di query lenti a seconda delle loro dimensioni a causa di questo problema di prestazioni, utilizzeremo solo esempi di puntatori implementerai un'app di registrazione di libri flutter e creerai e interrogherai oggetti correlati utilizzando i puntatori puntatori di parse la relazione come uno a uno uno a uno non è comune e non la tratteremo nelle nostre guide come esempio, una relazione tra la classe utente e un'altra classe che conterrà dati sensibili dell'utente per motivi di sicurezza https //blog back4app com/parse server best practices/ ( 1 4 non lasciare che gli utenti abbiano accesso ai dati sensibili di altri ) requisiti flutter versione 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 connessa a back4app nota segui il installa parse sdk nel progetto flutter per creare un progetto flutter connesso a back4app un dispositivo (o dispositivo virtuale) che esegue android o ios comprendere l'app book la classe principale che utilizzerai è la libro libro , che memorizza ogni voce di libro nella registrazione inoltre, queste sono le altre tre classi di oggetti editore editore nome dell'editore del libro, relazione uno a molti con libro libro ; genere genere genere del libro, relazione uno a molti con libro libro nota che per questo esempio considereremo che un libro può avere solo un genere; autore autore autore del libro, relazione molti a molti con libro libro , poiché un libro può avere più di un autore e un autore può avere più di un libro; una rappresentazione visiva di questo modello di dati assumeremo che ogni classe di oggetti ( editore editore , genere genere ) abbia solo un attributo di tipo stringa nome nome e libro libro abbia titolo titolo e anno anno , oltre a qualsiasi attributo relazionale aggiuntivo nelle guide precedenti abbiamo già visto come salvare e leggere parseobject parseobject quindi in questa guida, non tratteremo come salvare e leggere genere genere e editore editore oggetti troverai i seguenti schermi nell'app libri registrazione e elenco dei generi registrazione e elenco degli editori registrazione del libro elenco di editori e libri dettagli del libro non spiegheremo il codice dell'applicazione flutter poiché il focus principale di questa guida è l'uso di flutter con parse utilizzando le relazioni 1 crea il modello dell'app book iniziamo a eseguire il modello del progetto book app apri il tuo progetto flutter dalla guida precedente flutter plugin for parse server il book flutter app https //github com/templates back4app/flutter associations repository è anche disponibile per te per clonare e eseguire il progetto copia il main dart https //github com/templates back4app/flutter associations/blob/master/lib/main dart file e sostituisci il tuo codice attuale delle guide precedenti nota quando debug debug il parametro nella funzione parse() initialize parse() initialize è true true , consente di visualizzare le chiamate api di parse sulla console questa configurazione può aiutare nel debug del codice è consigliabile disabilitare il debug nella versione di rilascio passo 2 collega il template al progetto back4app trova le credenziali del tuo application id e client key navigando nel dashboard della tua app su back4app dashboard >impostazioni app >sicurezza & chiavi https //www back4app com/docs/parse dashboard/app settings aggiorna il tuo codice in main dart main dart con i valori dell’applicationid e clientkey del tuo progetto in back4app keyapplicationid = app id keyclientkey = client key esegui il progetto e l'app si caricherà come mostrato nell'immagine clicca su aggiungi genere aggiungi genere per registrare e visualizzare l'elenco di generi generi che saranno utilizzati nella registrazione dei libri clicca su aggiungi editore aggiungi editore per registrarti e visualizzare l'elenco di editori editori che saranno utilizzati nella registrazione dei libri clicca su aggiungi libro aggiungi libro per registrare un nuovo libro libro utilizzando relazioni con genere genere e editore editore clicca su elenco editore/libro elenco editore/libro per visualizzare l'elenco di editori editori e libri libri 3 salva un oggetto libro e le sue relazioni questa funzione creerà un nuovo libro nel database di back4app con relazioni cerca la funzione dosavebook dosavebook nel file main dart main dart , e inserisci il codice qui sotto all'interno della future\<void> dosavebook() future\<void> dosavebook() funzione 1 final book = parseobject('book') 2 set('title', controllertitle text trim()) 3 set('year', int parse(controlleryear text trim())) 4 //the objectid will be converted to a pointer on the save() method 5 set('genre', parseobject('genre') objectid = genre objectid) 6 //you can also convert to a pointer object before the saving using the topointer() method 7 set( 8 'publisher', 9 (parseobject('publisher') objectid = publisher objectid) 10 topointer()); 11 12 await book save(); per costruire questa funzione, segui questi passaggi 1\ crea una nuova istanza della classe book book con il comando parseobject('book') parseobject('book') 2 usa la funzione set set per impostare i campi per questo oggetto 2 1 title title è un attributo di testo che riceve valore dal controller di testo 2 2 genre genre riceve il valore definendo un parseobject parseobject con l' objectid objectid del genre genre ( parse convertirà in puntatore al salvataggio ) 2 3 publisher publisher riceve il valore definendo un parseobject parseobject con l' objectid objectid del publisher publisher ( nota che possiamo specificare per parse che vogliamo salvare come un pointer pointer usando il topointer() topointer() metodo ) 3 chiama la funzione save save in parseobject parseobject , che registrerà effettivamente l'oggetto nel tuo database nel back4app dashboard esegui l'app e testa la nuova funzione clicca sul aggiungi libro aggiungi libro pulsante compila le informazioni del libro l'app richiede la selezione degli autori, ma il codice per loro sarà trattato solo nella prossima guida clicca su salva libro salva libro pulsante per confermare che il nuovo oggetto sia salvato nel database con relazioni, puoi accedere al back4app dashboard back4app dashboard e accedere alla classe book classe book se accedi alla tua classe book utilizzando il dashboard, puoi fare clic sul valore del puntatore dell'oggetto e verrai reindirizzato all'oggetto referenziato potrebbe sembrare una funzionalità innocua, ma questo rende il debug e la tracciabilità degli errori molto più rapidi rispetto alla ricerca manuale 4 interroga la lista dei libri e i suoi oggetti correlati questa funzione interrogherà i libri nel database back4app utilizzando le relazioni con l'editore attraverso l'editore, otterremo l'elenco dei libri cerca la funzione getbooklist getbooklist nel file main dart main dart , quindi sostituisci il codice qui sotto all'interno della future\<list\<parseobject>> getbooklist(string publisherid) future\<list\<parseobject>> getbooklist(string publisherid) funzione 1 querybuilder\<parseobject> querybook = 2 querybuilder\<parseobject>(parseobject('book')) 3 whereequalto('publisher', 4 (parseobject('publisher') objectid = publisherid) topointer()) 5 orderbyascending('title'); 6 final parseresponse apiresponse = await querybook query(); 7 8 if (apiresponse success && apiresponse results != null) { 9 return apiresponse results; 10 } else { 11 return \[]; 12 } per costruire questa funzione, segui questi passaggi crea un'istanza di parsequery parsequery oggetto per book book classe inserisci una condizione nella query, per cercare books books dove publisher publisher campo è uguale pointer pointer di publisher parseobject publisher parseobject ordiniamo il risultato in ordine crescente di nome nome esegui il metodo di ricerca di una query utilizzando il metodo query() query() se le operazioni hanno successo, gli oggetti in book book verranno restituiti esegui l'app e testa la nuova query prima, clicca sul pulsante elenco publisher/book elenco publisher/book è fatto! a questo punto, hai imparato come creare e interrogare relazioni uno a molti in parse su flutter flutter nella prossima guida, ti mostreremo come creare relazioni molti a molti e come eseguire query che restituiscono dati da oggetti correlati