flutter - 参数 'id'是必需的。当id为Autoincrement时

标签 flutter dart flutter-moor

当我尝试创建要保存在数据库中的数据对象时,它向我发出警告,要求提供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/

相关文章:

http - Flutter http请求上传mp3文件

flutter-moor - flutter-moor ORM 中是否有枚举列?

sqlite - 如何在 flutter moor 中为双值创建列

unit-testing - 为 http.post 创建单元测试的问题

java - Flutter.io Android 许可证状态未知

flutter - 如何在 Dart 中将 RGB 像素图转换为 ui.Image?

windows - SQLite 错误参数或其他 API 误用

flutter - 通过多个小部件从模态传递数据

firebase - 如何使用 StreamBuilder 将 firebase firestore 中的数据检索到 flutter 中并使用 ListView.builder 显示值?

dart - 使扩展 FAB 居中