More
Come utilizzare Uint8List in Flutter e persisterlo nel backend utilizzando Back4App?
12 min
introduzione nei sistemi digitali, i file sono spesso rappresentati come una sequenza di byte, e dart fornisce un modo efficiente per gestire i dati byte utilizzando uint8list un uint8list è un elenco di lunghezza fissa di interi non firmati a 8 bit, il che significa che ogni numero varia da 0 a 255 questa struttura è utile per lavorare con dati binari, come immagini o file, dove l'efficienza della memoria è cruciale in questo tutorial, tratteremo come lavorare con uint8list in flutter, convertire file in elenchi di byte e persistere i dati nel backend di back4app utilizzando il parse sdk per flutter requisiti prima di iniziare, assicurati di avere quanto segue un account back4app registrati per un account gratuito su back4app com https //www back4app com un ambiente di sviluppo flutter configurato sul tuo computer locale segui la guida all'installazione di flutter https //flutter dev/docs/get started/install se non l'hai ancora configurato conoscenze di base di dart, widget flutter e utilizzo di back4app per i servizi backend passo 1 – configurare il tuo backend back4app crea un progetto back4app accedi al tuo account back4app https //www back4app com/ e crea un nuovo progetto crea classi parse per questo tutorial, crea una classe parse chiamata filestorage per memorizzare i dati binari filename (string) il nome del file filedata (file) i dati binari del file ottieni le tue credenziali back4app naviga nelle impostazioni del tuo progetto per recuperare il tuo id applicazione e la chiave client, che ti serviranno per connettere la tua app flutter a back4app passo 2 – configurare il progetto flutter crea un nuovo progetto flutter apri il tuo terminale o prompt dei comandi e esegui flutter create uint8list example aggiungi dipendenze apri pubspec yaml e aggiungi le seguenti dipendenze dependencies flutter sdk flutter parse server sdk flutter latest version file picker latest version path provider latest version esegui flutter pub get per installare queste dipendenze inizializza parse nella tua app in lib/main dart , inizializza il sdk di parse import 'package\ flutter/material dart'; import 'package\ parse server sdk flutter/parse server sdk flutter dart'; void main() async { widgetsflutterbinding ensureinitialized(); const keyapplicationid = 'your back4app app id'; const keyclientkey = 'your back4app client key'; const keyparseserverurl = 'https //parseapi back4app com'; await parse() initialize(keyapplicationid, keyparseserverurl, clientkey keyclientkey, autosendsessionid true); runapp(myapp()); } class myapp extends statelesswidget { @override widget build(buildcontext context) { return materialapp( home uint8listexample(), ); } } sostituisci 'your back4app app id' e 'your back4app client key' con le tue credenziali effettive di back4app passo 3 – lavorare con uint8list in flutter selezione e lettura del file usa il file picker pacchetto per selezionare un file dal dispositivo e convertirlo in un uint8list import 'dart\ io'; import 'dart\ typed data'; import 'package\ flutter/material dart'; import 'package\ file picker/file picker dart'; import 'package\ path provider/path provider dart'; class uint8listexample extends statefulwidget { @override uint8listexamplestate createstate() => uint8listexamplestate(); } class uint8listexamplestate extends state\<uint8listexample> { uint8list? filebytes; string? filename; future\<void> pickfile() async { filepickerresult? result = await filepicker platform pickfiles(); if (result != null) { platformfile file = result files first; setstate(() { filebytes = file bytes; filename = file name; }); } } @override widget build(buildcontext context) { return scaffold( appbar appbar(title text('uint8list example')), body center( child column( mainaxisalignment mainaxisalignment center, children \[ elevatedbutton( onpressed pickfile, child text('pick a file'), ), if ( filename != null) text('selected file $ filename'), if ( filebytes != null) elevatedbutton( onpressed savetobackend, child text('save to backend'), ), ], ), ), ); } future\<void> savetobackend() async { // implement the saving logic in the next step } } questo codice consente all'utente di selezionare un file, legge il file come un uint8list , e visualizza il nome del file e un pulsante per salvarlo passo 4 – persistenza del uint8list in back4app per memorizzare il file in back4app, utilizziamo l' parsefile oggetto, che ci consente di caricare dati binari come immagini o documenti salvare il file in back4app aggiorna il savetobackend metodo per persistere il file selezionato in back4app future\<void> savetobackend() async { if ( filebytes != null && filename != null) { final parsefile = parsefile(null, name filename, bytedata filebytes); // create a new parseobject to store the file final filestorage = parseobject('filestorage') set('filename', filename) set('filedata', parsefile); // save the file in back4app final response = await filestorage save(); if (response success) { scaffoldmessenger of(context) showsnackbar(snackbar( content text('file saved successfully!'), )); } else { scaffoldmessenger of(context) showsnackbar(snackbar( content text('failed to save file '), )); } } } questo metodo carica il file come dati binari in back4app utilizzando un parsefile se ha successo, visualizza un messaggio di conferma passo 5 – esecuzione dell'app esegui la tua app utilizzando flutter run dovresti vedere un pulsante per selezionare un file, seguito da un'opzione per salvarlo nel backend una volta selezionato verifica i dati in back4app accedendo al tuo dashboard di back4app e controllando la filestorage classe dovresti vedere il file salvato insieme al suo nome migliori pratiche per memorizzare dati binari quando lavori con uint8list e dati binari, ecco alcune migliori pratiche usa il parsefile di back4app è un modo efficiente per memorizzare e recuperare dati binari come immagini, video e documenti evita di memorizzare file di grandi dimensioni direttamente negli oggetti parse se i tuoi file sono grandi, considera di utilizzare un servizio di archiviazione come aws s3 e memorizza l'url del file nel tuo oggetto parse invece del file stesso compressione e ottimizzazione per immagini o file di grandi dimensioni, considera di comprimere il file prima di caricarlo per migliorare le prestazioni conclusione in questo tutorial, abbiamo trattato come lavorare con uint8list in flutter, convertire file in elenchi di byte e persistere questi dati in back4app utilizzando il parse sdk uint8list fornisce un modo efficiente in termini di memoria per gestire i dati byte in dart, rendendolo adatto per operazioni su file come caricamenti di immagini, archiviazione di documenti e altro integrare questo con back4app ti consente di memorizzare e gestire facilmente i dati binari nel cloud per ulteriori informazioni, visita la documentazione di flutter https //flutter dev/docs e documentazione di back4app https //www back4app com/docs buon coding!