เริ่มต้นใช้งาน Firebase Data Connect โดยใช้ Flutter

ในการเริ่มต้นอย่างรวดเร็วนี้ คุณจะได้สร้างและติดตั้งใช้งานฐานข้อมูลตัวอย่างขนาดเล็ก รวมถึงเข้าถึงฐานข้อมูลดังกล่าวจากส่วนหน้าของ Flutter

ข้อกำหนดเบื้องต้น

คุณจะต้องมีสิ่งต่อไปนี้เพื่อทําการเริ่มต้นอย่างรวดเร็วนี้ให้เสร็จสมบูรณ์

  • สภาพแวดล้อมที่มีการติดตั้งเครื่องมือต่อไปนี้
  • บัญชี Google

บทแนะนำ

บทแนะนำ

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 เป็นเครื่องมือ AI ที่สร้างData Connectสคีมาจากคำอธิบายภาษาธรรมชาติของแอปได้ เครื่องมือนี้ช่วยให้คุณเริ่มต้นใช้งานได้อย่างรวดเร็ว โดยเฉพาะอย่างยิ่งหากคุณไม่เคยทำงานกับ ฐานข้อมูลเชิงสัมพันธ์มาก่อน
  • หรือจะเขียนสคีมาฐานข้อมูล การค้นหา และการเปลี่ยนแปลงโดยตรงโดยใช้ GraphQL ก็ได้ เริ่มต้นที่หน้าสคีมาData Connectการออกแบบ แล้วไปที่หน้าติดตามผลเพื่อดูวิธีเขียนการดำเนินการ