当我尝试创建要保存在数据库中的数据对象时,它向我发出警告,要求提供ID。但是,当is被添加到数据库时,它应该由moor自动创建,因为它被标记为autoincrement。我的表代码是
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);
当用户输入倒计时名称时,我将填写名称字段。 最佳答案
根据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
关于flutter - 参数 'id'是必需的。当id为Autoincrement时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63124692/