[Flutter][Dart] shared_preferences를 통한 데이터 관리

Jay·2023년 7월 13일

Flutter

목록 보기
5/5

앱을 재시작하거나 종료할 때 데이터가 날아가는 이유는 데이터가 RAM(Random Access Memory)이라는 휘발성 메모리에 저장되어있기 때문입니다. 데이터를 RAM이 아닌 다른 곳에 저장해 앱을 재시작해도 이전 데이터를 유지하는 방법을 알아보겠습니다.

  1. 기기에 파일로 저장하기
    내용을 파일로 저장해두고 앱을 시작할 때 파일을 읽어오는 방식입니다. (패키지 : shared_preferences)
  2. 기기 데이터베이스에 저장하기
    모든 폰에는 SQLite라는 데이터베이스(데이터 저장 전문 프로그램)가 있습니다. 이 데이터베이스를 이용하여 데이터를 보존할 수 있습니다. 좀 더 복잡한 데이터를 기기에 저장할 수 있습니다. (패키지 : sqflite)
  3. 다른 컴퓨터(서버)에 저장하기
    인터넷을 통해 다른 컴퓨터에 데이터를 전송하여 저장하는 방식입니다.

여기선 shared_preferences 패키지를 이용하여 1. 기기에 파일로 저장 방법을 배워보도록 하겠습니다.

1. shared_preferences 패키지 추가하기

먼저, pubspec.yaml 파일에 shared_preferences 패키지를 추가해야 합니다. 아래와 같이 종속성 섹션에 패키지를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.8

그리고 패키지를 가져오기 위해 flutter pub get 명령을 실행하여 패키지를 다운로드합니다.

2. SharedPreferences 인스턴스 생성하기

shared_preferences 패키지를 사용하기 위해 SharedPreferences 인스턴스를 생성해야 합니다. 일반적으로 앱 초기화 단계에서 인스턴스를 생성하는 것이 좋습니다.

import 'package:shared_preferences/shared_preferences.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SharedPreferences prefs = await SharedPreferences.getInstance();

  // 이후 작업을 수행합니다.
}

SharedPreferences.getInstance() 메서드를 호출하여 인스턴스를 얻을 수 있습니다. 이때 await 키워드를 사용하여 비동기로 처리합니다.

3. 데이터 저장 및 검색하기

이제 SharedPreferences 인스턴스를 사용하여 데이터를 저장하고 검색할 수 있습니다. 일반적으로 문자열, 정수, 부울 등 다양한 유형의 데이터를 저장할 수 있습니다.

// 데이터 저장하기
prefs.setString('key', 'value');
prefs.setInt('count', 10);
prefs.setBool('isLogged', true);

// 데이터 검색하기
String? value = prefs.getString('key');
int? count = prefs.getInt('count');
bool? isLogged = prefs.getBool('isLogged');

위의 예시에서는 setString(), setInt(), setBool() 메서드를 사용하여 데이터를 저장하고, getString(), getInt(), getBool() 메서드를 사용하여 데이터를 검색합니다. 특정 키에 대한 데이터를 얻을 때는 해당 메서드를 사용하면 됩니다. 반환값은 해당 유형에 맞게 자동으로 캐스팅됩니다.

4. 데이터 제거하기

저장된 데이터를 제거할 때는 remove() 메서드를 사용합니다.

prefs.remove('key');

위의 예시에서는 'key'라는 키에 해당하는 데이터를 제거합니다.

5. 데이터 확인하기

저장된 데이터를 확인하기 위해서는 SharedPreferences 인스턴스의 getKeys() 메서드를 사용하여 키 목록을 얻을 수 있습니다.

Set<String> keys = prefs.getKeys();
print(keys);
위의 예시에서는 저장된 모든 키를 출력합니다.

shared_preferences 패키지를 사용하면 간단하게 Flutter 앱에서 영구 데이터를 저장하고 검색할 수 있습니다. 사용자 설정, 앱 설정, 작은 데이터 등을 저장하기에 적합한 방법입니다. 이를 활용하여 앱의 사용자 경험을 향상시킬 수 있습니다.

profile
Junior Developer

0개의 댓글