[flutter] Firebase_core를 사용하여 플러터 앱과 Firebase 서비스 연동하기

이번 포스트에서는 플러터 앱과 Firebase 서비스를 연동하기 위해 firebase_core 패키지를 사용하는 방법을 알아보겠습니다. firebase_core 패키지는 Firebase 서비스와의 연결을 관리하는 데 사용되며, 다른 Firebase 패키지와 함께 사용됩니다.

1. Firebase 프로젝트 설정

Firebase 서비스를 사용하려면 먼저 Firebase 콘솔에서 프로젝트를 설정해야 합니다. 새로운 프로젝트를 생성하거나 기존 프로젝트에 Firebase를 추가할 수 있습니다. Firebase 콘솔에 접속하여 프로젝트를 설정하세요.

2. firebase_core 패키지 추가

firebase_core 패키지를 사용하기 위해서는 프로젝트의 pubspec.yaml 파일에 의존성을 추가해야 합니다. 아래와 같이 firebase_core 패키지를 추가하세요.

dependencies:
  flutter:
    sdk: flutter
  firebase_core: ^1.0.2

의존성을 추가한 후에는 터미널에서 flutter packages get 명령어를 사용하여 패키지를 가져오세요.

3. Firebase 설정 파일 추가

Firebase를 사용하기 위해 앱에 Firebase 설정 파일을 추가해야 합니다. Firebase 콘솔의 프로젝트 설정 페이지에서 다운로드할 수 있는 google-services.json 파일을 앱의 경로에 추가하세요.

4. 코드에서 Firebase 초기화하기

이제 앱 코드에서 Firebase를 초기화해야 합니다. main.dart 파일을 열고 다음 코드를 추가하세요.

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Firebase App',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Firebase App'),
        ),
        body: Center(
          child: Text('Hello Flutter Firebase'),
        ),
      ),
    );
  }
}

main() 함수에서 await Firebase.initializeApp()를 호출하여 Firebase를 초기화합니다. 이후 MyApp 위젯을 실행하여 앱을 시작합니다.

5. Firebase 서비스 사용하기

이제 Firebase 서비스를 사용할 준비가 되었습니다. 예를 들어, Firestore 데이터베이스를 사용해보겠습니다. firebase_core 패키지로 Firestore를 초기화하고 데이터를 읽어오는 예제 코드는 다음과 같습니다.

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // Firestore 컬렉션 참조
    CollectionReference users =
        FirebaseFirestore.instance.collection('users');

    return MaterialApp(
      title: 'Flutter Firebase App',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Firebase App'),
        ),
        body: Center(
          child: StreamBuilder<QuerySnapshot>(
            // users 컬렉션의 데이터를 스트림으로 받아옴
            stream: users.snapshots(),
            builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
              if (snapshot.hasError) {
                return Text('오류: ${snapshot.error}');
              }

              if (snapshot.connectionState == ConnectionState.waiting) {
                return CircularProgressIndicator();
              }

              // users 컬렉션의 모든 문서를 출력
              return ListView(
                children: snapshot.data!.docs.map((DocumentSnapshot document) {
                  Map<String, dynamic> data = document.data() as Map<String, dynamic>;
                  return ListTile(
                    title: Text(data['name']),
                    subtitle: Text(data['email']),
                  );
                }).toList(),
              );
            },
          ),
        ),
      ),
    );
  }
}

위의 코드에서는 Firestore 데이터베이스의 users 컬렉션에서 데이터를 스트림으로 받아와서 ListView로 출력하는 예제입니다.

이제 Firebase 서비스를 사용하여 여러 가지 기능을 추가할 수 있습니다. firebase_core 패키지는 Firebase와의 연결을 관리하므로 다른 Firebase 패키지를 사용할 때도 함께 추가해야 합니다.

더 자세한 정보는 Firebase Core 패키지 문서를 참조하세요.