ObjectBox生成器抛出FormatException异常,简化代码仍报错求解决
解决ObjectBox Generator的FormatException报错
针对你遇到的FormatException: Unexpected end of input报错,可按以下步骤排查解决:
清理缓存与生成文件
执行以下操作重置生成环境:- 运行命令清理Flutter缓存:
flutter clean - 删除项目根目录下的
.dart_tool文件夹 - 备份后删除
objectbox-model.json文件(该文件由生成器自动维护,删除后会重新生成) - 重新执行生成命令:
flutter pub run build_runner build
- 运行命令清理Flutter缓存:
修正实体类写法
你的实体类中final String jobId = ""的写法不符合ObjectBox要求,生成器需要实体类具备可实例化的条件,可修改为以下两种方式之一:import 'package:objectbox/objectbox.dart'; @Entity() class CleaningJobObjectBox { @Id() int id = 0; String jobId = ""; // 移除final修饰符,允许生成器实例化时赋值 }或者添加带默认值的构造函数:
import 'package:objectbox/objectbox.dart'; @Entity() class CleaningJobObjectBox { @Id() int id = 0; final String jobId; CleaningJobObjectBox({this.jobId = ""}); // 通过构造函数初始化final字段 }核心要求:实体类必须有公开的默认构造函数(无参或所有参数可选),生成器需要通过构造函数实例化类来分析字段。
同步依赖版本
确保pubspec.yaml中objectbox和objectbox_generator的版本完全一致,避免版本不兼容导致的异常,示例配置:dependencies: objectbox: ^2.2.1 dev_dependencies: objectbox_generator: ^2.2.1 build_runner: ^2.4.4配置完成后运行
flutter pub get更新依赖。检查项目结构
确认实体类文件位于lib目录下,生成器仅扫描lib和test目录内的实体类;同时避免文件名或路径包含特殊字符,防止生成器读取文件失败。
内容的提问来源于stack exchange,提问作者w461
相关产品推荐
相关产品推荐

