[flutter] 플러터(sqflite)와 Firebase 연동하기

플러터(Flutter) 앱을 개발할 때 데이터를 로컬 디바이스에 저장하고 동시에 클라우드에 백업하는 것이 중요합니다. SQFlite는 플러터에서 로컬 데이터베이스를 사용하는 데 가장 많이 사용되는 라이브러리 중 하나입니다. Firebase는 클라우드 기반의 앱 개발 플랫폼으로 데이터베이스, 인증, 스토리지 등의 기능을 제공합니다. 이번 포스팅에서는 플러터에서 SQFlite와 Firebase를 연동하는 방법에 대해 알아보겠습니다.

SQFlite와 Firebase 설정하기

먼저, pubspec.yaml 파일에 sqflitefirebase_core, firebase_auth, cloud_firestore 등 필요한 Firebase 패키지를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  sqflite: ^2.0.0+4
  firebase_core: ^1.10.0
  firebase_auth: ^3.3.3
  cloud_firestore: ^3.3.0

그 다음으로, Firebase 프로젝트를 설정하고 앱에 Firebase 연동 코드를 추가합니다. Firebase 설정 방법은 Firebase 공식 문서를 참고하세요. 이후에는 SQFlite를 사용하여 로컬 데이터베이스를 설정하고 CRUD(Create, Read, Update, Delete) 기능을 구현합니다.

SQFlite와 Firebase 연동하기

로컬 데이터베이스와 클라우드 데이터베이스 간에 데이터를 동기화하는 방법은 다양한데, 주로 로컬 데이터베이스의 변경 사항을 감지하고 Firebase에 업로드하거나 그 반대로 하는 방식을 사용합니다. 이를 위해 SQFlite의 Database 클래스의 변경 이벤트를 감지하고 Firebase에 해당 변경 사항을 반영하는 로직을 작성해야 합니다. 또한, Firebase에서 데이터가 업데이트되면 해당 변경 사항을 감지하고 로컬 데이터베이스에 반영하는 코드를 작성해야 합니다.

아래는 SQFlite와 Firebase를 연동하여 데이터를 동기화하는 간단한 예시 코드입니다.

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

void syncDataWithFirebase() async {
  // SQFlite 데이터 변경 감지 로직
  Database database = await openDatabase('my_database.db');
  database.changes().listen((_) {
    // 데이터를 Firebase에 업로드하는 로직
    // ...
  });

  // Firebase 데이터 변경 감지 로직
  FirebaseFirestore.instance
      .collection('my_collection')
      .snapshots()
      .listen((QuerySnapshot snapshot) {
    // 데이터를 로컬 데이터베이스에 반영하는 로직
    // ...
  });
}

마무리

이제 플러터 앱에서 SQFlite와 Firebase를 연동하는 방법에 대해 알아보았습니다. 데이터를 로컬에 안전하게 보관하고 동시에 클라우드에 백업하는 효율적인 방법을 찾고 있다면, 위의 방법을 활용해보세요. 각 라이브러리의 공식 문서를 자세히 읽어보고 적절히 활용하는 것이 중요합니다.