dependencies:
hive: ^1.4.4+1
hive_flutter: ^0.3.1
dev_dependencies:
hive_generator: ^0.8.2
build_runner: ^1.11.5
Hive.init( PATH );
init의 매개변수로 Hive 파일들을 저장할(저장하고 있는) 디렉토리를 지정해주어야 한다.
dart 전용 앱이나 테스트 할 때는 이 메소드를 사용한다.
플러터 앱의 경우에는 이런 과정을 생략해주는
await Hive.initFlutter();
를 사용한다.
내부 구현은 아래와 같다.
Future initFlutter([String subDir]) async {
WidgetsFlutterBinding.ensureInitialized();
if (!kIsWeb) {
var appDir = await getApplicationDocumentsDirectory();
var path = appDir.path;
if (subDir != null) {
path = path_helper.join(path, subDir);
}
init(path);
}
}
경로를 getApplicationDocumentsDirectory() 로 지정해주고 init을 해준다.
웹의 경우는 init() 가 필요하지 않다. ( https://github.com/hivedb/hive/issues/224 )
기본적인 사용법은 매우 간단하다.
import 'package:hive/hive.dart';
void main() async {
//Hive.init('somePath') -> not needed in browser
var box = await Hive.openBox('testBox');
box.put('name', 'David');
print('Name: ${box.get('name')}');
}
openBox(name) 로 데이터를 넣고 뺄 box를 가져온다.
get(key) 로 가져오고
put(key, value) 로 저장한다.
Hive.close() 를 이용해서 현재 열려있는 모든 박스들을 닫는다.
https://docs.hivedb.dev/#/more/faq?id=do-i-have-to-call-hiveclose
더 이상 박스 파일이 필요하지 않을 때 박스 파일 자체를 제거해주는 방법들.