我有一个Flutter应用程序,它使用Hive数据库进行本地存储。该应用程序在大多数设备上运行良好;然而,我一直在小米设备上遇到“未找到盒子”错误。Firebase Crashlytics的错误消息如下:
"Fatal Exception: io.flutter.plugins.firebase.crashlytics.FlutterError: HiveError: Box not found. Did you forget to call Hive.openBox()?. Error thrown Instance of 'ErrorDescription'."
我已经实现了一个FutureBuilder来打开所有盒子并在访问它们之前设置初始值,这个问题仍然只存在于小米设备上.
该apk在使用AWS Farm View的小米模拟器中进行了测试,并在亲戚的小米设备中进行了测试,但Google Play应用程序在Xiome真实的设备上崩溃。
Crashlytics谈论的错误来自主屏幕,当我检查if (authProvider.login)
登录来自:int get login => SettingsBox.getLogin();
下面是SettingsBox类:
class SettingsBox {
static Box getBox() {
String name = 'boxName';
return Hive.box(name);
}
static Future<void> openBox() async {
String name = 'boxName';
/*ommiting opening box using encryptionCipher*/
if (Hive.box(name).get('myLoginKey') == null) {
await setLogin(false);
}
}
static Future<void> setLogin(bool l) async {
String keyLogin = 'myLoginKey';
await getBox().put(keyLogin, l);
}
static bool getLogin() {
String keyLogin = 'myLoginKey';
return getBox().get(keyLogin);
}
}
在我运行的futureBuilder中
System. out. println();
我无法在其他设备上重现这个问题,也无法直接访问小米设备进行测试。我正在寻求有关如何解决此问题的建议或收集更多信息以进一步调试它。任何帮助或见解将不胜感激!
我试图检查Crashnalitics上的错误,我没有要求存储权限,因为数据库是在应用程序文件夹。
1条答案
按热度按时间wgxvkvu91#
如果用户
1.打开“设置”应用程序。
1.点击“应用程序”
1.在已安装的应用程序列表中查找并轻按该应用程序。
1.点击“存储”
1.点击“清除数据”
1.点击“清除所有数据”
用户可以毫无问题地打开应用程序。我不知道为什么有必要。如果有人知道答案我想读。可能是我最后一个使用Hive数据库的应用程序。