본문으로 이동

플러터:데이터 저장(간단한 데이터)

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 2025년 11월 26일 (수) 02:10 판

틀:플러터 Dart:개요 플러터에 대한 지식 분류

  1. 플러터:개요
    1. 플러터:VSCode
    2. 플러터:안드로이드 스튜디오
  2. 플러터:실행
  3. 플러터:개념 잡기
    1. 플러터:화면 하나 만들기
    2. 플러터:변하는 화면(StatefulWidget)
    3. 플러터:화면 전환(화면 쌓기, 하단 네비게이션 바)
    4. 플러터:화면 전환(Drawer)
    5. 플러터:입력 관련
      1. 플러터:버튼
      2. 플러터:키보드 입력
      3. 플러터:슬라이더
    6. 플러터:그래프 그리기(fl chart)
    7. 플러터:데이터 저장(간단한 데이터)
    8. 플러터:인증(Firebase 인증)(미완)
    9. 플러터:인증(OAuth2)(미완)
  4. 권한 사용
    1. 플러터:마이크 입력
  5. 위젯
    1. 플러터:아이콘
    2. 플러터:레이아웃 계열 위젯
    3. 플러터:네비게이션 계열 위젯
    4. 플러터:버튼
    5. 플러터:상태관리(미완)
  6. 플러터:DB연결
    1. 플러터:Firebase(미완)
    2. 플러터:MySQL(미완)
  7. 디자인
    1. 플러터:테마
    2. 플러터:앱바
  8. 플러터:배포
    1. 플러터:배포(안드로이드)(미완)
  9. 플러터:참고자료
  10. 플러터:위젯
    1. 플러터:공간배치용 위젯
  11. 플러터:구글 AdMob(미완)
  12. 플러터:라이브러리
    1. 플러터:logger

개요

Flutter에서 화면을 이동하거나 앱을 재시작해도 데이터를 유지하려면 상태 관리와 로컬 저장 방법을 이해해야 한다.

Hive는 **빠르고 강력한 로컬 데이터베이스**로, 여러 개의 데이터나 구조화된 모델을 저장하기에 적합하다. SharedPreferences보다 성능이 뛰어나고, 대량 데이터(수백~수천 개) 저장에도 안정적이다.

Hive의 특징

  • 매우 빠름 (binary 기반)
  • 리스트, Map, 객체까지 저장 가능
  • 앱 재시작 후에도 유지됨
  • 오프라인 DB 역할 수행
  • iOS/Android 모두 지원

Hive 저장 위치

운영체제 설명 비고
안드로이드 /data/data/<패키지명>/files/hive/
  • 앱만 접근 가능
  • 파일 앱에서 보이지 않음
  • 앱 삭제 시 데이터도 삭제됨
  • 앱 종료/재부팅해도 유지됨
iOS Application/<UUID>/Documents/hive/
  • 앱 내부 전용 저장 공간
  • 앱 종료 후에도 유지
  • 앱 삭제 시 같이 삭제

Hive로 데이터 유지하기

숫자, 문자열, 리스트, 객체 등 다양한 구조를 저장 가능.

준비

dependencies:
  hive: ^2.2.3
  hive_flutter: ^1.1.0

dev_dependencies:
  hive_generator: ^2.0.0
  build_runner: ^2.4.0

초기화

App 시작 시 Hive 초기화 필요.

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Hive.initFlutter();
  await Hive.openBox('decibelBox');
  runApp(MyApp());
}

저장하기

var box = Hive.box('decibelBox');
box.put('decibel', 85.0);
  • `'decibel'` key에 85 저장
  • Hive는 binary 저장 형식이라 빠르고 안정적임

불러오기

var box = Hive.box('decibelBox');
double decibel = box.get('decibel', defaultValue: 0.0);

왜 Hive를 사용하는가?

SharedPreferences 단점

  • 단순 key-value만 저장 가능
  • XML 기반 → 속도 느림
  • 데이터가 많아지면 성능 급격히 저하
  • 구조화된 데이터 저장 어려움

Hive 장점

  • 구조화된 데이터 저장 가능 (클래스 형태도 저장)
  • 수백~수천 개 데이터 저장해도 빠름
  • 로컬 DB처럼 사용 가능
  • 대량 데이터 + 리스트 + 정렬/삭제 필요할 때 적합

결론

  • 단순 앱 설정값 → SharedPreferences 가능
  • 여러 개의 기록, 리스트, 구조화된 데이터 → **Hive 사용이 정답**