Começar a usar o Firebase SQL 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 em um front-end do Flutter.

Pré-requisitos

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

  • Um ambiente com as seguintes ferramentas instaladas:
    • Node.js com um gerenciador de pacotes de sua escolha. Este tutorial pressupõe o uso do npm.
    • A CLI do Firebase:
      npm i -g firebase-tools@latest
    • A ferramenta de linha de comando do Flutter tool.
    • A CLI do FlutterFire
      dart pub global activate flutterfire_cli
  • Uma Conta do Google.

Tutorial

Tutorial

1. Inicializar seu projeto

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

  • Criar um projeto do Firebase.
  • Não criar um esquema com o Gemini (neste tutorial, você vai usar um esquema de exemplo pré-criado ).
  • Criar uma instância do Cloud SQL.
  • Criar um modelo do Flutter.
mkdir myproj ; cd myproj
firebase login --reauth
firebase init dataconnect

2. Analisar as definições de exemplo do GraphQL

No SQL Connect, você define todos os esquemas e operações do banco de dados usando o GraphQL. Ao inicializar o projeto, a Firebase CLI 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
  }
}

3. Implantar seus esquemas e operações

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

firebase deploy --only dataconnect

4. Preencher o banco de dados com dados de amostra

Esses dados de inicialização vão fornecer algo para você analisar ao testar o app de exemplo. Note que nesta etapa você está executando um GraphQL arbitrário, que é permitido para tarefas administrativas.

firebase dataconnect:execute dataconnect/seed_data.gql

5. Gerar um SDK do cliente Dart

Esse comando usa as definições do GraphQL para gerar uma biblioteca Dart especificamente para seu banco de dados. Você usa essa biblioteca no app cliente para realizar todas as operações do 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 Dart gerado automaticamente (trecho)
class ExampleConnector {
  ListMoviesVariablesBuilder listMovies() {
    return ListMoviesVariablesBuilder(dataConnect);
  }

  // ...
}

6. Configurar um app do Flutter

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

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

cd flutter_app
flutter pub add firebase_core firebase_data_connect
flutterfire configure

7. Criar um cliente de exemplo do Flutter

Substitua o conteúdo de flutter_app/lib/main.dart por este app simples 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());
}

8. Instale o app

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

flutter run

Próximas etapas

Testar a extensão do SQL Connect para VS Code

Ao desenvolver com SQL Connect, recomendamos o uso da extensão do SQL Connect para VS 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 do SQL Connect
  • Botões do CodeLens em linha com o 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 os SDKs gerados sincronizados automaticamente com as definições do GraphQL.
  • Configuração simplificada do emulador local.
  • Implantação simplificada na produção.

Usar o SQL Connect emulador para desenvolvimento local

Embora este tutorial tenha mostrado como implantar SQL Connect esquemas e operações 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 SQL Connect emulador e faça o trabalho de desenvolvimento nele em vez da 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 CloudSQL.

Aprender a escrever esquemas e operações para seu app

Ao desenvolver apps com SQL Connect, o design dos 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 SQL Connect esquemas a partir de uma descrição em linguagem natural do seu app. Essa ferramenta pode ajudar você a começar rapidamente, principalmente se você nunca trabalhou com bancos de dados relacionais.
  • Como alternativa, você pode escrever esquemas, consultas e mutações de banco de dados diretamente usando o GraphQL. Comece com a página Criar SQL Connect esquemas e continue nas páginas de acompanhamento para aprender a escrever operações.