Flutter

[Flutter/Hive] The box "" is already open and of type <> 오류 해결

coco_keh 2023. 2. 10. 17:02

 

main.dart 에서 openBox를 해주고 다른 dart 파일에서 오픈한 box를 바로 사용하려고 하는데 The box "" is already open and of type <> 라는 오류가 떴다. 

await Hive.initFlutter();
//category hive apply
Hive.registerAdapter(CategoryAdapter());
await Hive.openBox<Category>('category');

 

hive_impl.dart 에서 자세한 오류 상황을 살펴보니 아래 182번째 줄의 내용이었다.

 

지금 열고자 하는 box가 이미 열린 box라고 하는 걸 보면 같은 box를 사용하는 건데 인식을 못하는 듯 해서 찾아보니 이렇게 HiveObject 를 사용할 때에는 타입 명시를 해주어야 한다고 한다.

나는 main.dart에는 명시를 하고 다른 dart파일에서는 명시를 하지 않은 채로 box를 열려고 하니까 생긴 오류였다.

 

var box = Hive.box('category'); // 기존

var box = Hive.box<Category>('category'); // 수정 후

위와 같이 수정해주니 오류가 사라졌다.