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

升级Dart SDK后ObjectBox构建失败问题求助

解决Flutter 2.5.3 + Dart 2.14.4下ObjectBox build_runner执行失败的问题

我之前升级Flutter版本时也碰到过一模一样的ObjectBox代码生成失败问题,这个报错Bad state: lastRelationId 4:6834778133563033891 does not match any standalone relation其实是旧版本ObjectBox和新Dart版本不兼容导致的——你用的objectbox: ^1.2.0是比较早的版本,而Dart 2.14带来了一些工具链的变化,ObjectBox在后续版本才完成适配,给你几个亲测有效的解决步骤:

步骤1:升级ObjectBox依赖版本

打开你的pubspec.yaml,把ObjectBox相关依赖更新到兼容Dart 2.14的版本,建议至少升级到^1.4.0(这个版本开始正式支持Dart 2.14):

dependencies:
  objectbox: ^1.4.0
  objectbox_flutter_libs: ^1.4.0  # 不要用any,指定和objectbox一致的版本更稳妥

修改后执行flutter pub get拉取新依赖。

步骤2:清理缓存并重新生成代码

旧的缓存和生成文件可能残留问题,按顺序执行以下命令:

  • 清理项目缓存:
flutter clean
  • 重新获取依赖:
flutter pub get
  • 重新运行build_runner:
flutter pub run build_runner watch --delete-conflicting-outputs

步骤3:修复objectbox-model.json中的关系ID问题

如果上面的步骤还是报错,那就是你的objectbox-model.json里的关系ID记录出现了不一致:

  • 打开objectbox-model.json,找到lastRelationId字段(通常在文件末尾)
  • 检查文件中的relations数组,看看是否存在ID为4:6834778133563033891的条目
  • 如果没有这个条目,把lastRelationId改成当前relations数组中最大的ID值;如果没有任何关系,直接设置为0
  • 备份好model文件后再修改,然后重新运行build_runner

步骤4:极端情况:临时移除关系重新生成

如果上面都没用,可以尝试临时注释掉实体类中所有的@Relation注解,然后重新运行build_runner生成基础的.g.dart文件,之后再恢复关系注解,再次执行生成命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:52:30