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

ObjectBox生成器抛出FormatException异常,简化代码仍报错求解决

解决ObjectBox Generator的FormatException报错

针对你遇到的FormatException: Unexpected end of input报错,可按以下步骤排查解决:

  • 清理缓存与生成文件
    执行以下操作重置生成环境:

    1. 运行命令清理Flutter缓存:flutter clean
    2. 删除项目根目录下的.dart_tool文件夹
    3. 备份后删除objectbox-model.json文件(该文件由生成器自动维护,删除后会重新生成)
    4. 重新执行生成命令:flutter pub run build_runner build
  • 修正实体类写法
    你的实体类中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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:42:01