본문 바로가기
Flutter

[Flutter] 플러터 - shared_preferences, secure_storeage

by s_hoonee 2023. 11. 27.
반응형

앱의 로컬 저장소에 데이터를 간단하게 저장하고 불러오려면 shared_preferences 패키지를 사용할 수 있습니다. 

shared_preferences에 대해 소개하겠습니다.

shared_preferences는 플러터에서 공식적으로 지원하는 패캐지입니다. 해당 클래스를 사용해서 저장한 값은 앱을 종료하고 다시 실행해도 데이터가 유지됩니다. 이는 shared_preferences가 앱의 로컬 저장소에 데이터를 저장하고, 이 데이터는 앱이 종료되어도 유지되기 때문입니다. 따라서 앱을 다시 실행할 때에는 이전에 저장한 데이터를 불러와 사용할 수 있습니다.

저 같은 경우 알림 기능을 on/off 상태를 관리하는 변수나 사용자의 지난 로그인 정보 등을 담는 용도로 사용합니다.

 

https://pub.dev/packages/shared_preferences

 

shared_preferences | Flutter Package

Flutter plugin for reading and writing simple key-value pairs. Wraps NSUserDefaults on iOS and SharedPreferences on Android.

pub.dev

코드 예시

 // SharedPreferences에서 데이터를 불러오는 메서드
  _loadSavedText() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      _savedText = prefs.getString('savedText') ?? '';
    });
  }

  // SharedPreferences에 데이터를 저장하는 메서드
  _saveText() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString('savedText', _controller.text);
  }

 

Android , Ios의 로컬 값 저장

내부적으로 Key-Value 관리는 알아야 해야하며, 기존의 Android 쓰이는 SharedPreferencesIOS에서 쓰는 NSUserDefaults를 매핑했기 때문에 기존에 네이티브 앱에서 플러터앱으로 변환 할 때, 플러터에서 shared_preferences패키지를 통해서 IOS의 경우 NSUserDefaults에, Android 경우 SharedPreferences저장되어 있는 값을 꺼네서 마이그레이션 수 있습니다.

마이그레이션이란?

  • 특정한 데이터의 집합을 A 위치에서 B위치로 이동하는 것
  • 만약 테이블의 컬럼에서 A랑 B가 있을 때 컬럼B를 가공해서 C라는 새로운 컬럼을 추가할 때, 해당 DB에 C를 만드는 작업을 하고, 데이터를 옮기는 작업 등 디비에 변화를 주는 작업을 의미함  

 

secure_storeage를 활용하자 !

사용방법은 플러터의 shared_preferences와 굉장히 흡사한데, 내부적으로 저장하는 값들을 암호화해서 저장하는 기능이 있습니다.

Android - sharedPreferences 저장 방식

Android에서 sharedPreferences에 데이터가 저장이 될 때 XML에 파일의 형태로 저장됩니다. 일반적인 경우는 아니지만 누군가 핸드폰, PC를 해킹해서 해당 값을 참조를 하려고 하면 xml을 그대로 들여다볼 수 있기 때문에 정말 중요한 정보라면 sharedPreferences를 지양하고 secure_storeage를 사용해야 합니다.

 

IOS는 Plist 형식이다!