[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
와 같은 패키지를 활용할 수 있습니다. 각각의 방법은 데이터의 복잡도와 저장/관리 요구에 따라 선택할 수 있습니다.