参数“id”是必需的。当id为自增时

Nai*_*j29 6 dart flutter flutter-moor

当我尝试创建一个数据对象以保存在数据库中时,它向我发出警告,指出需要 ID。然而,当添加到数据库时,它应该由 moor 自动创建,因为它被标记为自动增量。我的表代码是

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

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

countdown = Countdown(date: initialDate);
Run Code Online (Sandbox Code Playgroud)

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

Zee*_*ain 6

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

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

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

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