Hive
NoSQL 데이터베이스면서 동시에 인메모리 데이터베이스다
데이터를 파일에 저장하기 때문에 앱의 생명주기와 관계없이 데이터가 유지되지만
앱이 실행되는 순간 파일에 저장돼 있던 모든 데이터가 메모리에 올라온다
-> 빠른 속도 자랑!
import 'package:hive_flutter/hive_flutter.dart';
플러터 하이브를 import 해줘야 더 많은 기능 사용 가능하다
void main() async {
await Hive.initFlutter();
main.dart에서 하이브 초기화
Hive box
SQL의 테이블처럼 똑같은 타입의 데이터를 모아두는 공간이다
특정 데이터를 저장하고 다루기 위해서는 박스를 열어야 한다
박스를 열 때는 어떤 타입의 데이터를 저장할지, 박스 이름을 지정해준다
for(ItemCode itemCode in ItemCode.values){
await Hive.openBox<StatModel>(itemCode.name);
}
하이브에 저장될 모든 클래스는 HiveType 어노테이션을 사용해 프로젝트에서 유일한 typeId를 지정해줘야 한다
추후 클래스의 구조가 변경됐을 때 하이브는 typeId를 기반으로 변경된 클래스를 인식한다
한 프로젝트 내에서 겹치지 않는 숫자기만 하면 된다
터미널에서 flutter pub run build_runner build 실행해 코드 제너레이션을 진행한다
하이브 box 주요 함수
add(value) | 박스에 값 추가할 때 사용 자동으로 키 값 지정됨 |
put(key, value) | 박스에 값 추가할 때 사용 첫 번재 매개변수에 키 입력하고 두 번째 매개변수에 값 입력 키 값이 자동으로 지정되지 않고 입력된 키 값으로 지정됨 |
putAt(index, value) | 특정 인덱스에 값 추가 첫 번째 매개변수에 값 추가하고 싶은 인덱스 입력하고 두 번째 매개변수에 값 입력 |
get(key) | 키 기반으로 값 가져옴 |
getAt(index) | 인덱스 기반으로 값 가져옴 |
delete(key) | 키 기반으로 값 삭제 |
deleteAt(index) | 인덱스 기반으로 값 삭제 |
clear() | 박스 내부의 모든 값 삭제 |
어느정도 앱바가 닫히면 지역, 날짜, 시간을 간단히 보여준다
return SliverAppBar(
backgroundColor: status.primaryColor,
pinned: true,
title: isExpanded ? null : Text(
"$region ${DataUtils.getTimeFromDataTime(dateTime: dateTime)}",
style: ts.copyWith(
fontFamily: "Indie",
fontWeight: FontWeight.w600,
fontSize: 24.0,
color: Colors.black54,
),
),
대기오염 정도별로 전체적인 배경 등 색상을 다르게 지정해 한 눈에 오염 정도를 확인할 수 있다
카테고리별 통계도 오른쪽 스와이프 잘 동작하고
시간별 미세먼지도, drawer도 잘 동작한다
공공데이터포털 API를 활용해 실시간으로 값을 받아와 잘 출력한다
미세먼지 측정 앱 끝!
'CS > Flutter | Dart' 카테고리의 다른 글
Session, Token, JWT, Access Token, Refresh Token (0) | 2023.09.15 |
---|---|
Tab bar, DefaultTabController, Bottom Navigation Bar (0) | 2023.09.11 |
SQL, NoSQL, Hive (7) | 2023.08.31 |
HTTP, REST API, RESTful API (2) | 2023.08.29 |
미세먼지 측정 앱 #1 - 레이아웃 (0) | 2023.08.29 |