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

Flutter Floor数据库生成失败:无法生成database.g.dart求助

解决Floor未生成database.g.dart及相关错误的方案

错误1:要求为StreamController创建JsonConverter

这个问题是因为FloorDatabase类的changeListener字段被Floor误判为需要持久化的字段,而StreamController本身不需要被序列化。解决方法:

  • 在你的数据库类(继承FloorDatabase的抽象类)中,给changeListener字段添加@ignore注解,明确告诉Floor忽略该字段:
    @ignore
    final StreamController<String> changeListener = StreamController.broadcast();
    
  • 若实体类中误用了StreamController类型字段,同样给对应字段加上@ignore注解。

错误2:提示数据库注解未添加实体,但已配置实体列表

这类问题大多是实体类的注解或配置不规范,导致Floor无法识别实体,进而无法生成database.g.dart:

  • 检查所有实体类是否正确添加@Entity()注解,且实体类文件名符合命名规范(比如user.dart对应生成user.g.dart)。
  • 确认@Database注解中的实体列表引用正确,无拼写错误或未导入的情况,示例:
    @Database(version: 1, entities: [User, Post])
    abstract class AppDatabase extends FloorDatabase {
      UserDao get userDao;
      PostDao get postDao;
    }
    
  • 确保每个实体类都配置了主键,这是Floor实体的强制要求,示例:
    @Entity()
    class User {
      @PrimaryKey(autoGenerate: true)
      final int? id;
      final String name;
    
      User({this.id, required this.name});
    }
    

修复后重新生成database.g.dart的步骤

解决上述错误后,执行以下操作确保构建正常:

  • 在项目根目录运行构建命令:
    flutter packages pub run build_runner build
    
  • 若存在构建缓存冲突,先清理再构建:
    flutter packages pub run build_runner clean
    flutter packages pub run build_runner build --delete-conflicting-outputs
    
  • 检查pubspec.yaml依赖版本,确保floor和floor_generator版本匹配,示例:
    dependencies:
      floor: ^1.4.2
    
    dev_dependencies:
      floor_generator: ^1.4.2
      build_runner: ^2.4.4
    

内容的提问来源于stack exchange,提问作者Gaël CHEYROUSE

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:44:50