You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用Hive报错:未知typeId:36,初始化后仍未解决

解决HiveError: Cannot read, unknown typeId: 36问题

核心问题分析

你遇到的错误是Hive读取本地存储时,发现了未注册typeId(36)的数据,但你并没有对应模型。Hive.initFlutter()仅负责初始化Hive运行环境,无法处理未注册typeId的问题,所以无效。

解决方案

  • 清除旧的Hive存储数据
    大概率是之前测试数据、废弃模型的数据残留导致的。可以:

    • 卸载重装应用,彻底清除本地Hive缓存;
    • 或在代码中主动删除目标box(已知问题box名称时):
      await Hive.deleteBoxFromDisk('目标box名称');
      
      若不确定问题box,可清空所有Hive数据(注意备份重要内容):
      await Hive.deleteFromDisk();
      
  • 排查第三方依赖的Hive模型
    检查pubspec.yaml中的依赖,确认是否有自带Hive模型的第三方库(如部分状态管理、工具类库)。这类库可能注册了typeId 36的adapter,需要在初始化时同步注册,或查看库文档确认配置要求。

  • 核对自定义模型的typeId
    重新检查你的18个模型,是否存在不小心将typeId设为36的情况?或是有重复的typeId配置?比如遗漏了某个标注@HiveType(typeId: 36)的模型。

  • 检查初始化顺序
    确保代码执行顺序正确:先调用await Hive.initFlutter(),然后注册所有adapter(自定义+第三方),最后再打开Hive box。先开box再注册adapter的错误顺序也会触发这类读取异常。

  • 升级Hive并重新生成adapter
    将hive和hive_flutter升级到最新稳定版,再重新运行build_runner生成adapter:

    flutter pub run build_runner build --delete-conflicting-outputs
    

内容的提问来源于stack exchange,提问作者Sachithya Rivisara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 07:52:09