이제는 대부분의 모바일 어플리케이션들이 서버에서 데이터를 가져와야 하며, 사용자 로컬에 데이터를 저장해야 합니다. Flutter 앱을 개발 할 때, 사용자의 데이터를 저장하기 위해서는 로컬 데이터베이스를 사용해야 합니다.
이 글에서는 Flutter 어플리케이션에서 SQLite 데이터베이스를 다루는 방법을 알아보겠습니다.
SQLite 데이터베이스와 Flutter
SQLite는 관계형 데이터베이스로, 파일 기반 데이터베이스 관리 시스템입니다. Flutter는 내장 SQLite를 사용하여 데이터베이스에 접근하고 관리할 수 있도록 합니다.
Flutter에서의 SQLite 사용하기
Flutter에서 SQLite 패키지를 사용하여 데이터베이스를 다룰 수 있습니다. sqflite
패키지는 Flutter에서 SQLite 데이터베이스에 접근하기 위한 API를 제공합니다.
먼저 pubspec.yaml
파일에 sqflite
패키지를 추가합니다.
dependencies:
sqflite: ^2.0.0+4
그 다음 pubspec.yaml
파일을 업데이트 한 후 터미널에서 flutter pub get
을 실행하여 패키지를 설치합니다.
flutter pub get
그런 다음 간단한 CRUD(Create, Read, Update, Delete) 연산을 위한 SQLite 도우미 클래스를 작성할 수 있습니다.
예시:
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
class DBHelper {
DBHelper._();
static final DBHelper instance = DBHelper._();
static Database? _database;
Future<Database> get database async {
if (_database != null) return _database!;
_database = await _initDB();
return _database!;
}
Future<Database> _initDB() async {
String path = join(await getDatabasesPath(), 'app_database.db');
return await openDatabase(path, onCreate: _createDB, version: 1);
}
Future<void> _createDB(Database db, int version) async {
await db.execute('''
CREATE TABLE tasks(
id INTEGER PRIMARY KEY,
title TEXT,
description TEXT,
completed INTEGER
)
''');
}
Future<int> insertTask(Task task) async {
final db = await database;
return await db.insert('tasks', task.toMap());
}
Future<List<Task>> fetchTasks() async {
final db = await database;
final List<Map<String, dynamic>> tasks = await db.query('tasks');
return tasks.map((e) => Task.fromMap(e)).toList();
}
// 나머지 Update, Delete 메소드들을 추가할 수 있습니다.
}
이제 성공적으로 데이터베이스를 다루기 위한 도우미 클래스를 작성했습니다.
결론
Flutter에서 SQLite 데이터베이스를 사용하는 방법에 대해 알아보았습니다. 앞으로 이를 응용하여 실제 프로젝트에 적용하여 영구적인 데이터를 저장하고 다룰 수 있습니다.
참고 자료:
이상으로 SQLite 데이터베이스와 Flutter의 연동 방법에 대해 알아보았습니다.