Pierwsze kroki z Firebase Data Connect w Flutterze

W tym krótkim wprowadzeniu utworzysz i wdrożysz małą przykładową bazę danych oraz uzyskasz do niej dostęp z poziomu interfejsu Flutter.

Wymagania wstępne

Aby ukończyć ten samouczek, potrzebujesz:

Samouczek

Samouczek

1. Tworzenie nowego projektu Firebase

Zacznij od utworzenia nowego projektu Firebase w Firebase konsoli. Następnie przenieś projekt na abonament Blaze.

2. Zainicjuj projekt

Utwórz nowy katalog i zainicjuj w nim projekt Firebase. Po wyświetleniu pytania wybierz te opcje:

  • Wybierz projekt utworzony w poprzednim kroku.
  • Nie twórz schematu za pomocą Gemini (w tym samouczku użyjesz gotowego przykładowego schematu).
  • Utwórz nową instancję Cloud SQL.
  • Utwórz szablon Fluttera.
mkdir myproj ; cd myproj
firebase login --reauth
firebase init dataconnect

3. Sprawdzanie przykładowych definicji GraphQL

W Data Connect definiujesz wszystkie schematy i operacje bazy danych za pomocą GraphQL. Podczas inicjowania projektu interfejs Firebase CLI utworzył kilka przykładowych definicji, które pomogą Ci zacząć.

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

4. Wdrażanie schematów i operacji

Za każdym razem, gdy wprowadzasz zmiany w schematach bazy danych, zapytaniach lub mutacjach, musisz je wdrożyć, aby zmiany zostały zastosowane w bazie danych.

firebase deploy --only dataconnect

5. Wypełnianie bazy danych przykładowymi danymi

Te dane początkowe pozwolą Ci sprawdzić, jak działa przykładowa aplikacja. Pamiętaj, że na tym etapie wykonujesz dowolne zapytanie GraphQL, co jest dozwolone w przypadku zadań administracyjnych.

firebase dataconnect:execute dataconnect/seed_data.gql

6. Generowanie pakietu SDK klienta w Dart

To polecenie używa definicji GraphQL do wygenerowania biblioteki Dart specjalnie dla Twojej bazy danych. Używasz tej biblioteki w aplikacji klienckiej do wykonywania wszystkich operacji na bazie danych.

Możesz generować biblioteki na różne platformy, w tym Kotlin na Androida, Swift na iOS i JavaScript na potrzeby internetu, dodając definicje do pliku connector.yaml.

firebase dataconnect:sdk:generate
Automatycznie wygenerowany pakiet SDK Dart (fragment)
class ExampleConnector {
  ListMoviesVariablesBuilder listMovies() {
    return ListMoviesVariablesBuilder(dataConnect);
  }

  // ...
}

7. Konfigurowanie aplikacji Flutter

Uruchom te polecenia, aby skonfigurować aplikację Flutter do korzystania z projektu Firebase.

Gdy pojawi się prośba o wykonanie polecenia flutterfire, wybierz utworzony wcześniej projekt Firebase i platformy, na których chcesz wyświetlać reklamy.

cd flutter_app
flutter pub add firebase_core firebase_data_connect
flutterfire configure

8. Tworzenie przykładowego klienta Fluttera

Zastąp zawartość pliku flutter_app/lib/main.dart tą prostą aplikacją Fluttera.

Zwróć uwagę, że aplikacja uzyskuje dostęp do bazy danych za pomocą funkcji z wygenerowanego pakietu 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. Wypróbuj aplikację

Uruchom serwer programistyczny, aby zobaczyć działanie przykładowej aplikacji.

flutter run

Dalsze kroki

Wypróbuj rozszerzenie Visual Studio Code

Podczas tworzenia aplikacji za pomocą Data Connect zdecydowanie zalecamy korzystanie z rozszerzenia Visual Studio Code. Nawet jeśli nie używasz Visual Studio Code jako głównego środowiska programistycznego, to rozszerzenie udostępnia kilka funkcji, które ułatwiają tworzenie schematów i operacji:

  • Serwer języka GraphQL, który zapewnia sprawdzanie składni i sugestie autouzupełniania specyficzne dla Data Connect.
  • Przyciski CodeLens w linii kodu, które umożliwiają odczytywanie i zapisywanie danych z plików definicji schematu oraz wykonywanie zapytań i mutacji z definicji operacji.
  • Automatycznie synchronizuj wygenerowane pakiety SDK z definicjami GraphQL.
  • Uproszczona konfiguracja lokalnego emulatora.
  • Uproszczone wdrażanie w środowisku produkcyjnym.

Korzystanie z Data Connect emulatora na potrzeby lokalnego programowania

W tym samouczku pokazaliśmy, jak wdrażać schematy i operacje Data Connect bezpośrednio w środowisku produkcyjnym, ale prawdopodobnie nie będziesz chcieć wprowadzać zmian w bazie danych produkcyjnej podczas aktywnego tworzenia aplikacji. Zamiast tego skonfiguruj Data Connect emulator i pracuj nad nim, a nie nad środowiskiem produkcyjnym. Emulator konfiguruje lokalną instancję PGlite, która działa podobnie do aktywnej instancji Postgres w Cloud SQL.

Dowiedz się, jak pisać schematy i operacje dla aplikacji

Podczas tworzenia aplikacji za pomocą Data Connect projektowanie schematów i operacji jest jednym z pierwszych i najważniejszych zadań programistycznych.

  • Gemini w konsoli Firebase to narzędzie AI, które może generować Data Connect schematy na podstawie opisu aplikacji w języku naturalnym. To narzędzie może pomóc Ci szybko zacząć, zwłaszcza jeśli nigdy wcześniej nie pracowałeś(-aś) z relacyjnymi bazami danych.
  • Możesz też pisać schematy baz danych, zapytania i mutacje bezpośrednio za pomocą GraphQL. Zacznij od strony Projektowanie schematów Data Connect i przejdź do kolejnych stron, aby dowiedzieć się, jak pisać operacje.