[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 패키지 공식 문서에서 확인하시기 바랍니다.