Flutter Hive错误:名为 'cartbox' 的盒子已打开,且类型为Box
我在 main.dart 打开了Hive盒子
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Hive.initFlutter();
Hive.registerAdapter(ProductAdapter());
await Hive.openBox<Product>('cartbox');
await Firebase.initializeApp();
runApp(const MyApp());
}
然后在 CartProvider 类中访问它
final Box<Product> cartBox = Hive.box<Product>('cartbox');
我一直收到这个错误:
盒子 "cartbox" 已经打开,且类型为Box
在初始化或访问Hive盒子的方式上有什么问题吗?
解决方案
错误信息很清楚地指出,Hive盒子已经打开:
盒子 "cartbox" 已经打开,且类型为Box
我以前也遇到过这个问题,修复很简单:在尝试打开盒子之前,先检查它是否已经打开。
你可以使用 isBoxOpen 方法。在你的 main 方法中,像下面这样:
不仅仅是:
await Hive.openBox<Product>('cartbox');
使用:
if (!isBoxOpen('cartbox') {
await Hive.openBox<Product>('cartbox');
}
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。