Flutter应用小米设备Hive数据库异常:Box未找到错误求助
小米设备上Flutter Hive应用「Box not found」问题求助
问题现象
- 开发的Flutter应用采用Hive实现本地存储,多数设备运行正常,但仅小米设备出现「Box not found」错误,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'.
- APK在AWS Device Farm的小米模拟器、亲友的小米设备测试均正常,但Google Play分发的版本在真实小米设备上崩溃。
- Crashlytics显示错误触发于首页的
if (authProvider.login)代码处,其中login属性来自int get login => SettingsBox.getLogin();。
已做操作
- 通过FutureBuilder在访问盒子前预执行
await SettingsBox.openBox();,确保盒子已打开并设置初始值,但问题仍存在。 - 确认Hive数据库存储在应用私有目录,未申请外部存储权限。
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); } }
当前困境
无法在其他设备复现问题,也无小米设备可直接测试,寻求解决该问题或进一步调试的建议。
内容的提问来源于stack exchange,提问作者geneilson freire
相关产品推荐
相关产品推荐

