首页 > 解决方案 > 参数“id”是必需的。当 id 为自动增量时

问题描述

当我尝试创建一个数据对象以保存在我的数据库中时,它给了我一个警告,说需要 id。但是,当添加到数据库时,应该由 moor 自动创建,因为它被标记为自动增量。我的表格代码是

class Countdowns extends Table {
  IntColumn get id => integer().autoIncrement()();
  TextColumn get name => text().withLength(min: 1, max: 100)();
  DateTimeColumn get date => dateTime()();
}

忽略此警告是否安全?如果没有,我该怎么办?我创建数据对象的代码是

countdown = Countdown(date: initialDate);

当用户输入倒计时名称时,我将填写名称字段。

标签: flutterdartflutter-moor

解决方案


根据 Moor 文档 - 具有默认值的列(通过 autoIncrement 或使用默认值)在生成的数据类中仍标记为 @required。这是因为它们旨在代表一整行,并且每一行都将具有这些值。在表示部分行时使用伴随行,例如插入或更新。

因此,您可以使用 Companions 来插入/更新数据。同伴也是自动生成的,您可以使用 TableNameCompanion.insert() 构造函数来插入数据。

您可以在官方 moor 文档上阅读更多信息。https://moor.simonbinder.eu/docs/getting-started/advanced_dart_tables/

Moor github 上还有一个官方问题,作者解释了使用@required自动增量的原因。https://github.com/simolus3/moor/issues/548


推荐阅读