가을기 Workspace

[플러터] 14일차 - 데이터베이스 처리 본문

개발/개인앱

[플러터] 14일차 - 데이터베이스 처리

가을기_ 2021. 6. 29. 22:10

현 상황에서 문제점은 앱을 껏다 켤 경우에 저장한 노트 내용이 모두 삭제된다.

데이터베이스 기능을 사용해야한다.

SQLite를 사용하자.

 

sqflite 설치

pub.dev에 들어가보자

sqflite 를 검색해보면 상단에 뜬다.

 

들어가보면,

사용가능한 플랫폼, 설치 방법 등을 확인할 수 있다.

 

 

그래서 설치 어떻게 하냐.

  • pubspec.yml
dependencies:
  flutter:
    sdk: flutter
  sqflite: ^2.0.0+3
  path: ^1.7.0

sqflite, path를 위와 같이 입력했다면

안드로이드 스튜디오 상단에 pub get을 클릭하자.

 

 

 

데이터베이스를 위해 노트에 id 추가

  • data/node.dart

노트에 id 추가

class Note {
  late int id;

  late String title;

  late String body;

  late Color color;

  Note(this.body,
      {this.id = newNoteId, this.title = '', this.color = colorDefault});

  static const newNoteId = -1;

 

테이블정보 추가

static const tableName = 'notes';

static const columnId = 'id';

static const columnTitle = 'title';

static const columnBody = 'body';

static const columnColor = 'color';

 

 

데이터베이스에 저장할 수 있게 toRow 추가

Map<String, dynamic> toRow() {
  return {
    columnTitle: this.title,
    columnBody: this.body,
    columnColor: this.color.value,
  };
}

 

 

데이터베이스에서 불러올 수 있게 fromRow 추가

Note.fromRow(Map<String, dynamic> row)
      : this(row[columnBody],
            id: row[columnId],
            title: row[columnTitle],
            color: Color(row[columnColor]));

 

Comments