728x90
반응형
Flutter 메모 앱이 진짜 앱이 되는 순간은, 기기가 바뀌거나 앱을 삭제해도 내 메모가 안전하게 남아있을 때다.
이번 글에서는 Firebase Firestore를 활용해 메모를 클라우드에 백업/복원하는 방법을 정리한다.
☁️ Firestore란?
Cloud Firestore는 Google Firebase에서 제공하는 NoSQL 클라우드 데이터베이스로, Flutter와의 연동이 매우 쉬우며 실시간 동기화에도 강력하다.
📦 패키지 설치 및 초기 설정
// pubspec.yaml
dependencies:
firebase_core: ^2.24.2
cloud_firestore: ^4.13.2
Firebase 프로젝트 생성 후 google-services.json
또는 GoogleService-Info.plist
를 설정해야 한다.
🧾 메모 데이터 저장 구조
class Memo {
final String id; // Firestore 문서 ID
final String content;
final String? imagePath;
final String? audioPath;
final bool isPinned;
final String tags;
Map<String, dynamic> toJson() {
return {
'content': content,
'imagePath': imagePath,
'audioPath': audioPath,
'isPinned': isPinned,
'tags': tags,
};
}
factory Memo.fromJson(String id, Map<String, dynamic> json) {
return Memo(
id: id,
content: json['content'],
imagePath: json['imagePath'],
audioPath: json['audioPath'],
isPinned: json['isPinned'] ?? false,
tags: json['tags'] ?? "",
);
}
}
📤 메모 백업하기 (업로드)
final db = FirebaseFirestore.instance;
Future<void> backupMemo(Memo memo) async {
await db.collection('memos').doc(memo.id).set(memo.toJson());
}
Firestore는 컬렉션-문서 구조를 사용하므로, 각 메모를 고유 ID로 저장하면 업데이트도 쉬워진다.
📥 메모 복원하기 (다운로드)
Future<List<Memo>> restoreMemos() async {
final snapshot = await db.collection('memos').get();
return snapshot.docs.map((doc) =>
Memo.fromJson(doc.id, doc.data())
).toList();
}
앱 시작 시 자동으로 불러오거나, 사용자 요청 시 동기화 버튼을 제공할 수 있다.
🔁 로컬 DB ↔ 클라우드 연동 흐름
- 앱에서 메모 작성 → Firestore에 저장
- Firestore에서 불러오기 → sqflite로 로컬 저장
- 변경 감지 시 양방향 동기화
사용자 UID를 활용하면 로그인 기반의 멀티 유저 메모 관리도 가능하다.
🧠 UX 팁
- 앱 설정 화면에 "클라우드 동기화" 버튼 추가
- 동기화 중 로딩 인디케이터 제공
- 네트워크 상태 확인 후 업로드/다운로드 처리
🧘 마무리하며
Flutter 메모 앱의 마지막 퍼즐은 바로 클라우드 동기화다.
기기가 바뀌어도, 앱을 재설치해도 — 기억은 안전하게 살아남는다.
당신의 기억을 구름 위에 저장하세요.
✍️ 이 글은 터미널 밖으로 나온 개발자의 Flutter 메모 앱 만들기 여정입니다.
728x90
반응형
'Flutter > Flutter 메모 앱 만들기' 카테고리의 다른 글
검색 기능 구현 — 키워드로 빠르게 메모 찾기 (0) | 2025.05.28 |
---|---|
이미지 첨부 기능 — 사진과 함께 기억하기 (0) | 2025.05.28 |
음성 메모 녹음 기능 추가하기 (0) | 2025.05.28 |
다크 모드와 배경 커스터마이징 — 메모에 감성 더하기 (0) | 2025.05.28 |
메모 태그 분류 — 주제별로 필터링하는 법 (4) | 2025.05.28 |