개요
Flutter로 앱을 개발하다보면, 웹의 localStorage나 리액트 네이티브의 AsyncStorage처럼, 사용자의 단말기에 간단하게 데이터를 저장하고 싶을 경우가 생깁니다. 이때, Flutter에서 사용할 수 있는 패키지가 Shared preferences
입니다.
Flutter의 공식문서에서도 사용법이 자세히 나와 있으니 참고하시기 바랍니다.
- 공식 문서: Store key-value data on disk
Shared preferences 패키지 설치
Shared preferences
는 사용자의 단말기에 key-value
형태로 간단하게 데이터를 저장할 수 있도록 도와줍니다. 그럼 Shared preferences를 사용하기 위해, 다음 명령어를 실행하여 패키지를 설치합니다.
flutter pub add shared_preferences
Shared preferences의 사용법
Shared preferences
에는 int
, double
, bool
, string
, 그리고 List<String>
데이터를 저장할 수 있습니다. 그럼, Shared preferences
을 사용해서 데이터의 읽기/쓰기/삭제에 대해서 알아봅시다.
데이터 저장
Shared preferences
를 사용하여 다음과 같이 데이터를 저장할 수 있습니다.
...
import 'package:shared_preferences/shared_preferences.dart';
...
final prefs = await SharedPreferences.getInstance();
prefs.setInt('counter', 0);
prefs.setDouble('width', 20.5);
prefs.setBool('isAdmin', true);
prefs.setString('userName', 'dev-yakuza');
prefs.setStringList('alphabet', ['a', 'b', 'c', 'd']);
데이터 읽기
Shared preferences
를 사용하여 다음과 같이 데이터를 읽을 수 있습니다.
...
import 'package:shared_preferences/shared_preferences.dart';
...
final prefs = await SharedPreferences.getInstance();
final counter = prefs.getInt('counter') ?? 0;
final width = prefs.getDouble('width') ?? 10.5;
final isAdmin = prefs.getBool('isAdmin') ?? false;
final userName = prefs.getString('userName') ?? '';
final alphabet = prefs.getStringList('alphabet') ?? [];
final data = prefs.get('userInfo') : {};
데이터 삭제
다음과 같이 Shared preferences
을 사용하여 저장한 데이터를 삭제할 수 있습니다.
...
import 'package:shared_preferences/shared_preferences.dart';
...
final prefs = await SharedPreferences.getInstance();
prefs.remove('counter');
또는 다음과 같이 모든 데이터를 삭제할 수 있습니다.
prefs.clear();
유닛 테스트
Shared preferences
패키지를 사용하는 코드를 유닛 테스트(Unit Test)할 때, 다음과 같이 Shared preferences
가 제공하는 setMockInitialValues
을 사용하여 데이터를 초기화 할 수 있습니다.
...
import 'package:shared_preferences/shared_preferences.dart';
...
setUp(() {
SharedPreferences.setMockInitialValues({});
});
완료
이것으로 Flutter에서 간단한 데이터를 사용자 단말기에 저장하기 위해 Shared preferences
를 사용하는 방법에 대해서 알아보았습니다. Shared preferences
패키지는 기본적으로 간단한 데이터를 저장하기 위해 설계되었습니다. 따라서 큰 데이터를 저장하기에는 적합하지 않습니다. 단순히 사용자가 선택한 설정 옵션 등을 저장할 때, 사용하시는 것을 추천드립니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.