IT기술/플러터 (flutter)

Flutter와 Firebase 연동 완벽 가이드: 인증, 실시간 DB, 스토리지 구현하기

후스파 2025. 7. 8. 17:20
반응형

플러터(Flutter) 앱 개발 시, 파이어베이스(Firebase)를 연동하면 인증, 실시간 데이터베이스, 스토리지 등 다양한 기능을 쉽게 구현할 수 있습니다.
이번 글에서는 Firebase 인증(Auth), Realtime Database, Storage를 플러터에서 연동하는 방법과 실전 예제를 단계별로 소개합니다.


Firebase 인증(Auth) 연동하기

Firebase 프로젝트 설정

  1. Firebase 콘솔에서 새 프로젝트 생성
  2. Android, iOS 앱을 각각 등록하고 google-services.json(Android), GoogleService-Info.plist(iOS) 파일을 프로젝트에 추가
  3. 인증 > 로그인 방법에서 이메일/비밀번호, 구글, 익명 로그인 등 원하는 인증 방식 활성화

플러터에 Firebase Auth 패키지 추가

dependencies:
  firebase_core: ^3.14.0
  firebase_auth: ^5.8.0

flutter pub get 실행

Firebase 초기화 및 간단한 이메일/비밀번호 로그인 구현

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_auth/firebase_auth.dart';

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

// 회원가입 예시
Future signUp(String email, String password) async {
  return await FirebaseAuth.instance.createUserWithEmailAndPassword(
    email: email,
    password: password,
  );
}

// 로그인 예시
Future signIn(String email, String password) async {
  return await FirebaseAuth.instance.signInWithEmailAndPassword(
    email: email,
    password: password,
  );
}

Firebase Realtime Database 연동하기

Realtime Database 생성 및 보안 규칙 설정

  1. Firebase 콘솔 > Realtime Database > 데이터베이스 생성
  2. 테스트 모드(개발 중) 또는 프로덕션 모드(인증된 사용자만 접근) 설정

플러터에 firebase_database 패키지 추가

dependencies:
  firebase_database: ^11.1.4

데이터 읽기/쓰기 예시

import 'package:firebase_database/firebase_database.dart';

final database = FirebaseDatabase.instance.ref();

// 데이터 쓰기
Future writeData() async {
  await database.child('messages').push().set({
    'title': 'Hello',
    'body': 'Firebase Realtime Database',
  });
}

// 데이터 읽기
void readData() {
  database.child('messages').onValue.listen((event) {
    final data = event.snapshot.value;
    print('Realtime DB data: $data');
  });
}

Firebase Storage 연동하기

Storage 활성화 및 보안 규칙 설정

  1. Firebase 콘솔 > Storage > 시작하기 클릭 후 버킷 생성
  2. 기본 보안 규칙 확인 및 필요 시 수정

플러터에 firebase_storage 패키지 추가

dependencies:
  firebase_storage: ^12.3.2

파일 업로드 및 다운로드 예시

import 'package:firebase_storage/firebase_storage.dart';
import 'dart:io';

final storage = FirebaseStorage.instance;

// 파일 업로드
Future uploadFile(File file, String path) async {
  try {
    final ref = storage.ref().child(path);
    await ref.putFile(file);
    print('Upload complete');
  } catch (e) {
    print('Upload failed: $e');
  }
}

// 다운로드 URL 가져오기
Future getDownloadURL(String path) async {
  final ref = storage.ref().child(path);
  return await ref.getDownloadURL();
}

실전 팁 및 주의사항

핵심 개발 포인트

  • Firebase 초기화는 앱 시작 시 한번
  • 보안 규칙을 꼭 확인하고, 개발 완료 후에는 테스트 모드 해제 필수
  • 비동기 처리(Future, async/await) 패턴 숙지 필요
  • 에러 처리 및 예외 상황 대비 코드 작성 권장

AndroidManifest.xml에 인터넷 권한 추가

고급 활용 팁

// 인증 상태 변화 감지
FirebaseAuth.instance.authStateChanges().listen((User? user) {
  if (user == null) {
    print('User is currently signed out!');
  } else {
    print('User is signed in!');
  }
});

// 실시간 데이터 변화 감지
database.child('users').onValue.listen((DatabaseEvent event) {
  final data = event.snapshot.value;
  // UI 업데이트 로직
});

마무리

플러터와 파이어베이스 연동은 강력한 모바일 앱 개발의 기본입니다.
인증, 실시간 데이터베이스, 스토리지 기능을 차근차근 구현하며, 사용자 경험과 앱 완성도를 높여보세요. Firebase의 강력한 백엔드 서비스와 Flutter의 크로스 플랫폼 개발 능력을 결합하면 빠르고 효율적으로 고품질 앱을 개발할 수 있습니다.
앞으로도 다양한 Firebase 기능과 플러터 패키지를 활용해 더 풍부한 앱을 만들어갈 수 있습니다.

반응형