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 Connectsorguların ve mutasyonların istemci kodu tarafından gönderilmediğini ve sunucuda yürütülmediğini belirtmek isteriz. Bunun yerine, dağıtılan Data Connect işlemleri Cloud Functions gibi sunucuda depolanır. Bu nedenle, mevcut kullanıcıların (ör. eski uygulama sürümlerinde) uygulamayı kullanamamasını önlemek için istemci tarafında ilgili değişiklikleri dağıtmanız gerekir.
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.
Müşteri geliştirme iş akışı nedir?
Başlayın bölümünü izlediyseniz Data Connect için genel geliştirme akışıyla tanıştırıldınız. Bu kılavuzda, şemanızdan Flutter SDK'ları oluşturma ve istemci sorguları ve mutasyonlarla çalışma hakkında daha ayrıntılı bilgi bulabilirsiniz.
Özetlemek gerekirse, oluşturulan Flutter SDK'larını istemci uygulamalarınızda kullanmak için aşağıdaki ön koşul adımlarını uygularsınız:
- Firebase'i Flutter uygulamanıza ekleyin.
- flutterfire CLI'yi
dart pub global activate flutterfire_cli
yükleyin. flutterfire configure
'ü çalıştırın.
Ardından:
- Uygulama şemanızı geliştirin.
SDK oluşturma işlemini ayarlayın:
- Data Connect VS Code uzantımızdaki SDK'yı uygulamaya ekle düğmesiyle
connector.yaml
hesabınızı güncelleyerek
Sorgu çağrıları ve mutasyonlar uygulayın.
Data Connect emülatörünü kurup kullanın ve iterasyon yapın.
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 ilk kez başlattığınızda oluşturulan dataconnect.yaml
dosyasında çeşitli girişlere göre ayarlanır.
SDK oluşturma işlemini başlatma
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
için mutlak bir yol sağlayabilirsiniz.
package
, paket adını belirtir.
Prototip oluşturma aşamasında 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.
.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
simgesini kullanın.
Müşteri kodunu ayarlama
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 ayarlamak için kullandığınız bilgileri kullanarak Data Connect örneğinizi başlatın (tüm bilgiler Firebase konsolunun Data Connect sekmesinde bulunur).
Kitaplıkları içe aktarma
İstemci kodunuzu ilk kullanıma hazırlamak 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';
İstemci tarafında sorguları kullanma
Oluşturulan kod, önceden tanımlanmış sorgu referanslarıyla birlikte gelir. Tek yapmanız gereken, bu dosyaları içe aktarıp execute
'ü çağırmaktır.
import 'generated/movies.dart';
await MoviesConnector.instance.listMovies().execute();
SDK sorgu yöntemlerini çağırma
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ı kullanma
Mutasyonlara sorgularla aynı şekilde erişilebilir.
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();
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 KSA'dan kullanabilirsiniz.
Uygulamayı, emülatöre bağlanacak şekilde ayarlama işlemi her iki senaryo için de 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.
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 |