[flutter] 플러터(sqflite)에서의 데이터 모델링 방법

Flutter 애플리케이션에서 데이터 모델링은 애플리케이션의 상태를 효과적으로 관리하고 데이터베이스와 상호 작용하는 데 중요한 부분입니다. 이 게시물에서는 Flutter에서 데이터 모델을 어떻게 정의하고 SQFlite를 사용하여 데이터를 저장하고 검색하는지 살펴볼 것입니다.

데이터 모델 정의하기

데이터 모델은 일반적으로 Dart 클래스로 정의됩니다. 예를 들어, 간단한 할 일 목록을 저장하는 데이터 모델을 정의해 보겠습니다.

class Todo {
  int id;
  String title;
  bool isCompleted;

  Todo({this.id, this.title, this.isCompleted});

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'title': title,
      'isCompleted': isCompleted ? 1 : 0,
    };
  }

  Todo.fromMap(Map<String, dynamic> map) {
    id = map['id'];
    title = map['title'];
    isCompleted = map['isCompleted'] == 1;
  }
}

위의 코드에서 Todo 클래스는 할 일을 표현하는 모델을 정의하며, toMap()fromMap() 메서드는 데이터베이스와 상호 작용할 때 사용됩니다.

SQFlite를 사용하여 데이터 저장 및 검색

SQFlite는 플러터에서 SQLite를 사용하기 위한 플러그인으로, 로컬 데이터베이스를 관리하는 데 사용됩니다. 데이터 모델을 사용하여 데이터베이스에 데이터를 저장하고 검색하는 방법은 다음과 같습니다.

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

Future<Database> openDatabase() async {
  var documentsDirectory = await getApplicationDocumentsDirectory();
  var path = join(documentsDirectory.path, "todo.db");

  return openDatabase(path, version: 1,
      onCreate: (Database db, int version) async {
    await db.execute("CREATE TABLE Todo ("
        "id INTEGER PRIMARY KEY,"
        "title TEXT,"
        "isCompleted INTEGER"
        ")");
  });
}

Future<void> saveTodo(Todo todo) async {
  final Database db = await openDatabase();
  await db.insert('Todo', todo.toMap(),
      conflictAlgorithm: ConflictAlgorithm.replace);
}

Future<List<Todo>> getTodos() async {
  final Database db = await openDatabase();
  final List<Map<String, dynamic>> maps = await db.query('Todo');
  return List.generate(maps.length, (i) {
    return Todo(
      id: maps[i]['id'],
      title: maps[i]['title'],
      isCompleted: maps[i]['isCompleted'] == 1,
    );
  });
}

위의 코드에서는 openDatabase()를 통해 데이터베이스를 열고, saveTodo()를 통해 데이터를 저장하고, getTodos()를 통해 데이터를 가져오는 방법을 보여줍니다.

이제 Flutter 애플리케이션에서 데이터 모델링 및 SQFlite를 사용하여 데이터를 저장하고 검색하는 방법을 이해했습니다. 데이터 모델링은 애플리케이션의 상태 및 데이터 관리에 있어 중요한 부분이므로, 데이터 모델과 데이터베이스와의 상호 작용을 잘 이해하는 것이 중요합니다.

참고 자료