Flutter中使用Hive存储对象列表时build_runner构建失败求助
问题描述
我尝试在Flutter中使用Hive存储对象列表,我的ChatModel(chat_model.dart)类代码如下:
import 'package:flutter/material.dart'; import 'package:hive_flutter/hive_flutter.dart'; part 'chat_model.g.dart'; @immutable @HiveType(typeId: 1) class ChatModel extends HiveObject { @HiveField(0) final String id; @HiveField(1) final String message; @HiveField(2) final bool isMe; ChatModel( {required this.id, required this.message, required this.isMe}); }
执行命令flutter packages pub run build_runner build --delete-conflicting-outputs时,出现错误:
[SEVERE] Nothing can be built, yet a build was requested.
且chat_model.g.dart文件无法生成,请问有什么解决建议吗?
解决建议
- 核对依赖配置:确保
pubspec.yaml中已添加所有必要依赖,执行flutter pub get同步:dependencies: hive: ^2.2.3 hive_flutter: ^1.1.0 dev_dependencies: build_runner: ^2.4.4 hive_generator: ^1.1.5 - 检查文件路径与命名:
chat_model.dart和待生成的chat_model.g.dart必须在同一目录,part 'chat_model.g.dart';的路径、大小写要完全匹配实际文件名。 - 清理缓存后重建:删除项目根目录下的
.dart_tool文件夹,依次执行flutter clean、flutter pub get,再重新运行构建命令。 - 验证注解正确性:
@HiveType(typeId: 1)的typeId不能与其他Hive实体重复,所有字段必须正确标记@HiveField且序号唯一,类需正确继承HiveObject。 - 切换到watch模式排查:使用
flutter packages pub run build_runner watch --delete-conflicting-outputs命令,实时监听文件变化,获取更详细的错误提示。
内容的提问来源于stack exchange,提问作者Ballazx
相关产品推荐
相关产品推荐

