본문 바로가기
플러터(flutter)

Flutter 기초 - SharedPreference 사용 방법

by 기계공학 주인장 2023. 5. 28.
반응형

안드로이드와 마찬가지로 Flutter에도 SharedPreference가 존재한다.

 

하지만, 다른 점도 존재하는데 어떤 점이 다른지 알아본다.


SharedPreference 플러그인 설치하기

다음 링크를 참조하거나

 

https://pub.dev/packages/shared_preferences/install

 

shared_preferences | Flutter Package

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

pub.dev

 

다음 코드를 pubspec.yaml에 추가한다.

 

dependencies:
  shared_preferences: ^2.1.1

플러터의 SharedPreference 사용하기

공식 가이드를 보면 다음과 같이 되어있습니다.

 

// Obtain shared preferences.
final SharedPreferences prefs = await SharedPreferences.getInstance();

// Save an integer value to 'counter' key.
await prefs.setInt('counter', 10);
// Save an boolean value to 'repeat' key.
await prefs.setBool('repeat', true);
// Save an double value to 'decimal' key.
await prefs.setDouble('decimal', 1.5);
// Save an String value to 'action' key.
await prefs.setString('action', 'Start');
// Save an list of strings to 'items' key.
await prefs.setStringList('items', <String>['Earth', 'Moon', 'Sun']);

 

큰 특징으로는 전부 await를 사용하고 있다는 것입니다.

 

그렇기 때문에 함수 내에서 사용할 때는 async를 사용해야합니다.

 

또한 안드로이드와 다른 차이점은 SharedPreference에 이름이 없다는 것입니다.

 

안드로이드에는 SharedPreference에 이름을 지정해서 데이터의 종류를 구분해서 저장할 수 있었지만

 

플러터에서는 단 하나의 SharedPreference를 사용해서 모든 데이터를 관리해야 합니다.

 

함수에서 SharedPreference를 초기화할 때는 다음과 같은 방법으로 할 수 있습니다.

 

  // 함수에 async를 사용해야한다.
  Future initPrefs() async {
    pref = await SharedPreferences.getInstance();
    // 안드로이드와 달리 stringList 형태의 데이터를 저장 가능
    final likedToons = pref.getStringList(prefsLikedWebToon);
    if (likedToons != null) {
      if (likedToons.contains(widget.id)) {
        setState(() {
          thisWebtoonIsLiked = true;
        });
      }
    } else {
      // 데이터 저장하기
      pref.setStringList(prefsLikedWebToon, []);
    }
  }

 

참고로 SharedPreference를 사용해서 가져오는 모든 데이터는 nullable입니다.


 

 

플러터(flutter) - 온보딩 화면 만들기

온보딩 화면이란 앱을 처음 실행했을 때 부여주는 앱의 사용 방법이나 소개 페이지를 의미한다. 안드로이드에서는 주로 viewPager나 Fragment를 사용해서 구현했는데 플러터에서는 패키지를 사용해

android-developer.tistory.com

 

반응형


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


댓글