Flutter ObjectBox执行build_runner后不更新,删除文件报错求助
执行flutter pub run build_runner build后ObjectBox.g.dart停止更新,删除后重建又出现Unable to read asset, could not compute transitive deps: project_data|lib/objectbox.g.dart警告,常见原因如下:
build_runner缓存或状态异常
build_runner的缓存数据可能残留了旧的依赖记录,导致它误判文件状态。先执行清理命令重置状态:flutter pub run build_runner clean清理完成后再重新运行
flutter pub run build_runner build尝试生成文件。实体类或配置文件存在语法错误
带@Entity注解的实体类、objectbox-model.json配置文件如果有语法问题,会导致代码生成流程静默失败。检查:- 实体类的注解使用是否合规(比如
@Id、@Property的参数是否正确) objectbox-model.json的JSON格式是否完整(无逗号遗漏、引号不匹配等)
- 实体类的注解使用是否合规(比如
依赖版本不兼容
objectbox_flutter_libs、objectbox_generator与Flutter SDK版本不匹配时,会引发代码生成异常。打开pubspec.yaml检查这些依赖的版本号,确保彼此兼容(比如generator版本要和核心库版本对应)。文件引用路径错误
如果data.dart中直接导入了objectbox.g.dart,删除该文件后这个引用会失效,导致build_resolvers无法解析依赖。暂时注释掉data.dart中的import 'objectbox.g.dart';语句,生成新文件后再恢复引用。文件权限问题
在桌面或移动平台上,lib目录可能存在读写权限限制,导致build_runner无法创建新的ObjectBox.g.dart文件。检查目标目录的权限:- Linux/macOS下用
ls -l lib/查看权限,确保当前用户有写入权限 - Windows下确认该文件未被杀毒软件锁定,或目录未设置只读属性
- Linux/macOS下用
内容的提问来源于stack exchange,提问作者w461

