[flutter] 플러터(sqflite)를 활용한 일기장 앱 만들기

플러터는 모바일 애플리케이션을 개발하기 위한 Google의 오픈 소스 프레임워크입니다. Sqflite는 Flutter 애플리케이션에서 내부 SQLite 데이터베이스를 활용할 수 있게 해주는 라이브러리입니다. 이번 포스트에서는 플러터와 sqflite를 사용하여 간단한 일기장 애플리케이션을 개발하는 방법에 대해 알아보겠습니다.

목차

  1. 프로젝트 설정
  2. SQLite 데이터베이스 생성
  3. 일기 추가 기능 구현
  4. 일기 조회 및 수정 기능 구현
  5. 일기 삭제 기능 구현

프로젝트 설정

먼저 Flutter 프로젝트를 생성하고 필요한 의존성을 추가합니다. pubspec.yaml 파일에 sqflite 라이브러리를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  sqflite: ^2.0.0+4

의존성을 추가한 후에는 flutter pub get 명령어를 사용하여 라이브러리를 가져옵니다.

SQLite 데이터베이스 생성

다음으로, SQLite 데이터베이스를 생성하고 테이블을 만들기 위한 DatabaseHelper 클래스를 구현합니다.

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

class DatabaseHelper {
  static Database? _database;

  Future<Database> get database async {
    if (_database != null) {
      return _database!;
    }
    _database = await _initDatabase();
    return _database!;
  }

  Future<Database> _initDatabase() async {
    String path = join(await getDatabasesPath(), 'diary.db');
    return openDatabase(
      path,
      onCreate: (db, version) {
        return db.execute(
          'CREATE TABLE diary(id INTEGER PRIMARY KEY, title TEXT, content TEXT, date TEXT)',
        );
      },
      version: 1,
    );
  }
}

일기 추가 기능 구현

일기를 추가하는 기능은 다음과 같이 구현할 수 있습니다.

Future<int> insertDiary(Diary diary) async {
  Database db = await database;
  return await db.insert('diary', diary.toMap());
}

일기 조회 및 수정 기능 구현

일기를 조회하고 수정하는 기능은 다음과 같이 구현할 수 있습니다.

Future<List<Diary>> getDiaries() async {
  Database db = await database;
  List<Map<String, dynamic>> maps = await db.query('diary');
  return List.generate(maps.length, (i) {
    return Diary(
      id: maps[i]['id'],
      title: maps[i]['title'],
      content: maps[i]['content'],
      date: maps[i]['date'],
    );
  });
}

일기 삭제 기능 구현

일기를 삭제하는 기능은 다음과 같이 구현할 수 있습니다.

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

위와 같이 Flutter와 sqflite를 사용하여 간단한 일기장 애플리케이션을 만들어 볼 수 있습니다. 다양한 기능을 추가하여 좀 더 완성도 있는 애플리케이션을 구현해보세요.