Oluşturulan Flutter SDK'larını kullanma

Firebase Data Connect istemci SDK'ları, sunucu tarafı sorgularınızı ve mutasyonlarınızı doğrudan bir Firebase uygulamasından çağırmanıza olanak tanır. Data Connect hizmetinize dağıttığınız şemaları, sorguları ve mutasyonları tasarlarken paralel olarak özel bir istemci SDK'sı oluşturursunuz. Ardından, bu SDK'daki yöntemleri istemci mantığınıza entegre edersiniz.

Başka bir yerde de belirttiğimiz gibi, Data Connect sorgularının ve mutasyonların istemci kodu tarafından gönderilmediğini ve sunucuda yürütüldüğünü unutmamak gerekir. Bunun yerine, dağıtılan Data Connect işlemleri Cloud Functions gibi sunucuda depolanır. Bu nedenle, mevcut kullanıcıların zarar görmesini önlemek için ilgili istemci tarafında yapılan değişiklikleri dağıtmanız gerekir (örneğin, eski uygulama sürümlerinde).

Bu nedenle Data Connect, sunucu üzerinde dağıtılan şemalarınızı, sorgularınızı ve mutasyonlarınızı prototip haline getirmenizi sağlayan bir geliştirici ortamı ve araçları sunar. Ayrıca, siz prototip oluştururken istemci tarafı SDK'ları otomatik olarak oluşturur.

Hizmetinizde ve istemci uygulamalarınızda güncellemeleri iteratif olarak uyguladığınızda hem sunucu hem de istemci tarafı güncellemeleri dağıtılmaya hazır olur.

Flutter SDK'nızı oluşturma

Çoğu Firebase projesinde olduğu gibi, Firebase Data Connect istemci kodunuz üzerinde yerel bir proje dizininde çalışırsınız. Hem Data Connect VS Code uzantısı hem de Firebase CLI, istemci kodu oluşturmak ve yönetmek için önemli yerel araçlardır.

SDK oluşturma seçenekleri, projenizi başlattığınızda oluşturulan dataconnect.yamldosyasındaki çeşitli girişlere göre ayarlanır.

SDK oluşturma işlemini başlatın

connector.yaml dosyanıza outputDir, package ve (web SDK'sı için) packageJsonDir dosyalarınızı ekleyin.
connectorId: movies
generate:
  dartSdk:
    outputDir: ../../lib/generated # Feel free to change this to a different path
    package: movies

outputDir, oluşturulan SDK'nın nereye yayınlanacağını belirtir. Bu yol, connector.yaml dosyasını içeren dizinle ilgilidir. İsteğe bağlı olarak, outputDir öğenizin mutlak yolunu sağlayabilirsiniz.

package, paket adını belirtir.

Prototip oluştururken SDK'ları güncelleme

Data Connect VS Code uzantısı ve Data Connect emülatörüyle etkileşimli olarak prototip oluşturuyorsanız şemaları, sorguları ve mutasyonları tanımlayan .gql dosyalarını değiştirirken SDK kaynak dosyaları otomatik olarak oluşturulur ve güncellenir. Bu özellik, sıcak (yeniden) yükleme iş akışlarında yararlı olabilir.

Diğer senaryolarda, Firebase İYS'sinden Data Connect emülatörünü kullanıyorsanız .gql güncellemelerini izleyebilir ve SDK kaynaklarının otomatik olarak güncellenmesini sağlayabilirsiniz.

Alternatif olarak, .gql dosyaları değiştiğinde SDK'ları yeniden oluşturmak için KSA'yı kullanabilirsiniz:

firebase dataconnect:sdk:generate --watch

Entegrasyon ve üretim sürümleri için SDK'lar oluşturma

Proje kaynaklarını CI testlerine gönderilecek şekilde hazırlama gibi bazı senaryolarda toplu güncelleme için Firebase CLI'yi çağırabilirsiniz.

Bu durumlarda firebase dataconnect:sdk:generate kullanın.

Müşteri kodunu ayarlayın

Data Connect uygulamanızı başlatma

Öncelikle, standart Firebase kurulum talimatlarını kullanarak uygulamanızı başlatın.

Ardından Data Connect eklentisini yükleyin:

flutter pub add firebase_data_connect

Data Connect Flutter SDK'sını başlatma

Data Connect'i kurmak için kullandığınız bilgileri kullanarak Data Connect örneğinizi başlatın (hepsini Firebase konsolunun Veri Bağlantısı sekmesinde bulabilirsiniz).

Kitaplıkları içe aktarma

Müşteri kodunuzu başlatmak için gereken iki içe aktarma grubu vardır: genel Data Connect içe aktarma işlemleri ve belirli, oluşturulmuş SDK içe aktarma işlemleri.

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

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

Flutter uygulamalarınızın prototipini oluşturma ve test etme

İstemcileri yerel bir emülatör kullanacak şekilde ayarlama

Data Connect emülatörünü Data Connect VS Code uzantısından veya CLI'den kullanabilirsiniz.

Uygulamanın emülatöre bağlanması için kullanılması her iki senaryoda da aynıdır.

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();

Üretim kaynaklarına geçmek için emülatöre bağlanma satırlarını yorumlayın.

İstemci tarafında sorguları kullanma

Oluşturulan kod, önceden tanımlanmış sorgu referanslarıyla birlikte gelir. Tek yapmanız gereken içe aktarıp execute adlı cihazı çağırmak.

import 'generated/movies.dart';

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

SDK sorgu yöntemlerini çağırın

Aşağıda bu işlem kısayol işlevlerini kullanan bir örnek verilmiştir:

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();
}

İsteğe bağlı alanlar

Bazı sorgularda isteğe bağlı alanlar olabilir. Bu durumlarda Flutter SDK'sı bir oluşturucu yöntemi gösterir ve ayrı olarak ayarlanması gerekir.

Örneğin, createMovie çağrılırken rating alanı isteğe bağlıdır. Bu nedenle, bu alanı oluşturucu işlevinde sağlamanız gerekir.

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

Değişikliklere abone olma

Değişikliklere abone olabilirsiniz (bu abonelik, bir sorgu yürüttüğünüz her zaman güncellenir).

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`

İstemci tarafında mutasyonları kullanın

Değişikliklere sorgularla aynı şekilde erişilebilir.

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

Dart SDK'sındaki veri türleri

Data Connect sunucusu, yaygın GraphQL veri türlerini temsil eder. Bunlar SDK'da aşağıdaki gibi gösterilir.

Veri Bağlantısı Türü Dart
Zaman damgası firebase_data_connect.Timestamp
Tam sayı (32 bit) int
Tarih DateTime
UUID dize
Int64 int
Kayan double
Boole Bool
Hepsi firebase_data_connect.AnyValue