[flutter] 플러터에서의 데이터 저장 및 관리

플러터 앱을 개발할 때 가장 중요한 부분 중 하나는 데이터의 저장 및 관리입니다. 사용자 정보, 설정, 로컬 데이터 등을 효율적으로 저장하고 관리하는 것은 앱의 성능과 사용자 경험에 중요한 영향을 미칩니다. 이번 글에서는 플러터에서의 데이터를 저장하고 관리하는 다양한 방법에 대해 알아보겠습니다.

1. Shared Preferences를 이용한 데이터 저장

앱 내의 간단한 설정 값이나 선호도 같은 데이터를 저장하는 가장 간단한 방법은 Shared Preferences를 이용하는 것입니다. Shared Preferences는 플러터에서 제공하는 키-값 형태의 데이터 저장소로, 앱 내에서 사용할 수 있습니다.

아래는 Shared Preferences를 이용해 설정 값을 저장하는 간단한 예제 코드입니다.

import 'package:shared_preferences/shared_preferences.dart';

void saveUserPreferences() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  prefs.setString('username', 'example_user');
  prefs.setInt('age', 25);
}

2. 파일 시스템을 이용한 데이터 저장

더 복잡한 데이터나 대량의 데이터를 저장해야 할 경우, 파일 시스템을 이용하는 것이 더 효과적일 수 있습니다. path_provider 패키지를 이용하면 간단히 앱 내부 혹은 외부의 파일 시스템에 접근하여 데이터를 저장할 수 있습니다.

아래는 path_provider를 이용해 파일에 데이터를 저장하는 예제 코드입니다.

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

void saveToFileSystem() async {
  String data = 'example data to save';

  Directory appDocDir = await getApplicationDocumentsDirectory();
  File file = File('${appDocDir.path}/data.txt');
  await file.writeAsString(data);
}

3. SQLite 데이터베이스 활용

더 복잡한 데이터 관리 및 쿼리 기능이 필요한 경우에는 SQLite 데이터베이스를 활용할 수 있습니다. sqflite 패키지를 이용하면 플러터 앱에서 손쉽게 SQLite를 사용할 수 있습니다.

아래는 sqflite를 이용해 데이터베이스에 데이터를 저장하는 예제 코드입니다.

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

void saveToDatabase() async {
  Database database = openDatabase(
    join(await getDatabasesPath(), 'app_database.db'),
    onCreate: (db, version) {
      return db.execute(
        'CREATE TABLE user(id INTEGER PRIMARY KEY, username TEXT, age INTEGER)',
      );
    },
    version: 1,
  );

  await database.insert(
    'user',
    {'username': 'example_user', 'age': 25},
    conflictAlgorithm: ConflictAlgorithm.replace,
  );
}

요약

플러터에서의 데이터 저장 및 관리는 Shared Preferences, 파일 시스템, SQLite 데이터베이스 등을 활용하여 다양한 방법으로 가능합니다. 데이터의 복잡도와 용량, 접근성 등을 고려하여 적절한 방법을 선택하여 데이터를 효율적으로 저장하고 관리하는 것이 중요합니다.

이상으로 플러터에서의 데이터 저장 및 관리에 대해 알아보았습니다.

참고 문헌:

키워드: 플러터, 데이터 저장, 데이터 관리, Shared Preferences, 파일 시스템, SQLite