تتيح لك حِزم تطوير البرامج (SDK) لعملاء Firebase Data Connect طلب طلبات البحث وعمليات التحويل من جهة الخادم مباشرةً من تطبيق Firebase. يمكنك إنشاء حزمة تطوير برامج (SDK) مخصّصة للعملاء في وقتٍ موازي أثناء تصميم المخططات وطلبات البحث وعمليات التحويل التي يتم نشرها في خدمة Data Connect. بعد ذلك، يمكنك دمج طرق من حزمة SDK هذه في منطق العميل.
كما ذكرنا في مكان آخر، من المهم الإشارة إلى أنّ Data Connect طلبات البحث والطفرات لا يتم إرسالها بواسطة رمز العميل ويتم تنفيذها على الخادم. بدلاً من ذلك، عند نشرها، يتم تخزين عمليات Data Connect على الخادم مثل "وظائف السحابة الإلكترونية". وهذا يعني أنّك بحاجة إلى نشر التغييرات المقابلة من جهة العميل لتجنّب إيقاف المستخدمين الحاليين (على سبيل المثال، في الإصدارات القديمة من التطبيق).
لهذا السبب، يوفّر لك Data Connect بيئة مطوّرين وأدوات تسمح لك بإنشاء نماذج أولية للمخططات وطلبات البحث والتغييرات التي يتم نشرها على الخادم. وتنشئ هذه الأداة أيضًا حِزم تطوير البرامج (SDK) من جهة العميل تلقائيًا أثناء إنشاء النماذج الأولية.
بعد تكرار التحديثات على تطبيقَي الخدمة والعملاء، تصبح التحديثات من جهة الخادم وجانب العميل جاهزة للنشر.
إنشاء حزمة تطوير البرامج (SDK) من Flutter
كما هو الحال مع معظم مشاريع Firebase، يتم تنفيذ العمل على Firebase Data Connect العميل الرمز البرمجي في دليل مشروع على الجهاز. إنّ كلًّا من Firebase CLI وإضافة Data Connect في VS Code مهمّان على مستوى الأدوات المحلية لإنشاء رمز العميل وإدارته.
ترتبط خيارات إنشاء حزمة SDK بعدة إدخالات في dataconnect.yaml
ملف
الذي تم إنشاؤه عند بدء مشروعك.
إعداد عملية إنشاء حزمة تطوير البرامج (SDK)
فيconnector.yaml
، أضِف outputDir
وpackage
و (بالنسبة إلى حزمة تطوير البرامج (SDK) على الويب)
packageJsonDir
.
connectorId: movies
generate:
dartSdk:
outputDir: ../../lib/generated # Feel free to change this to a different path
package: movies
outputDir
لتحديد المكان الذي يجب أن يتم فيه إنشاء حزمة SDK يكون هذا المسار
نسبيًا إلى الدليل الذي يحتوي على ملف connector.yaml
نفسه.
يمكنك اختياريًا تقديم مسار مطلق إلى outputDir
.
package
لتحديد اسم الحزمة
تعديل حِزم تطوير البرامج (SDK) أثناء إنشاء النماذج الأولية
إذا كنت بصدد إنشاء النماذج الأولية بشكل تفاعلي باستخدام إضافة Data Connect في VS Code
ومحاكي Data Connect، يتم تلقائيًا
إنشاء ملفات مصدر حزمة تطوير البرامج (SDK) وتعديلها أثناء تعديل ملفات .gql
التي تحدّد المخططات وطلبات البحث
والعمليات. يمكن أن تكون هذه ميزة مفيدة في سير عمل (إعادة) التحميل السريع.
.gql
وتعديل مصادر SDK
تلقائيًا.
بدلاً من ذلك، يمكنك استخدام سطر الأوامر لإعادة إنشاء حِزم تطوير البرامج (SDK) عند تغيير ملفات .gql:
firebase dataconnect:sdk:generate --watch
إنشاء حِزم SDK للدمج والإصدارات العلنية
في بعض السيناريوهات، مثل إعداد مصادر المشاريع لإرسالها إلى اختبارات التكامل المستمر، يمكنك استدعاء Firebase CLI لإجراء تحديث مجمّع.
في هذه الحالات، استخدِم firebase dataconnect:sdk:generate
.
إعداد رمز العميل
بدء تطبيق Data Connect
أولاً، عليك إعداد تطبيقك باستخدام تعليمات الإعداد العادية لمنصّة Firebase.
بعد ذلك، ثبِّت المكوّن الإضافي Data Connect:
flutter pub add firebase_data_connect
إعداد Data Connect حزمة تطوير البرامج (SDK) من Flutter
ابدأ تشغيل مثيل Data Connect باستخدام المعلومات التي استخدَمتها لإعداد Data Connect (كلّها متوفّرة في Firebase console علامة التبويب Data Connect).
استيراد المكتبات
هناك مجموعتان من عمليات الاستيراد اللازمة لبدء رمز العميل، وهما عمليات استيراد عامة Data Connect وعمليات استيراد محدّدة تم إنشاؤها لحِزم تطوير البرامج (SDK).
// general imports
import 'package:firebase_data_connect/firebase_data_connect.dart';
// generated queries and mutations from SDK
import 'generated/movies.dart';
إنشاء نماذج أولية لتطبيقاتك على Flutter واختبارها
إعداد التطبيقات لاستخدام محاكي محلي
يمكنك استخدام محاكي Data Connect، سواء من إضافة Data Connect في VS Code أو من سطر الأوامر.
لا يختلف إعداد التطبيق للاتصال بالمحاكي في كلا السيناريوهَين.
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();
للتبديل إلى موارد الإنتاج، عليك وضع تعليق على الأسطر الخاصة بالاتصال بالemualtor.
استخدام طلبات البحث من جهة العميل
سيتضمّن الرمز الذي تم إنشاؤه مراجع طلبات بحث محدّدة مسبقًا. ما عليك سوى
استيراد execute
والاتصال به.
import 'generated/movies.dart';
await MoviesConnector.instance.listMovies().execute();
استدعاء طُرق طلب حزمة تطوير البرامج (SDK)
في ما يلي مثال على استخدام دوال اختصارات الإجراءات هذه:
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();
}
الحقول الاختيارية
قد تحتوي بعض طلبات البحث على حقول اختيارية. في هذه الحالات، تعرض حزمة Flutter SDK طريقة إنشاء، ويجب ضبطها بشكل منفصل.
على سبيل المثال، الحقل rating
اختياري عند استدعاء createMovie
، لذا
عليك تقديمه في دالة "أداة الإنشاء".
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi"}).rating(5).execute();
الاشتراك في التغييرات
يمكنك الاشتراك في التغييرات (التي سيتم تعديلها في أي وقت تنفّذ فيه طلب بحث).
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`
استخدام التعديلات من جهة العميل
يمكن الوصول إلى طلبات التعديل بالطريقة نفسها المستخدَمة للطلبات.
await MoviesConnector.instance.createMovie({ title: 'Empire Strikes Back', releaseYear: 1980, genre: "Sci-Fi" }).rating(5).execute();
أنواع البيانات في حزمة تطوير البرامج (SDK) من Dart
يمثّل خادم Data Connect أنواع بيانات GraphQL الشائعة. يتم تمثيل هذه العناصر في حزمة SDK على النحو التالي.
نوع ربط البيانات | Dart |
---|---|
الطابع الزمني | firebase_data_connect.Timestamp |
Int (32 بت) | int |
التاريخ | DateTime |
معرِّف فريد عالمي (UUID) | السلسلة |
Int64 | int |
عائم | مزدوج |
منطقي | قيمة منطقية (Bool) |
أي | firebase_data_connect.AnyValue |