Flutter나 React-Native에서 빌드를 하다가 Execution failed for task ':app:mergeDexDebug' 에러를 종종 볼 수 있다. minSdkVersion이 20 이하로 설정되어 있으면 multidex 지원 라이브러리를 사용해야 한다.
작고 간단한 String 값 몇 개 정도는 SQLite 를 사용하는 것은 무거울 수도 있다....
이럴 경우 SharedPreference라는 클래스를 사용하여이를 처리하는 방법이 있다.
나의 경우에는 앱에서 로그인을 하면 서버로 부터 JWT(JSON Web Tokens)을 받아와
이를 저장하고, 이후 추가적인 로그인 없이도 exp 타임 안에 계속해서 로그인 상태가
유지되어야 했다.
flutter 에서도 다행히 SharedPreference를 지원하는 패키지가 있으며
이 클래스를 Flutter에서도 사용하는 방법을 기록해두려고 한다.
우선 안드로이드에서는 아래와 같이 사용한다.
1. 저장
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
// SharedPreferences 의 데이터를 저장/편집을 위해 Editor 변수를 선언
SharedPreferences.Editor editor = pref.edit();
// key값에 value값을 저장.
// String, boolean, int, float, long 값 등 저장 가능
editor.putString(key, value);
// 메모리에 있는 데이터를 저장장치에 저장함. commit
editor.commit();
2. 불러오기
// SharedPreference 를 선언.
// 저장했을때와 같은 key로 xml에 접근.
SharedPreferences pref = getSharedPreferences(PREFERENCE, MODE_PRIVATE);
// key에 해당한 value를 불러온다.
// 두번째 매개변수는 , key에 해당하는 value값이 없을 때에는 이 값으로 대체한다.
String result = pref.getString(key, "");
한눈에 봐도 코드가 직관적이다.
SharedPreference 의 경우 Key/Value 형태로 데이터를 저장할 수 있는 데이터 구조로