반응형

플러터(Flutter) 앱 개발 시, 파이어베이스(Firebase)를 연동하면 인증, 실시간 데이터베이스, 스토리지 등 다양한 기능을 쉽게 구현할 수 있습니다.
이번 글에서는 Firebase 인증(Auth), Realtime Database, Storage를 플러터에서 연동하는 방법과 실전 예제를 단계별로 소개합니다.
Firebase 인증(Auth) 연동하기
Firebase 프로젝트 설정
- Firebase 콘솔에서 새 프로젝트 생성
- Android, iOS 앱을 각각 등록하고
google-services.json(Android),GoogleService-Info.plist(iOS) 파일을 프로젝트에 추가 - 인증 > 로그인 방법에서 이메일/비밀번호, 구글, 익명 로그인 등 원하는 인증 방식 활성화
플러터에 Firebase Auth 패키지 추가
dependencies:
firebase_core: ^3.14.0
firebase_auth: ^5.8.0flutter 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 생성 및 보안 규칙 설정
- Firebase 콘솔 > Realtime Database > 데이터베이스 생성
- 테스트 모드(개발 중) 또는 프로덕션 모드(인증된 사용자만 접근) 설정
플러터에 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 활성화 및 보안 규칙 설정
- Firebase 콘솔 > Storage > 시작하기 클릭 후 버킷 생성
- 기본 보안 규칙 확인 및 필요 시 수정
플러터에 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 기능과 플러터 패키지를 활용해 더 풍부한 앱을 만들어갈 수 있습니다.
반응형
'IT기술 > 플러터 (flutter)' 카테고리의 다른 글
| Flutter 화면 전환과 데이터 전달 완벽 가이드: Navigator 활용법부터 고급 라우팅까지 (2) | 2025.07.09 |
|---|---|
| Flutter 로컬 데이터 저장 완벽 가이드: Shared Preferences vs SQLite vs Hive 비교 (0) | 2025.07.09 |
| Flutter API 연동 및 네트워크 통신 완벽 가이드: http vs dio 패키지 비교 (0) | 2025.07.07 |
| Flutter 성능 최적화 완벽 가이드: 최신 기법으로 앱 성능 극대화하기 (2) | 2025.07.07 |
| Flutter 상태 관리 솔루션 완벽 비교: Provider vs Bloc vs Riverpod vs GetX (0) | 2025.07.06 |