بدء استخدام Firebase SQL Connect باستخدام Flutter

في هذا الدليل السريع، ستنشئ قاعدة بيانات صغيرة نموذجية وتنفّذها، ثم ستصل إليها من واجهة أمامية باستخدام Flutter.

المتطلبات الأساسية

لإكمال هذا الدليل السريع، ستحتاج إلى ما يلي:

برنامج تعليمي

برنامج تعليمي

1. إعداد مشروعك

أنشئ دليلاً جديدًا وأضِف إليه مشروع Firebase. عندما يُطلب منك ذلك، حدِّد الخيارات التالية:

  • أنشِئ مشروع Firebase جديدًا.
  • لا تنشئ مخططًا باستخدام Gemini (في هذا البرنامج التعليمي، ستستخدم مخطط مثال تم إنشاؤه مسبقًا).
  • أنشئ مثيلاً جديدًا من Cloud SQL.
  • أنشئ نموذج Flutter.
mkdir myproj ; cd myproj
firebase login --reauth
firebase init dataconnect

2. مراجعة أمثلة على تعريفات GraphQL

في SQL Connect، يمكنك تحديد جميع مخططات قاعدة البيانات وعملياتها باستخدام GraphQL. عند إعداد مشروعك، أنشأ Firebase CLI بعض تعريفات الأمثلة لمساعدتك على البدء.

dataconnect/schema/schema.gql (مقتطف)
type Movie @table {
  title: String!
  imageUrl: String!
  genre: String
}

type MovieMetadata @table {
  movie: Movie! @unique
  rating: Float
  releaseYear: Int
  description: String
}
dataconnect/example/queries.gql (مقتطف)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

3- نشر المخططات والعمليات

عند إجراء تغييرات على مخططات قاعدة البيانات أو طلبات البحث أو عمليات التعديل، عليك نشرها حتى يتم تطبيق التغييرات على قاعدة البيانات.

firebase deploy --only dataconnect

4. تعبئة قاعدة البيانات ببيانات نموذجية

ستمنحك بيانات البداية هذه شيئًا يمكنك الاطّلاع عليه عند اختبار نموذج التطبيق. يُرجى العِلم بأنّك في هذه الخطوة ستنفّذ رمز GraphQL عشوائيًا، وهو أمر مسموح به للمهام الإدارية.

firebase dataconnect:execute dataconnect/seed_data.gql

5- إنشاء حزمة تطوير برامج (SDK) لعميل Dart

يستخدم هذا الأمر تعريفات GraphQL لإنشاء مكتبة Dart مخصّصة لقاعدة البيانات. يمكنك استخدام هذه المكتبة في تطبيق العميل لتنفيذ جميع عمليات قاعدة البيانات.

يمكنك إنشاء مكتبات لمنصات متعددة، بما في ذلك Kotlin لنظام Android وSwift لنظام iOS وJavaScript للويب، وذلك عن طريق إضافة تعريفات إلى connector.yaml.

firebase dataconnect:sdk:generate
مقتطف من حزمة تطوير البرامج (SDK) لـ Dart التي يتم إنشاؤها تلقائيًا
class ExampleConnector {
  ListMoviesVariablesBuilder listMovies() {
    return ListMoviesVariablesBuilder(dataConnect);
  }

  // ...
}

6. إعداد تطبيق Flutter

نفِّذ الأوامر التالية لإعداد تطبيق Flutter لاستخدام مشروعك على Firebase.

عندما يُطلب منك ذلك باستخدام الأمر flutterfire، اختَر مشروع Firebase الذي أنشأته سابقًا، واختَر المنصات التي تريد استهدافها.

cd flutter_app
flutter pub add firebase_core firebase_data_connect
flutterfire configure

7. كتابة نموذج لبرنامج عميل Flutter

استبدِل محتوى flutter_app/lib/main.dart بهذا التطبيق البسيط المتوافق مع Flutter.

لاحظ أنّ التطبيق يكمل عملية الوصول اللازمة إلى قاعدة البيانات باستخدام دالة من حزمة SDK التي تم إنشاؤها.

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_data_connect/firebase_data_connect.dart';
import 'package:flutter/material.dart';
import 'package:flutter_app/dataconnect_generated/generated.dart';
import 'package:flutter_app/firebase_options.dart';

class MyApp extends StatelessWidget {
  late final Future<QueryResult<ListMoviesData, void>>
  _movieListFuture;

  MyApp({super.key}) {
    _movieListFuture = ExampleConnector.instance
        .listMovies()
        .execute();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: FutureBuilder(
        future: _movieListFuture,
        builder: (context, snapshot) {
          if (snapshot.connectionState == ConnectionState.done) {
            return ListView.builder(
              scrollDirection: Axis.vertical,
              itemBuilder: (context, index) => Card(
                child: Text(
                  snapshot.data?.data.movies[index].title ?? "",
                ),
              ),
              itemCount: snapshot.data?.data.movies.length ?? 0,
            );
          }
          return const CircularProgressIndicator();
        },
      ),
    );
  }
}

Future<void> main() async {
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );
  runApp(MyApp());
}

8. جرّب التطبيق

ابدأ تشغيل خادم التطوير لمشاهدة مثال التطبيق أثناء عمله.

flutter run

الخطوات التالية

جرِّب إضافة SQL Connect VS Code

عند التطوير باستخدام SQL Connect، ننصحك بشدة باستخدام إضافة SQL Connect VS Code. حتى إذا لم تكن تستخدم Visual Studio Code كبيئة التطوير الأساسية، يوفّر لك هذا الامتداد العديد من الميزات التي تجعل عملية تطوير المخططات والعمليات أكثر ملاءمة:

  • خادم لغة GraphQL يوفّر عمليات التحقّق من البنية واقتراحات الإكمال التلقائي الخاصة بـ SQL Connect
  • أزرار CodeLens في سطر الرمز البرمجي تتيح لك قراءة البيانات وكتابتها من ملفات تعريف المخطط وتنفيذ طلبات البحث وعمليات التعديل من تعريفات العمليات.
  • الحفاظ على مزامنة حِزم SDK التي تم إنشاؤها تلقائيًا مع تعريفات GraphQL
  • إعداد مبسّط للمحاكي المحلي
  • نشر مبسّط للإصدار العلني

استخدام محاكي SQL Connect للتطوير المحلي

على الرغم من أنّ هذا البرنامج التعليمي قد أوضح لك كيفية نشر مخططات SQL Connect وعملياتها مباشرةً، من المحتمل أنّك لن تريد إجراء تغييرات على قاعدة بياناتك النشطة أثناء تطوير تطبيقك. بدلاً من ذلك، يمكنك إعداد محاكي SQL Connect وإجراء أعمال التطوير عليه بدلاً من قاعدة البيانات النشطة. يُعدّ المحاكي نسخة محلية من PGlite تعمل بشكل مشابه لنسخة PostgreSQL مباشرة على Cloud SQL.

تعرَّف على كيفية كتابة المخططات والعمليات لتطبيقك

عند تطوير تطبيقات باستخدام SQL Connect، يُعد تصميم المخططات والعمليات من أولى مهام التطوير وأهمها التي ستُكملها.

  • ‫Gemini في وحدة تحكّم Firebase هو أداة مستندة إلى الذكاء الاصطناعي يمكنها إنشاء مخططات SQL Connect من وصف بلغة طبيعية لتطبيقك. يمكن أن تساعدك هذه الأداة في البدء بسرعة كبيرة، خاصةً إذا لم يسبق لك العمل مع قواعد البيانات العلائقية.
  • يمكنك بدلاً من ذلك كتابة مخططات قاعدة البيانات والاستعلامات والتعديلات مباشرةً باستخدام GraphQL. ابدأ بالاطّلاع على الإرشادات في صفحة تصميم مخططات SQL Connect، ثم انتقِل إلى الصفحات التالية للتعرّف على كيفية كتابة العمليات.

SQL Connectكيفية الحصول على آخر المعلومات من

يمكنك استخدام SQL Connect لكتابة تطبيقات عميل تتفاعل مع البيانات المتغيرة في الوقت الفعلي. راجِع تلقّي إشعارات في الوقت الفعلي من SQL Connect.