[flutter] Firebase Database와 플러터를 이용한 블로그 서비스 애플리케이션 만들기

목차

개요

이번 튜토리얼에서는 Firebase Database와 플러터를 사용하여 블로그 서비스 애플리케이션을 만드는 방법을 알아보겠습니다. Firebase는 실시간 데이터베이스를 제공해주므로, 실시간으로 블로그 포스트를 작성하고 업데이트할 수 있습니다.

Firebase 설정

Firebase 프로젝트를 생성하고 Firebase Realtime Database를 활성화하기 위해 Firebase 콘솔에 접속합니다. 새 프로젝트를 생성하고 앱을 추가합니다.

앱을 추가한 후에는 Firebase의 구성 파일인 google-service.json을 프로젝트에 추가해야 합니다. 이 파일은 Firebase의 설정 정보를 담고 있으며, 앱을 Firebase와 연결하는 역할을 합니다.

플러터 프로젝트 생성

Firebase가 설정되었으므로 이제 플러터 프로젝트를 생성합니다. 터미널에서 다음 명령을 실행하여 새로운 플러터 프로젝트를 생성합니다:

flutter create blog_app

프로젝트 생성이 완료되면, 생성된 blog_app 폴더로 이동합니다:

cd blog_app

Firebase Database 사용하기

Firebase Realtime Database를 플러터 앱에 사용하기 위해, 플러그인을 추가해야 합니다. pubspec.yaml 파일을 열고 다음 코드를 추가합니다:

dependencies:
  firebase_database: ^10.0.0

의존성을 추가한 후에는 패키지를 가져와야 합니다. 터미널에서 다음 명령을 실행합니다:

flutter pub get

Firebase의 데이터베이스 인스턴스를 만들어 사용할 수 있습니다. main.dart 파일을 열고 다음 코드를 추가합니다:

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

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

class MyApp extends StatelessWidget {
  final databaseRef = FirebaseDatabase.instance.reference();

  @override
  Widget build(BuildContext context) {
    // 앱 빌드 로직...
  }
}

위의 코드에서는 Firebase.initializeApp()을 사용하여 Firebase를 초기화하고, FirebaseDatabase.instance.reference()를 사용하여 데이터베이스 인스턴스를 생성합니다.

블로그 포스트 작성 기능 추가

이제 Firebase Database와 연결되었으므로, 블로그 포스트 작성 기능을 추가해보겠습니다. MyApp 위젯의 build 메서드에 다음 코드를 추가합니다:

class MyApp extends StatelessWidget {
  final databaseRef = FirebaseDatabase.instance.reference();

  void addBlogPost(String title, String content) {
    databaseRef.child("posts").push().set({
      "title": title,
      "content": content,
    });
  }

  @override
  Widget build(BuildContext context) {
    // 앱 빌드 로직...
  }
}

위의 코드에서는 addBlogPost 메서드를 추가하여 새로운 블로그 포스트를 Firebase Database에 추가합니다. databaseRef.child("posts").push().set() 메서드를 사용하여 새로운 포스트를 데이터베이스에 저장합니다.

블로그 포스트 목록 화면 구성

이제 작성한 블로그 포스트를 화면에 표시하는 기능을 추가해보겠습니다. MyApp 위젯의 build 메서드를 수정하여 포스트 목록을 가져오고 화면에 표시합니다:

class MyApp extends StatelessWidget {
  final databaseRef = FirebaseDatabase.instance.reference();

  Stream<Event> getPostStream() {
    return databaseRef.child("posts").onValue;
  }

  @override
  Widget build(BuildContext context) {
    return StreamBuilder<Event>(
      stream: getPostStream(),
      builder: (BuildContext context, AsyncSnapshot<Event> snapshot) {
        if (snapshot.hasData) {
          return ListView.builder(
            itemCount: snapshot.data.snapshot.value.length,
            itemBuilder: (BuildContext context, int index) {
              var post = snapshot.data.snapshot.value[index];
              return ListTile(
                title: Text(post["title"]),
                subtitle: Text(post["content"]),
              );
            },
          );
        } else {
          return CircularProgressIndicator();
        }
      },
    );
  }
}

위의 코드에서는 getPostStream 메서드를 추가하여 Firebase Database로부터 포스트 목록을 가져옵니다. StreamBuilder 위젯을 사용하여 데이터를 비동기적으로 가져오고, ListView.builder 위젯을 사용하여 목록을 화면에 표시합니다.

마무리

이제 Firebase Database와 플러터를 사용하여 블로그 서비스 애플리케이션을 만들 수 있습니다. Firebase의 실시간 데이터베이스를 활용하면 실시간으로 데이터를 업데이트하고 표시할 수 있습니다. 이를 활용하여 다양한 기능을 추가해보세요!

참고 자료