[flutter] 플러터(sqflite)와의 오프라인 데이터 저장 방법

이번 포스트에서는 플러터 앱에서 오프라인으로 데이터를 저장하고 관리하는 방법에 대해 알아볼 것입니다. 플러터에서는 sqflite 패키지를 사용하여 오프라인 데이터베이스를 구현할 수 있습니다.

1. sqflite 패키지란?

sqflite는 플러터에서 SQLite 데이터베이스를 사용하기 위한 공식 패키지입니다. Sqflite 패키지를 사용하면 간단한 코드로 안정적이고 효율적인 오프라인 데이터베이스를 구축할 수 있습니다.

2. sqflite 패키지 설치

먼저, pubspec.yaml 파일에 sqflite 패키지를 추가합니다.

dependencies:
  sqflite: ^2.0.0

이후 터미널에서 flutter pub get 명령어를 실행하여 패키지를 설치합니다.

3. 데이터베이스 생성 및 관리

데이터베이스를 생성하고 관리하는 코드는 다음과 같이 작성할 수 있습니다.

import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';

Future<Database> openDatabase() async {
  var databasesPath = await getDatabasesPath();
  String path = join(databasesPath, 'example.db');

  return openDatabase(
    path,
    version: 1,
    onCreate: (Database db, int version) async {
      // 데이터베이스 스키마 및 초기 데이터 설정
      await db.execute(
          "CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT, value INTEGER)");
    },
  );
}

위 코드에서는 openDatabase() 함수를 통해 데이터베이스를 열고, 처음에 데이터베이스를 생성할 때 필요한 스키마를 정의하고 초기 데이터를 설정하고 있습니다.

4. 데이터 CRUD 작업

다음은 데이터를 추가, 조회, 수정, 삭제하는 CRUD 작업에 대한 예제 코드입니다.

Future<void> insertData(Database db) async {
  await db.insert(
    'test',
    {'name': 'A', 'value': 123},
    conflictAlgorithm: ConflictAlgorithm.replace,
  );
}

Future<List<Map<String, dynamic>>> getData(Database db) async {
  return await db.query('test');
}

Future<int> updateData(Database db) async {
  return await db.update(
    'test',
    {'name': 'B'},
    where: 'value = ?',
    whereArgs: [123],
  );
}

Future<int> deleteData(Database db) async {
  return await db.delete(
    'test',
    where: 'id = ?',
    whereArgs: [1],
  );
}

위와 같이 sqflite를 사용하여 오프라인 데이터베이스를 구현할 수 있으며, 이를 통해 앱의 데이터를 효율적으로 저장하고 관리할 수 있습니다.

더 많은 내용을 학습하려면 sqflite 패키지 공식 문서에서 확인하시기 바랍니다.