Google Flutter From Scratch utilizzo dei servizi Firebase

Con Google Firebase, una delle piattaforme serverless più potenti e versatili oggi disponibili, puoi aggiungere facilmente funzionalità essenziali come la gestione degli utenti, i rapporti sugli arresti anomali, l'analisi, l'archiviazione dei dati in tempo reale e persino l'apprendimento automatico alle tue app mobili. Per essere in grado di lavorare con la piattaforma mentre usi il framework Google Flutter, avrai bisogno di FlutterFire.

FlutterFire è una collezione crescente di plug-in Flutter ufficiali per Firebase. In questo tutorial, ti mostrerò come utilizzarlo per aggiungere tre diversi servizi Firebase a un'app Flutter.

Prerequisiti

Per seguire questo tutorial passo passo, avrai bisogno di:

  • Android Studio 3.1.3 o versioni successive
  • Google Flutter SDK 0.9.4 o versioni successive
  • Plug-in Google Flutter 29.0.1 o versioni successive
  • un account Firebase
  • un dispositivo con livello API Android 23 o versione successiva

Se non hai il Flutter SDK o il plugin Flutter, scopri come installarli entrambi qui:

1. Preparazione di un progetto Google Flutter

Avvia Android Studio e crea un nuovo progetto Flutter. Nella procedura guidata di creazione del progetto, assicurati di scegliere il Applicazione flutter opzione e associare un nome di pacchetto valido con esso.

Non puoi utilizzare i servizi Firebase in questo progetto finché non lo registri con la piattaforma Firebase e lo colleghi a un progetto Firebase. Sebbene tu possa farlo manualmente utilizzando un browser, puoi risparmiare un sacco di tempo e fatica utilizzando invece l'Assistente Firebase di Android Studio, che automatizza la maggior parte dei passaggi per te.

Inizia aprendo il progetto Android nativo che è incorporato nel tuo progetto Flutter andando a Strumenti> Flutter> Apri per la modifica in Android Studio. Quando richiesto, assicurati di aprire il progetto in una nuova finestra.

Nella nuova finestra, vai a Strumenti> Firebase per aprire l'Assistente Firebase.

Quindi vai a Analytics> Registra un evento Analytics. Nella schermata che si apre in seguito, premere il tasto Collegare pulsante.

Ora vedrai una finestra di dialogo che ti chiede di specificare il nome del tuo nuovo progetto Firebase. Digita il nome che preferisci e premi il tasto Connetti a Firebase pulsante.

A questo punto, Firebase Assistant completerà automaticamente il processo di registrazione e aggiungerà un file chiamato google-services.json, che contiene importanti dettagli di configurazione, per il tuo progetto.

Per poter leggere il file JSON, è necessario il plug-in dei servizi di Google. Quindi apri il livello principale build.gradle file e aggiungi il classpath del plugin all'interno del dipendenze sezione:

classpath "com.google.gms: google-services: 4.0.1"

Successivamente, attiva il plug-in aggiungendo la seguente riga alla fine del livello dell'app build.gradle file:

applica il plug-in: "com.google.gms.google-services"

Ora puoi chiudere la nuova finestra e tornare al progetto Flutter.

2. Aggiunta di dipendenze

FlutterFire ha plugin Google Flutter indipendenti per la maggior parte dei servizi Firebase. Per aggiungere i plugin come dipendenze nel tuo progetto Flutter, tutto ciò che devi fare è menzionarli sotto dipendenze chiave del pubspec.yaml file.

Il codice seguente mostra come aggiungere dipendenze per le versioni più recenti dei plug-in associati ai servizi Analytics, Cloud Firestore e ML Kit:

firebase_analytics: ^ 1.0.3 cloud_firestore: ^ 0.7.3 firebase_ml_vision: ^ 0.2.0 + 1

In questa esercitazione, creerai un'applicazione in grado di eseguire la scansione di codici QR e di salvare i dati che contengono in un database cloud. Come avrai intuito, utilizzerai il plug-in ML Kit come decodificatore di codici QR e il plug-in Cloud Firestore come interfaccia per il database.

Per catturare effettivamente i codici QR, tuttavia, è necessario Image Picker, un plug-in che consente di interagire con la fotocamera. Ecco come puoi aggiungerlo come un'altra dipendenza:

image_picker: ^ 0.4.10

Dopo aver aggiunto le dipendenze, andare avanti e premere il tasto I pacchetti ottengono pulsante per installare tutti i plugin.

3. Utilizzo di Firebase Analytics

Di solito, non dovrai scrivere alcun codice aggiuntivo per poter utilizzare Firebase Analytics nella tua app Flutter. Finché il plug-in associato è installato, la tua app riferirà automaticamente i dati dell'utente a Firebase. Puoi verificarlo eseguendo subito la tua app e andando alla console di Firebase.

Se non hai riscontrato errori di configurazione nei passaggi precedenti, sarai in grado di vedere gli eventi spuntare nel Streamview pannello della dashboard di Analytics.

4. Utilizzo del kit Firebase ML

Firebase ML Kit è un servizio Firebase lanciato di recente che consente di rilevare volti, scansionare codici a barre ed eseguire operazioni di riconoscimento ottico dei caratteri su qualsiasi immagine o video. Il suo plugin FlutterFire offre un'API molto intuitiva e concisa. Usiamolo ora per decodificare i codici QR.

Inizia creando un layout contenente un pulsante che gli utenti possono premere per acquisire foto dei codici QR. Il codice seguente mostra come creare un layout di Material Design con a RaisedButton widget posizionato al centro:

void main () => runApp (new MaterialApp (home: new MyApp ())); classe MyApp estende StatelessWidget @override Widget build (contesto BuildContext) return new Scaffold (body: new Center (child: new RaisedButton (onPressed: () // Altro codice qui, child: new Text ("Capture QR Code") )))); 

Se esegui l'app ora, sarà simile a questa:

Si noti che il pulsante ha un listener di eventi su cui è associato. All'interno dell'ascoltatore, puoi usare il pickImage () metodo del ImagePicker classe per catturare una foto. Poiché il metodo viene eseguito in modo asincrono, è necessario associarvi un listener per poterne ricevere il risultato. Il seguente codice mostra come:

ImagePicker.pickImage (fonte: ImageSource.camera) .then ((foto) // Altro codice qui);

Dopo aver catturato una foto, puoi passarla a ML Kit BarcodeDetector classe per rilevare i codici QR che può contenere. Per ottenere un'istanza della classe, utilizzare il barcodeDetector () metodo del FirebaseVision classe.

ML Kit supporta molti diversi tipi di codici a barre. Per rendere il processo di rilevamento più efficiente, è possibile utilizzare a BarcodeDetectorOptions oggetto per specificare il tipo di codice a barre che ti interessa. Ecco come si crea un rilevatore solo per i codici QR:

BarcodeDetector detector = FirebaseVision.instance.barcodeDetector (BarcodeDetectorOptions (barcodeFormats: BarcodeFormat.qrCode));

Poiché il rilevatore non può gestire direttamente i file di immagine, è necessario convertire la foto in a FirebaseVisionImage oggetto che usa il suo dal file() metodo. È quindi possibile passare l'oggetto al detectInImage () metodo del rilevatore per ottenere una lista di codici a barre rilevati. Il metodo viene eseguito in modo asincrono, quindi dovrai associarlo a un listener.

detector .detectInImage (FirebaseVisionImage.fromFile (photo)) .then ((codici a barre) // Altro codice qui);

All'interno dell'ascoltatore, avrai accesso a un elenco di Codice a barre oggetti. Il rawValue il campo di ciascun oggetto contiene dati decodificati grezzi. Per ora, per mantenere le cose semplici, usiamo un AlertDialog widget per visualizzare i dati grezzi presenti nel primo elemento della lista.

Il codice seguente mostra come creare un semplice AlertDialog avere widget Testo widget per titolo e contenuti, e a FlatButton widget che può essere premuto per chiuderlo:

if (barcodes.length> 0) var barcode = barcode [0]; // Scegli il primo codice a barre // Crea finestra di dialogo degli avvisi showDialog (contesto: contesto, builder: (contesto) return new AlertDialog (titolo: nuovo testo ("Contenuto del codice QR"), contenuto: nuovo testo (barcode.rawValue), // Mostra azioni a valore grezzo: [nuovo FlatButton (onPressed: () Navigator.of (context) .pop ();, child: new Text ("OK"))],); ); 

Puoi eseguire l'app ora e provare a scansionare alcuni codici QR.

5. Uso di Cloud Firestore

Cloud Firestore è un database NoSQL che puoi utilizzare per archiviare i dati della tua app nel cloud. Il plug-in FlutterFire offre classi che consentono di eseguire in modo asincrono operazioni CRUD su di esso.

Prima di iniziare a utilizzarlo, devi abilitare manualmente il servizio Cloud Firestore nella console Firebase. Per farlo, vai al Banca dati sezione della console e premere il tasto Crea Database pulsante.

Quando viene richiesto di definire le regole di sicurezza del database, selezionare Inizia in modalità test opzione. Questa modalità consente di iniziare a utilizzare immediatamente il database, ma non è molto sicuro ed è ideale solo a scopo di test.

Infine, premi il Abilitare pulsante per creare il database.

Di nuovo in Android Studio, puoi ottenere un riferimento al database usando il esempio campo del FireStore classe. Di conseguenza, aggiungi il seguente codice al tuo widget stateless:

var myDatabase = Firestore.instance;

Durante l'utilizzo di Cloud Firestore, è necessario memorizzare tutti i dati all'interno dei documenti. Inoltre, ogni documento deve appartenere a una raccolta. Per creare o fare riferimento a una raccolta, è necessario utilizzare il collezione() metodo, che si aspetta una stringa che specifica il nome della collezione.

Una volta che hai accesso a una collezione, puoi chiamarla Inserisci() metodo per aggiungere un documento ad esso.

Il seguente codice, che puoi aggiungere subito prima della chiamata al showDialog () funzione, mostra come creare un nuovo documento, uno contenente il valore grezzo del codice QR e un timestamp, e aggiungerlo a una raccolta denominata qr_codes:

myDatabase.collection ("qr_codes"). add ("raw_data": barcode.rawValue, "time": nuovo DateTime.now (). millisecondsSinceEpoch). then ((_) print ("Un documento aggiunto.") ;);

Se esegui nuovamente l'app e esegui la scansione di un codice QR, potrai vedere i contenuti del codice QR nella console Firebase.

Conclusione

I servizi offerti dalla piattaforma Firebase sono indispensabili per lo sviluppo di moderne app mobili. Ci sono plugin ufficiali di Google Flutter per quasi tutti questi servizi. In questo tutorial, hai imparato come utilizzarne tre insieme per creare un'app per scanner di codici QR estremamente accurata.

Per ulteriori informazioni su Flutter e Firebase, fare riferimento alla documentazione ufficiale.