Usa gli SDK Flutter generati

Gli SDK client Firebase Data Connect ti consentono di chiamare le query e le mutazioni lato server direttamente da un'app Firebase. Generi un SDK client personalizzato in parallelo alla progettazione degli schemi, delle query e delle mutazioni che implementi nel tuo servizio Data Connect. Poi, integra i metodi di questo SDK nella logica del client.

Come abbiamo già detto, è importante notare che le Data Connect query e le mutazioni non vengono inviate dal codice client ed eseguite sul server. Al contrario, una volta eseguito il deployment, le operazioni Data Connect vengono archiviate sul server come Cloud Functions. Ciò significa che devi implementare le modifiche lato client corrispondenti per evitare di interrompere l'esperienza degli utenti esistenti (ad esempio, nelle versioni precedenti dell'app).

Per questo motivo, Data Connect ti fornisce un ambiente di sviluppo e strumenti che ti consentono di prototipare schemi, query e mutazioni implementati sul server. Inoltre, genera automaticamente gli SDK lato client durante la prototipazione.

Una volta completati gli aggiornamenti iterativi del servizio e delle app client, gli aggiornamenti lato server e lato client sono pronti per il deployment.

Qual è il flusso di lavoro di sviluppo del client?

Se hai seguito la guida Inizia, hai appreso il flusso di sviluppo complessivo per Data Connect. In questa guida troverai informazioni più dettagliate sulla generazione di SDK Flutter dallo schema e sull'utilizzo di query e mutazioni client.

Per riassumere, per utilizzare gli SDK Flutter generati nelle tue app client, segui questi passaggi preliminari:

  1. Aggiungi Firebase alla tua app Flutter.
  2. Installa l'interfaccia a riga di comando FlutterFire dart pub global activate flutterfire_cli.
  3. Esegui flutterfire configure.

Quindi:

  1. Sviluppa lo schema dell'app.
  2. Configura la generazione dell'SDK:

  3. Inizializza il codice client e importa le librerie.

  4. Implementa chiamate a query e mutazioni.

  5. Configura e utilizza l'Data Connect emulatore e itera.

Genera l'SDK Flutter

Come per la maggior parte dei progetti Firebase, il lavoro sul codice client Firebase Data Connect si svolge in una directory di progetto locale. Sia l'estensione VS Code Data Connect sia la CLI Firebase sono strumenti locali importanti per generare e gestire il codice client.

Le opzioni di generazione dell'SDK sono associate a diverse voci nel file dataconnect.yaml generato durante l'inizializzazione del progetto.

Inizializza la generazione dell'SDK

Nel tuo connector.yaml, aggiungi outputDir, package e (per l'SDK web) packageJsonDir.
connectorId: movies
generate:
  dartSdk:
    outputDir: ../../lib/generated # Feel free to change this to a different path
    package: movies

outputDir specifica la posizione in cui deve essere generato l'output dell'SDK. Questo percorso è relativo alla directory che contiene il file connector.yaml. Facoltativamente, puoi fornire un percorso assoluto al tuo outputDir.

package specifica il nome del pacchetto.

Aggiornare gli SDK durante la prototipazione

Se prototipi in modo interattivo con l'estensione VS Code Data Connect e il relativo emulatore Data Connect, i file di origine dell'SDK vengono generati e aggiornati automaticamente mentre modifichi i file .gql che definiscono schemi, query e mutazioni. Può essere una funzionalità utile nei flussi di lavoro di ricaricamento a caldo.

In altri scenari, se utilizzi l'emulatore Data Connect dalla CLI Firebase, puoi impostare un monitoraggio degli aggiornamenti .gql e anche aggiornare automaticamente le origini SDK.

In alternativa, puoi utilizzare la CLI per rigenerare gli SDK ogni volta che vengono modificati i file .gql:

firebase dataconnect:sdk:generate --watch

Generare SDK per l'integrazione e per le release di produzione

In alcuni scenari, ad esempio la preparazione delle origini del progetto da inviare per i test CI, puoi chiamare la CLI Firebase per un aggiornamento batch.

In questi casi, utilizza firebase dataconnect:sdk:generate.

Configurare il codice cliente

Inizializzare l'app Data Connect

Per prima cosa, inizializza l'app utilizzando le istruzioni di configurazione standard di Firebase.

Poi, installa il plug-in Data Connect:

flutter pub add firebase_data_connect

Inizializza l'SDK Flutter Data Connect

Inizializza l'istanza Data Connect utilizzando le informazioni che hai utilizzato per configurare Data Connect (tutte disponibili nella scheda Data Connect della console Firebase).

Importare librerie

Per inizializzare il codice client sono necessari due set di importazioni: importazioni Data Connect generali e importazioni specifiche dell'SDK generate.

// general imports
import 'package:firebase_data_connect/firebase_data_connect.dart';

// generated queries and mutations from SDK
import 'generated/movies.dart';

Utilizzare le query lato client

Il codice generato includerà già i riferimenti alle query predefiniti. Tutto ciò che devi fare è importare e chiamare execute.

import 'generated/movies.dart';

await MoviesConnector.instance.listMovies().execute();

Metodi di query dell'SDK di chiamata

Ecco un esempio di utilizzo di queste funzioni di scorciatoia per le azioni:

import 'generated/movies.dart';

function onBtnClick() {
  // This will call the generated Dart from the CLI and then make an HTTP request to the server.
  MoviesConnector.instance.listMovies().execute().then(data => showInUI(data)); // == MoviesConnector.instance.listMovies().ref().execute();
}

Campi facoltativi

Alcune query potrebbero avere campi facoltativi. In questi casi, l'SDK Flutter espone un metodo di creazione e dovrà essere impostato separatamente.

Ad esempio, il campo rating è facoltativo quando si chiama createMovie, quindi devi fornirlo nella funzione di creazione.

await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi"}).rating(5).execute();

Iscriviti alle modifiche

Puoi iscriverti alle modifiche (che verranno aggiornate ogni volta che esegui una query).

QueryRef<ListMoviesData, void> listRef = MoviesConnector.instance.listMovies().ref();

// subscribe will immediately invoke the query if no execute was called on it previously.
listRef.subscribe().listen((data) {
  updateUIWithMovies(data.movies);
});

await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();
await listRef.execute(); // will update the subscription above`

Utilizzare le mutazioni lato client

Le mutazioni sono accessibili allo stesso modo delle query.

await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();

Prototipa e testa le tue app Flutter

Strumentare i client per utilizzare un emulatore locale

Puoi utilizzare l'emulatore Data Connect, sia dall'estensione VS Code Data Connect sia dalla CLI.

L'instrumentazione dell'app per la connessione all'emulatore è la stessa per entrambi gli scenari.

import 'package:firebase_data_connect/firebase_data_connect.dart';
import 'generated/movies.dart';

MoviesConnector.instance.dataConnect
          .useDataConnectEmulator('127.0.0.1', 9399);

// Make calls from your app
QueryRef<ListMoviesData, void> ref = MoviesConnector.instance.listMovies.ref();

Per passare alle risorse di produzione, commenta le righe per la connessione all'emulatore.

Tipi di dati nell'SDK Dart

Il server Data Connect rappresenta i tipi di dati GraphQL comuni. Questi sono rappresentati nell'SDK nel seguente modo.

Tipo di connessione Data Connect Dart
Timestamp firebase_data_connect.Timestamp
Int (32 bit) int
Data DateTime
UUID stringa
Int64 int
In virgola mobile double
Booleano bool
Qualsiasi firebase_data_connect.AnyValue