জেনারেট করা ফ্লাটার SDK ব্যবহার করুন

Firebase Data Connect ক্লায়েন্ট SDK গুলি আপনাকে সরাসরি একটি Firebase অ্যাপ থেকে আপনার সার্ভার-সাইড প্রশ্ন এবং মিউটেশন কল করতে দেয়। আপনি সমান্তরালভাবে একটি কাস্টম ক্লায়েন্ট SDK তৈরি করেন যখন আপনি স্কিম, প্রশ্ন এবং মিউটেশনগুলি আপনার Data Connect পরিষেবাতে স্থাপন করেন। তারপর, আপনি আপনার ক্লায়েন্ট যুক্তিতে এই SDK থেকে পদ্ধতিগুলিকে একীভূত করুন৷

যেমনটি আমরা অন্য কোথাও উল্লেখ করেছি, এটা মনে রাখা গুরুত্বপূর্ণ যে Data Connect কোয়েরি এবং মিউটেশনগুলি ক্লায়েন্ট কোড দ্বারা জমা দেওয়া হয় না এবং সার্ভারে কার্যকর করা হয়। পরিবর্তে, যখন স্থাপন করা হয়, Data Connect অপারেশনগুলি ক্লাউড ফাংশনের মতো সার্ভারে সংরক্ষণ করা হয়। এর অর্থ হল বিদ্যমান ব্যবহারকারীদের (উদাহরণস্বরূপ, পুরানো অ্যাপ সংস্করণে) ভাঙা এড়াতে আপনাকে সংশ্লিষ্ট ক্লায়েন্ট-সাইড পরিবর্তনগুলি স্থাপন করতে হবে।

এই কারণেই Data Connect আপনাকে একটি বিকাশকারী পরিবেশ এবং টুলিং প্রদান করে যা আপনাকে আপনার সার্ভার-নিয়োজিত স্কিমা, প্রশ্ন এবং মিউটেশনের প্রোটোটাইপ করতে দেয়। আপনি প্রোটোটাইপ করার সময় এটি স্বয়ংক্রিয়ভাবে ক্লায়েন্ট-সাইড SDK তৈরি করে।

আপনি যখন আপনার পরিষেবা এবং ক্লায়েন্ট অ্যাপগুলিতে আপডেটগুলি পুনরাবৃত্তি করেন, তখন সার্ভার- এবং ক্লায়েন্ট-সাইড আপডেটগুলি স্থাপনের জন্য প্রস্তুত।

ক্লায়েন্ট ডেভেলপমেন্ট ওয়ার্কফ্লো কি?

আপনি যদি শুরু করেন অনুসরণ করেন, তাহলে আপনাকে Data Connect সামগ্রিক উন্নয়ন প্রবাহের সাথে পরিচয় করিয়ে দেওয়া হবে। এই নির্দেশিকাটিতে, আপনি আপনার স্কিমা থেকে ফ্লাটার SDK তৈরি করা এবং ক্লায়েন্টের প্রশ্ন এবং মিউটেশনের সাথে কাজ করার বিষয়ে আরও বিস্তারিত তথ্য পাবেন।

সংক্ষেপে বলতে গেলে, আপনার ক্লায়েন্ট অ্যাপে জেনারেট করা ফ্লাটার SDK ব্যবহার করতে, আপনি এই পূর্বশর্ত পদক্ষেপগুলি অনুসরণ করবেন:

  1. আপনার Flutter অ্যাপে Firebase যোগ করুন।
  2. flutterfire CLI dart pub global activate flutterfire_cli ইনস্টল করুন।
  3. flutterfire configure চালান।

তারপর:

  1. আপনার অ্যাপ স্কিমা বিকাশ করুন.
  2. SDK জেনারেশন সেট আপ করুন:

  3. আপনার ক্লায়েন্ট কোড শুরু করুন এবং লাইব্রেরি আমদানি করুন

  4. ক্যোয়ারী এবং মিউটেশনের কল বাস্তবায়ন করুন।

  5. Data Connect এমুলেটর সেট আপ করুন এবং ব্যবহার করুন এবং পুনরাবৃত্তি করুন।

আপনার ফ্লটার SDK জেনারেট করুন

আপনার অ্যাপে Data Connect জেনারেট করা SDK সেট আপ করতে Firebase CLI ব্যবহার করুন। init কমান্ডটি বর্তমান ফোল্ডারের সমস্ত অ্যাপ সনাক্ত করতে হবে এবং স্বয়ংক্রিয়ভাবে জেনারেট হওয়া SDK গুলি ইনস্টল করতে হবে।

firebase init dataconnect:sdk

প্রোটোটাইপ করার সময় SDK আপডেট করুন

আপনার কাছে ডেটা কানেক্ট VS কোড এক্সটেনশন ইনস্টল করা থাকলে, এটি সর্বদা জেনারেট হওয়া SDK গুলিকে আপ টু ডেট রাখবে৷

আপনি যদি ডেটা কানেক্ট VS কোড এক্সটেনশন ব্যবহার না করেন, তাহলে জেনারেট হওয়া SDK আপ টু ডেট রাখতে আপনি Firebase CLI ব্যবহার করতে পারেন।

firebase dataconnect:sdk:generate --watch

বিল্ড পাইপলাইনে SDK তৈরি করুন

আপনি CI/CD বিল্ড প্রসেসে ডেটা কানেক্ট SDK তৈরি করতে Firebase CLI ব্যবহার করতে পারেন।

firebase dataconnect:sdk:generate

ক্লায়েন্ট কোড সেট আপ করুন

আপনার Data Connect অ্যাপ চালু করুন

প্রথমে, স্ট্যান্ডার্ড Firebase সেটআপ নির্দেশাবলী ব্যবহার করে আপনার অ্যাপ শুরু করুন।

তারপর, Data Connect প্লাগইন ইনস্টল করুন:

flutter pub add firebase_data_connect

Data Connect Flutter SDK শুরু করুন৷

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';

ক্লায়েন্ট সাইডে প্রশ্ন ব্যবহার করুন

জেনারেট করা কোড ইতিমধ্যেই পূর্বনির্ধারিত ক্যোয়ারী রেফের সাথে আসবে। আপনাকে যা করতে হবে তা হল আমদানি এবং কল 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();
}

ঐচ্ছিক ক্ষেত্র

কিছু প্রশ্নের ঐচ্ছিক ক্ষেত্র থাকতে পারে। এই ক্ষেত্রে, ফ্লাটার SDK একটি নির্মাতা পদ্ধতি প্রকাশ করে এবং আলাদাভাবে সেট করতে হবে।

উদাহরণস্বরূপ, createMovie কল করার সময় ফিল্ড rating ঐচ্ছিক, তাই আপনাকে এটি বিল্ডার ফাংশনে প্রদান করতে হবে।

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`

গণনা ক্ষেত্রের পরিবর্তনগুলি পরিচালনা করুন

একটি অ্যাপের স্কিমাতে গণনা থাকতে পারে, যা আপনার GraphQL কোয়েরি দ্বারা অ্যাক্সেস করা যেতে পারে।

একটি অ্যাপের ডিজাইন পরিবর্তন হলে, আপনি নতুন enum সমর্থিত মান যোগ করতে পারেন। উদাহরণস্বরূপ, কল্পনা করুন যে পরে আপনার অ্যাপ্লিকেশনের জীবনচক্রে আপনি AspectRatio enum-এ একটি ফুলস্ক্রিন মান যোগ করার সিদ্ধান্ত নিয়েছেন।

Data Connect ওয়ার্কফ্লোতে, আপনি আপনার প্রশ্ন এবং SDK আপডেট করতে স্থানীয় ডেভেলপমেন্ট টুলিং ব্যবহার করতে পারেন।

যাইহোক, আপনি আপনার ক্লায়েন্টদের একটি আপডেট সংস্করণ প্রকাশ করার আগে, পুরানো নিয়োজিত ক্লায়েন্টগুলি ভেঙে যেতে পারে।

উদাহরণ স্থিতিস্থাপক বাস্তবায়ন

জেনারেট করা SDK অজানা মানগুলি পরিচালনা করে৷ অর্থাৎ, ক্লায়েন্ট কোড অবশ্যই EnumValue অবজেক্টটিকে Known বা Unknown মধ্যে খুলে ফেলতে হবে।

final result = await MoviesConnector.instance.listMovies().execute();

if (result.data != null && result.data!.isNotEmpty) {
  handleEnumValue(result.data![0].aspectratio);
}

void handleEnumValue(EnumValue<AspectRatio> aspectValue) {
  if (aspectValue.value != null) {
    switch(aspectValue.value!) {
      case AspectRatio.ACADEMY:
        print("This movie is in Academy aspect");
        break;
      case AspectRatio.WIDESCREEN:
        print("This movie is in Widescreen aspect");
        break;
      case AspectRatio.ANAMORPHIC:
        print("This movie is in Anamorphic aspect");
        break;
      case AspectRatio.IMAX:
        print("This movie is in IMAX aspect");
    }
  } else {
    print("Unknown aspect ratio detected: ${aspectValue.stringValue}");
  }
}

ক্লায়েন্ট সাইডে মিউটেশন ব্যবহার করুন

মিউটেশনগুলি কোয়েরির মতোই অ্যাক্সেসযোগ্য।

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

আপনার ফ্লাটার অ্যাপের প্রোটোটাইপ এবং পরীক্ষা করুন

একটি স্থানীয় এমুলেটর ব্যবহার করার জন্য উপকরণ ক্লায়েন্ট

আপনি Data Connect এমুলেটর ব্যবহার করতে পারেন, ডেটা কানেক্ট VS কোড এক্সটেনশন থেকে হোক বা 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();

উত্পাদন সংস্থানে স্যুইচ করতে, এমুলেটরের সাথে সংযোগের জন্য লাইনগুলি মন্তব্য করুন।

ডার্ট এসডিকে-তে ডেটার ধরন

Data Connect সার্ভার সাধারণ গ্রাফকিউএল ডেটা প্রকারের প্রতিনিধিত্ব করে। এগুলিকে নিম্নরূপ SDK-তে উপস্থাপন করা হয়েছে।

ডেটা কানেক্ট টাইপ ডার্ট
টাইমস্ট্যাম্প firebase_data_connect.Timestamp
int (32-বিট) int
তারিখ তারিখ সময়
UUID স্ট্রিং
Int64 int
ভাসা দ্বিগুণ
বুলিয়ান bool
যে কোন firebase_data_connect.AnyValue