Flutter Isar集合关联问题:生成.g.dart文件失败求助
排查Isar数据库关联生成.g.dart文件的错误
在Flutter中使用Isar数据库实现InnerList和OuterList集合关联时,运行构建命令后InnerList的.g.dart文件生成成功,但OuterList的IsarLinks关联报错。
原代码
OuterList集合代码:
import 'package:dummy_database_project/models/inner_list.dart'; import 'package:isar/isar.dart'; part 'outer_list.g.dart'; @Collection() class OuterList { Id id = Isar.autoIncrement; late String title; final IsarLinks <InnerList> innerList; OuterList(this.innerList); }
InnerList集合代码:
import 'package:isar/isar.dart'; part 'inner_list.g.dart'; @Collection() class InnerList { Id id = Isar.autoIncrement; late String devicename; late String deviceUrl; late int siteId; }
问题原因
- IsarLinks初始化错误:IsarLinks不能通过构造函数参数传递,必须在构造函数初始化列表中创建实例,因为Isar需要自动管理链接的生命周期。
- 未初始化required字段:
late String title没有在构造函数中赋值,会导致类初始化失败。
修正方案
修改OuterList集合代码,正确初始化IsarLinks并处理title字段:
import 'package:dummy_database_project/models/inner_list.dart'; import 'package:isar/isar.dart'; part 'outer_list.g.dart'; @Collection() class OuterList { Id id = Isar.autoIncrement; late String title; final IsarLinks<InnerList> innerList; OuterList({required this.title}) : innerList = IsarLinks<InnerList>(); }
后续操作
替换修正后的代码后,重新运行Isar构建命令:
dart run build_runner build
内容的提问来源于stack exchange,提问作者Nikhila
相关产品推荐
相关产品推荐

