본문 바로가기
프로그래밍/Flutter

[Flutter] 디바이스에 key:value 저장하기(shared preferences)

by yonmoyonmo 2021. 9. 30.

여러분

앱개발하면서

데이터베이스 쓰기는 귀찮은데,

반영구적으로 자잘한 정보를 유지하고 싶으실 때 있으시죠?

브라우저라면 웹스토리지를 쓰면 됩니다.

하지만 Flutter로 개발 중인 앱이라면?

Shared Preferences를 써보자

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

 

https://flutter.dev/docs/cookbook/persistence/key-value

 

Store key-value data on disk

How to use the shared_preferences package to store key-value data.

flutter.dev

사용법도 아주 잘 정리 되어 있습니다.

사용법

int, double, bool, string, List<String> 타입의 데이터를 key:value 형식으로 저장할 수 있습니다.

간단하게 어떻게 저장하고 불러오고 삭제할 수 있는지 볼까요?

패키지 임포트(사용되는 파일마다 필요함)

import 'package:shared_preferences/shared_preferences.dart';

저장하기

final prefs = await SharedPreferences.getInstance();
prefs.setInt('age', 22);
prefs.setDouble('height', 175.5);
prefs.setBool('smoker', true);
prefs.setString('name', 'cyberschool');
prefs.setStringList('family', ['엄마', '아빠', '아들', '손자']);

//dart 코드입니다

불러오기

final prefs = await SharedPreferences.getInstance();
final age = prefs.getInt('age') ?? 90;
final height = prefs.getDouble('height') ?? 175.5;
final smoker = prefs.getBool('smoker') ?? false;
final name = prefs.getString('name') ?? '';
final family = prefs.getStringList('family') ?? [];

//dart 코드입니다.

삭제하기

final prefs = await SharedPreferences.getInstance();
prefs.remove('name');

아주 간단하지요?

저장, 삭제한 값은 어플리케이션을 종료한 뒤에도 유지됩니다.

Shared Preferences 관련 TMI

1. 이 기능은 안드로이드가 원조 맛집이라고 합니다. 로컬 데이터베이스 저장 관리 시스템을 이용해 원시타입 데이터만 소량 저장할 수 있도록 만들어 놓은 API라고 합니다.

2. IOS에서는 UserDefaults라고 부르고 쓴다고 합니다.

3. 진짜 중요한 정보는 백엔드에 잘 모셔놓아야 합니다. 완전히 영속성을 보장하지는 않는다고 합니다.

 

 

 

댓글