Jin's Dev Story

[Flutter] DB 없이 데이터 저장하기 - Shared preferences 본문

Web & Android/Flutter

[Flutter] DB 없이 데이터 저장하기 - Shared preferences

woojin._. 2023. 9. 22. 22:40
  • DB 없이 데이터 저장하기

⇒ 중요한 건 DB 보관

⇒ 덜 중요한 건 Shared preferences 보관

설치 셋팅

  • pubspec.yaml 파일에 추가 후 pub get 누르기
shared_preferences: ^2.0.11
  • 패지키 사용할 파일 맨 위에 코드 추가
import 'package:shared_preferences/shared_preferences.dart';
import 'dart:convert';

 

shared preferences에 데이터 저장하는 법

  • SharedPreferences.getInstance() 이거 실행해야 저장소를 불러올 수 있고
  • setString('자료이름', '저장할자료') 쓰면 저장
saveData(){
  var storage = await SharedPreferences.getInstance();
  storage.setString('name', 'john');
}

 

저장했던 자료 출력하는 법

saveData(){
  var storage = await SharedPreferences.getInstance();
  storage.setString('name', 'john');
  var result = storage.getString('name');
  print(result);
}
  • getString() 말고 get() 만 써도 출력되긴 하는데 getString() 이래야 타입 지정도 잘해줌

 숫자도 저장 가능

storage.setString('name', 'john');
storage.setBool('name', true);
storage.setInt('name', 20);
storage.setDouble('name', 20.5);
storage.setStringList('name', ['john', 'park']);

 자료 삭제

storage.remove('name');

 Map 자료 저장

  • Map 저장은 바로 못하므로 문자로 변환하여 저장 가능
  • jsonEncode() → Map을 JSON으로 변환
storage.setString('map', jsonEncode({ 'age' : 20 }) );

⇒ JSON으로 저장하면 자료 꺼내봐도 JSON임으로 JSON → Map 변환하고 싶으면 jsonDecode() 안에 넣기

var result = storage.getString('map') ?? '없는데요';
print(jsonDecode(result));