از Flutter SDK های تولید شده استفاده کنید

SDK های مشتری Firebase Data Connect به شما امکان می دهند پرس و جوها و جهش های سمت سرور خود را مستقیماً از یک برنامه Firebase فراخوانی کنید. همزمان با طراحی طرحواره ها، پرس و جوها و جهش هایی که در سرویس Data Connect خود مستقر می کنید، یک SDK مشتری سفارشی ایجاد می کنید. سپس، شما متدها را از این SDK در منطق کلاینت خود ادغام می کنید.

همانطور که در جاهای دیگر ذکر کردیم، توجه به این نکته مهم است که کوئری‌ها و جهش‌های Data Connect توسط کد مشتری ارسال نمی‌شوند و روی سرور اجرا نمی‌شوند. در عوض، هنگام استقرار، عملیات Data Connect مانند توابع ابری در سرور ذخیره می شود. این بدان معناست که شما باید تغییرات سمت کلاینت مربوطه را برای جلوگیری از شکستن کاربران موجود (مثلاً در نسخه‌های قدیمی‌تر برنامه) اعمال کنید.

به همین دلیل است که Data Connect یک محیط توسعه‌دهنده و ابزاری را در اختیار شما قرار می‌دهد که به شما امکان می‌دهد طرح‌واره‌ها، پرسش‌ها و جهش‌های مستقر در سرور خود را نمونه‌سازی کنید. همچنین در حالی که شما نمونه سازی می کنید، SDK های سمت سرویس گیرنده را به طور خودکار تولید می کند.

هنگامی که به‌روزرسانی‌های سرویس و برنامه‌های سرویس گیرنده خود را تکرار کردید، به‌روزرسانی‌های سمت سرور و سرویس گیرنده آماده اجرا هستند.

Flutter SDK خود را ایجاد کنید

مانند بسیاری از پروژه های Firebase، کار بر روی کد مشتری Firebase Data Connect در یک فهرست پروژه محلی انجام می شود. هم افزونه Data Connect VS Code و هم Firebase CLI ابزارهای محلی مهمی برای تولید و مدیریت کد مشتری هستند.

گزینه‌های تولید 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 را که طرح‌واره‌ها، پرسش‌ها و جهش‌ها را تعریف می‌کنند، تغییر می‌دهید. این می تواند یک ویژگی مفید در بارگذاری مجدد جریان های کاری داغ باشد.

در سناریوهای دیگر، اگر از شبیه‌ساز Data Connect از Firebase CLI استفاده می‌کنید، می‌توانید ساعتی را روی به‌روزرسانی‌های .gql تنظیم کنید و همچنین منابع SDK را به‌طور خودکار به‌روزرسانی کنید.

همچنین، می‌توانید هر زمان که فایل‌های .gql تغییر می‌کنند، از CLI برای بازسازی SDK‌ها استفاده کنید:

firebase dataconnect:sdk:generate --watch

SDK ها را برای ادغام و برای انتشار تولید ایجاد کنید

در برخی از سناریوها، مانند آماده کردن منابع پروژه برای ارسال برای آزمایش‌های CI، می‌توانید برای به‌روزرسانی دسته‌ای Firebase CLI تماس بگیرید.

در این موارد، از firebase dataconnect:sdk:generate استفاده کنید.

کد مشتری را تنظیم کنید

برنامه Data Connect خود را راه اندازی کنید

ابتدا، برنامه خود را با استفاده از دستورالعمل‌های راه‌اندازی استاندارد Firebase مقداردهی اولیه کنید.

سپس افزونه Data Connect را نصب کنید:

flutter pub add firebase_data_connect

Data Connect Flutter SDK را راه اندازی کنید

نمونه Data Connect خود را با استفاده از اطلاعاتی که برای راه اندازی Data Connect استفاده کردید (همه در تب Data Connect کنسول Firebase موجود است) راه اندازی کنید.

واردات کتابخانه ها

دو مجموعه واردات برای مقداردهی اولیه کد کلاینت شما مورد نیاز است، واردات کلی 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 یا از CLI.

ابزار دقیق برنامه برای اتصال به شبیه ساز برای هر دو سناریو یکسان است.

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

برای تغییر به منابع تولید، خطوطی را برای اتصال به شبیه ساز بیان کنید.

از پرس و جوها در سمت مشتری استفاده کنید

کد تولید شده از قبل با Query Refs از پیش تعریف شده همراه خواهد بود. تنها کاری که باید انجام دهید این است که آن ها را وارد کرده و 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();

انواع داده در Dart SDK

سرور Data Connect نشان دهنده انواع داده های رایج GraphQL است. این موارد در SDK به شرح زیر نشان داده شده است.

نوع اتصال داده دارت
مهر زمان firebase_data_connect.Timestamp
Int (32 بیتی) بین المللی
تاریخ تاریخ زمان
UUID رشته
Int64 بین المللی
شناور دو برابر کردن
بولی بوول
هر firebase_data_connect.AnyValue