Начните работу с Firebase Data Connect с помощью Flutter

В этом кратком руководстве вы создадите и развернете небольшой пример базы данных и получите к ней доступ из интерфейса Flutter.

Предпосылки

Для выполнения этого краткого руководства вам понадобится следующее:

Учебное пособие

Учебное пособие

1. Создайте новый проект Firebase

Начните с создания нового проекта Firebase в консоли Firebase . Затем обновите проект до тарифного плана Blaze.

2. Инициализируйте свой проект

Создайте новый каталог и инициализируйте в нём проект Firebase. При появлении запроса выберите следующие варианты:

  • Выберите проект, созданный на предыдущем шаге.
  • Не создавайте схему с помощью Gemini (в этом уроке вы будете использовать готовый пример схемы).
  • Создайте новый экземпляр Cloud SQL.
  • Создайте шаблон Flutter.
mkdir myproj ; cd myproj
firebase login --reauth
firebase init dataconnect

3. Ознакомьтесь с примерами определений GraphQL.

В Data 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
  }
}

4. Разверните свои схемы и операции

Всякий раз, когда вы вносите изменения в схемы, запросы или мутации базы данных, вы должны развернуть их, чтобы ваши изменения вступили в силу в базе данных.

firebase deploy --only dataconnect

5. Заполните базу данных образцами данных.

Эти начальные данные дадут вам основу для тестирования примера приложения. Обратите внимание, что на этом этапе вы запускаете произвольный код GraphQL, что разрешено для административных задач.

firebase dataconnect:execute dataconnect/seed_data.gql

6. Создайте клиентский SDK Dart.

Эта команда использует ваши определения GraphQL для создания библиотеки Dart специально для вашей базы данных. Эта библиотека используется в клиентском приложении для выполнения всех операций с базой данных.

Вы можете создавать библиотеки для нескольких платформ, включая Kotlin для Android, Swift для iOS и JavaScript для веба, добавляя определения в connector.yaml .

firebase dataconnect:sdk:generate
Автоматически сгенерированный Dart SDK (фрагмент)
class ExampleConnector {
  ListMoviesVariablesBuilder listMovies() {
    return ListMoviesVariablesBuilder(dataConnect);
  }

  // ...
}

7. Настройте приложение Flutter

Выполните эти команды, чтобы настроить приложение Flutter для использования вашего проекта Firebase.

При появлении запроса от команды flutterfire выберите ранее созданный проект Firebase и укажите платформы, на которые вы хотите нацелиться.

cd flutter_app
flutter pub add firebase_core firebase_data_connect
flutterfire configure

8. Напишите пример клиента 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());
}

9. Попробуйте приложение

Запустите сервер разработки, чтобы увидеть пример приложения в действии.

flutter run

Следующие шаги

Попробуйте расширение Visual Studio Code

При разработке с помощью Data Connect мы настоятельно рекомендуем использовать расширение Visual Studio Code . Даже если вы не используете Visual Studio Code в качестве основной среды разработки, это расширение предоставляет ряд функций, которые делают разработку схем и операций более удобной:

  • Сервер языка GraphQL, обеспечивающий проверку синтаксиса и предложения автодополнения, специфичные для Data Connect
  • Кнопки CodeLens в соответствии с вашим кодом, которые позволяют вам считывать и записывать данные из файлов определения схемы, а также выполнять запросы и мутации из определений ваших операций.
  • Автоматически синхронизируйте сгенерированные вами SDK с определениями GraphQL.
  • Упрощенная настройка локального эмулятора.
  • Упрощенное развертывание в производстве.

Используйте эмулятор Data Connect для локальной разработки

Хотя в этом руководстве показано, как развернуть схемы и операции Data Connect непосредственно в рабочей среде, вам, вероятно, не захочется вносить изменения в рабочую базу данных во время активной разработки приложения. Вместо этого настройте эмулятор Data Connect и выполняйте разработку на нём, а не в рабочей среде. Эмулятор создаёт локальный экземпляр PGlite, который ведёт себя аналогично работающему экземпляру Postgres в CloudSQL.

Узнайте, как писать схемы и операции для вашего приложения.

При разработке приложений с использованием Data Connect проектирование схем и операций является одной из первых и наиболее важных задач разработки, которые вам предстоит выполнить.

  • Gemini в консоли Firebase — это инструмент искусственного интеллекта, который может генерировать схемы Data Connect на основе описания вашего приложения на естественном языке. Этот инструмент поможет вам быстро начать работу, особенно если вы никогда раньше не работали с реляционными базами данных.
  • Кроме того, вы можете писать схемы баз данных, запросы и мутации непосредственно с помощью GraphQL. Начните со страницы «Проектирование схем Data Connect и перейдите на следующие страницы, чтобы узнать, как писать операции.