플러터:데이터 저장(간단한 데이터): 두 판 사이의 차이
보이기
편집 요약 없음 |
|||
| 4번째 줄: | 4번째 줄: | ||
Flutter에서 화면을 이동하거나 앱을 재시작해도 데이터를 유지하려면 상태 관리와 로컬 저장 방법을 이해해야 한다. | Flutter에서 화면을 이동하거나 앱을 재시작해도 데이터를 유지하려면 상태 관리와 로컬 저장 방법을 이해해야 한다. | ||
Hive는 **빠르고 강력한 로컬 데이터베이스**로, 여러 개의 데이터나 구조화된 모델을 저장하기에 적합하다. | |||
SharedPreferences보다 성능이 뛰어나고, 대량 데이터(수백~수천 개) 저장에도 안정적이다. | |||
=== | === Hive의 특징 === | ||
* 매우 빠름 (binary 기반) | |||
* 리스트, Map, 객체까지 저장 가능 | |||
* 앱 재시작 후에도 유지됨 | |||
* 오프라인 DB 역할 수행 | |||
* iOS/Android 모두 지원 | |||
== Hive 저장 위치 == | |||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
| 13번째 줄: | 21번째 줄: | ||
!비고 | !비고 | ||
|- | |- | ||
| | |안드로이드 | ||
|/data/data/<패키지명>/ | |/data/data/'''<패키지명>'''/files/hive/ | ||
| | | | ||
* | * 앱만 접근 가능 | ||
* | * 파일 앱에서 보이지 않음 | ||
* | * 앱 삭제 시 데이터도 삭제됨 | ||
* | * 앱 종료/재부팅해도 유지됨 | ||
|- | |- | ||
|iOS | |iOS | ||
| | |Application/<UUID>/Documents/hive/ | ||
| | | | ||
* 앱 내부 전용 저장 공간 | * 앱 내부 전용 저장 공간 | ||
* 앱 종료 후에도 유지 | * 앱 종료 후에도 유지 | ||
* 앱 삭제 시 같이 삭제 | * 앱 삭제 시 같이 삭제 | ||
|} | |} | ||
== | == Hive로 데이터 유지하기 == | ||
숫자, 문자열, 리스트, 객체 등 다양한 구조를 저장 가능. | |||
=== 준비 === | === 준비 === | ||
<syntaxhighlight lang="yaml"> | <syntaxhighlight lang="yaml"> | ||
dependencies: | dependencies: | ||
hive: ^2.2.3 | |||
hive_flutter: ^1.1.0 | |||
dev_dependencies: | |||
hive_generator: ^2.0.0 | |||
build_runner: ^2.4.0 | |||
</syntaxhighlight> | |||
=== 초기화 === | |||
App 시작 시 Hive 초기화 필요. | |||
<syntaxhighlight lang="dart"> | |||
void main() async { | |||
WidgetsFlutterBinding.ensureInitialized(); | |||
await Hive.initFlutter(); | |||
await Hive.openBox('decibelBox'); | |||
runApp(MyApp()); | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== 저장하기 === | === 저장하기 === | ||
<syntaxhighlight lang="dart"> | <syntaxhighlight lang="dart"> | ||
var box = Hive.box('decibelBox'); | |||
box.put('decibel', 85.0); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
* `'decibel'` key에 85 저장 | * `'decibel'` key에 85 저장 | ||
* | * Hive는 binary 저장 형식이라 빠르고 안정적임 | ||
=== 불러오기 === | === 불러오기 === | ||
<syntaxhighlight lang="dart"> | <syntaxhighlight lang="dart"> | ||
double decibel = | var box = Hive.box('decibelBox'); | ||
double decibel = box.get('decibel', defaultValue: 0.0); | |||
</syntaxhighlight> | </syntaxhighlight> | ||
* | |||
* | == 왜 Hive를 사용하는가? == | ||
=== SharedPreferences 단점 === | |||
* 단순 key-value만 저장 가능 | |||
* XML 기반 → 속도 느림 | |||
* 데이터가 많아지면 성능 급격히 저하 | |||
* 구조화된 데이터 저장 어려움 | |||
=== Hive 장점 === | |||
* 구조화된 데이터 저장 가능 (클래스 형태도 저장) | |||
* 수백~수천 개 데이터 저장해도 빠름 | |||
* 로컬 DB처럼 사용 가능 | |||
* 대량 데이터 + 리스트 + 정렬/삭제 필요할 때 적합 | |||
== 결론 == | |||
* 단순 앱 설정값 → SharedPreferences 가능 | |||
* 여러 개의 기록, 리스트, 구조화된 데이터 → **Hive 사용이 정답** | |||
2025년 11월 26일 (수) 02:10 판
- 플러터:개요
- 플러터:실행
- 플러터:개념 잡기
- 권한 사용
- 위젯
- 플러터:DB연결
- 플러터:Firebase(미완)
- 플러터:MySQL(미완)
- 디자인
- 플러터:배포
- 플러터:배포(안드로이드)(미완)
- 플러터:참고자료
- 플러터:위젯
- 플러터:구글 AdMob(미완)
- 플러터:라이브러리
개요
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 사용이 정답**