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

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;
}

问题原因

  1. IsarLinks初始化错误:IsarLinks不能通过构造函数参数传递,必须在构造函数初始化列表中创建实例,因为Isar需要自动管理链接的生命周期。
  2. 未初始化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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:02:16