[dart] 데스크톱 애플리케이션 데이터 관리

데스크톱 애플리케이션을 개발하다보면 데이터 관리는 매우 중요한 부분입니다. 사용자 정보, 설정, 로컬 데이터베이스 등 다양한 데이터를 효과적으로 관리하는 방법에 대해 알아보겠습니다.

1. 사용자 정보 저장하기

애플리케이션에서 사용자 정보를 저장하기 위해서는 로컬 데이터베이스파일 시스템을 활용할 수 있습니다. Dart에서는 shared_preferences 패키지를 사용하여 간단히 사용자 정보를 저장하고 관리할 수 있습니다.

import 'package:shared_preferences/shared_preferences.dart';

void saveUserInfo(String username, int age) async {
  final prefs = await SharedPreferences.getInstance();
  prefs.setString('username', username);
  prefs.setInt('age', age);
}

Future<Map<String, dynamic>> getUserInfo() async {
  final prefs = await SharedPreferences.getInstance();
  String username = prefs.getString('username');
  int age = prefs.getInt('age');
  return {'username': username, 'age': age};
}

2. 로컬 데이터베이스 사용하기

더 복잡한 데이터를 관리하기 위해서는 로컬 데이터베이스를 사용할 수 있습니다. Flutter에서는 sqflite 패키지를 통해 SQLite 데이터베이스를 쉽게 다룰 수 있습니다. 아래는 간단한 예제입니다.

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

void main() async {
  // 데이터베이스 열기
  var databasesPath = await getDatabasesPath();
  String path = join(databasesPath, 'example.db');
  Database database = await openDatabase(path, version: 1,
      onCreate: (Database db, int version) async {
    // 테이블 생성
    await db.execute(
        'CREATE TABLE User (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)');
  });

  // 데이터 삽입
  await database.transaction((txn) async {
    int id = await txn.rawInsert(
        'INSERT INTO User(name, age) VALUES("Bob", 23)');
    print('새로운 사용자의 ID: $id');
  });

  // 데이터 조회
  List<Map> users = await database.rawQuery('SELECT * FROM User');
  print(users);

  // 데이터베이스 닫기
  await database.close();
}

3. 파일 시스템 활용하기

좀 더 유연한 데이터 저장 방법으로 파일 시스템을 활용할 수도 있습니다. Dart에서는 path_provider 패키지를 통해 파일 시스템에 접근할 수 있습니다.

import 'dart:io';
import 'package:path_provider/path_provider.dart';

void main() async {
  // 파일 시스템 접근
  Directory appDocDir = await getApplicationDocumentsDirectory();
  String appDocPath = appDocDir.path;

  // 파일 생성
  File file = File('$appDocPath/test.txt');
  file.writeAsString('안녕하세요');
}

요약

데스크톱 애플리케이션에서 데이터를 효과적으로 관리하기 위해 로컬 데이터베이스, 파일 시스템, 그리고 shared_preferences와 같은 패키지를 활용할 수 있습니다. 각각의 방법은 데이터의 복잡도와 저장/관리 요구에 따라 선택할 수 있습니다.