[flutter] 플러터(sqflite)를 사용한 게시판 앱 만들기

플러터(Flutter)는 구글이 개발한 크로스 플랫폼 모바일 애플리케이션 개발 프레임워크로, 단일 코드베이스에서 안드로이드 및 iOS 앱을 개발할 수 있습니다. SQFlite는 Flutter에서 사용되는 경량의 오픈소스 라이브러리로, 안드로이드 및 iOS의 SQLite 데이터베이스를 간편하게 다룰 수 있습니다.

본 블로그에서는 Flutter에서 SQFlite를 이용하여 간단한 게시판 앱을 만드는 방법에 대해 살펴보겠습니다.

목차

  1. 프로젝트 설정
  2. SQLite 데이터베이스 생성
  3. 모델 클래스 정의
  4. 데이터베이스 CRUD 기능 구현
  5. UI 구현

프로젝트 설정

우선 Flutter 프로젝트를 생성하고, sqflite 라이브러리를 pubspec.yaml 파일의 dependencies에 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  sqflite: ^2.0.0+3
  path: ^1.8.0

이후 터미널에서 flutter pub get 명령어를 실행하여 라이브러리를 다운로드 합니다.

SQLite 데이터베이스 생성

Flutter에서 SQFlite를 사용하여 SQLite 데이터베이스를 생성하는 방법은 매우 간단합니다. 먼저 데이터베이스를 오픈하고, 테이블을 생성하는 SQL 쿼리를 실행하여 데이터를 저장할 준비를 합니다.

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

Future<Database> openDatabase() async {
  return openDatabase(
    join(await getDatabasesPath(), 'board_database.db'),
    onCreate: (db, version) {
      return db.execute(
        "CREATE TABLE boards(id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT)",
      );
    },
    version: 1,
  );
}

모델 클래스 정의

다음으로는 게시글(Board)의 모델 클래스를 정의합니다.

class Board {
  final int id;
  final String title;
  final String content;

  Board({this.id, this.title, this.content});

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'title': title,
      'content': content,
    };
  }
}

데이터베이스 CRUD 기능 구현

이제 SQFlite를 이용하여 데이터베이스에 접근하고 게시글을 추가, 조회, 수정, 삭제하는 기능을 구현할 차례입니다.

class BoardDao {
  final Future<Database> database = openDatabase();

  Future<void> insertBoard(Board board) async {
    final Database db = await database;
    await db.insert(
      'boards',
      board.toMap(),
      conflictAlgorithm: ConflictAlgorithm.replace,
    );
  }

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

  // Update and delete functions
}

UI 구현

마지막으로, Flutter의 위젯을 이용하여 사용자 인터페이스(UI)를 구현하고, 데이터베이스 CRUD 기능과 연동하여 게시판 애플리케이션을 완성합니다.

// UI 구현 예시

게시판 앱의 UI 구현 및 연동은 본 블로그의 범위를 벗어나므로 생략합니다.

이상으로 Flutter와 SQFlite를 사용하여 게시판 앱을 만드는 간단한 예제에 대해 알아보았습니다.

참고 자료

플러터(Flutter) 및 SQFlite 라이브러리에 대한 더 자세한 정보는 위의 링크에서 확인할 수 있습니다.