Começar a usar o Firebase Data Connect com o Flutter

Neste guia de início rápido, você vai criar e implantar um pequeno banco de dados de amostra e acessá-lo de um front-end do Flutter.

Pré-requisitos

Para concluir este guia de início rápido, você vai precisar do seguinte:

Tutorial

Tutorial

1. Criar um novo projeto do Firebase

Comece criando um projeto do Firebase no console Firebase. Em seguida, faça upgrade do projeto para o plano Blaze.

2. Inicializar seu projeto

Crie um diretório e inicialize um projeto do Firebase nele. Quando solicitado, escolha as seguintes opções:

  • Escolha o projeto criado na etapa anterior.
  • Não crie um esquema com o Gemini. Neste tutorial, você vai usar um exemplo de esquema pré-criado.
  • Crie uma instância do Cloud SQL.
  • Crie um modelo do Flutter.
mkdir myproj ; cd myproj
firebase login --reauth
firebase init dataconnect

3. Revisar os exemplos de definições do GraphQL

Em Data Connect, você define todos os esquemas e operações do banco de dados usando o GraphQL. Quando você inicializou o projeto, a CLI do Firebase criou algumas definições de exemplo para você começar.

dataconnect/schema/schema.gql (trecho)
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 (trecho)
query ListMovies @auth(level: PUBLIC) {
  movies {
    id
    title
    imageUrl
    genre
  }
}

4. Implantar seus esquemas e operações

Sempre que você fizer mudanças nos esquemas, consultas ou mutações do banco de dados, é necessário implantá-las para que as alterações entrem em vigor no banco de dados.

firebase deploy --only dataconnect

5. Propagar o banco de dados com dados de amostra

Esses dados iniciais vão dar algo para você analisar ao testar o app de exemplo. Nesta etapa, você está executando GraphQL arbitrário, o que é permitido para tarefas administrativas.

firebase dataconnect:execute dataconnect/seed_data.gql

6. Gerar um SDK de cliente do Dart

Esse comando usa suas definições do GraphQL para gerar uma biblioteca do Dart especificamente para seu banco de dados. Você usa essa biblioteca no app cliente para realizar todas as operações de banco de dados.

É possível gerar bibliotecas para várias plataformas, incluindo Kotlin para Android, Swift para iOS e JavaScript para a Web, adicionando definições a connector.yaml.

firebase dataconnect:sdk:generate
SDK do Dart gerado automaticamente (trecho)
class ExampleConnector {
  ListMoviesVariablesBuilder listMovies() {
    return ListMoviesVariablesBuilder(dataConnect);
  }

  // ...
}

7. Configurar um app do Flutter

Execute estes comandos para configurar o app Flutter e usar seu projeto do Firebase.

Quando solicitado pelo comando flutterfire, selecione o projeto do Firebase que você criou antes e escolha as plataformas que quer segmentar.

cd flutter_app
flutter pub add firebase_core firebase_data_connect
flutterfire configure

8. Escrever um cliente de exemplo do Flutter

Substitua o conteúdo de flutter_app/lib/main.dart por este app simples do Flutter.

O app conclui o acesso necessário ao banco de dados usando uma função do SDK gerado.

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. Instale o app

Inicie o servidor de desenvolvimento para ver o app de exemplo em ação.

flutter run

Próximas etapas

Teste a extensão do Visual Studio Code

Ao desenvolver com Data Connect, recomendamos usar a extensão do Visual Studio Code. Mesmo que você não use o Visual Studio Code como ambiente de desenvolvimento principal, a extensão oferece vários recursos que tornam o desenvolvimento de esquemas e operações mais conveniente:

  • Um servidor de linguagem GraphQL, que oferece verificação de sintaxe e sugestões de preenchimento automático específicas para Data Connect.
  • Botões do CodeLens em linha com seu código que permitem ler e gravar dados dos arquivos de definição de esquema e executar consultas e mutações das definições de operação.
  • Mantenha automaticamente os SDKs gerados sincronizados com suas definições do GraphQL.
  • Configuração simplificada do emulador local.
  • Implantação simplificada em produção.

Use o emulador Data Connect para desenvolvimento local.

Embora este tutorial tenha mostrado como implantar esquemas e operações Data Connect diretamente na produção, provavelmente você não vai querer fazer mudanças no banco de dados de produção enquanto estiver desenvolvendo o app. Em vez disso, configure o emulador Data Connect e faça o trabalho de desenvolvimento nele, em vez de na produção. O emulador configura uma instância local do PGlite que se comporta de maneira semelhante a uma instância ativa do Postgres no Cloud SQL.

Saiba como escrever esquemas e operações para seu app

Ao desenvolver apps com Data Connect, o design dos seus esquemas e operações é uma das primeiras e mais importantes tarefas de desenvolvimento que você vai concluir.

  • O Gemini no console do Firebase é uma ferramenta de IA que pode gerar esquemas Data Connect com base em uma descrição em linguagem natural do seu app. Essa ferramenta ajuda você a começar muito rápido, principalmente se nunca tiver trabalhado com bancos de dados relacionais.
  • Como alternativa, é possível escrever esquemas de banco de dados, consultas e mutações diretamente usando o GraphQL. Comece com a página Projetar esquemas Data Connect e continue nas páginas seguintes para aprender a escrever operações.