flutter - 参数“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);
当用户输入倒计时名称时,我将填写名称字段。
解决方案
根据 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
推荐阅读
- rest - gRPC 与 NATS 或 Kafka 是否有意义?
- python - 将 ONNX 模型转换为 TensorFlow Lite
- python - 通过views.py创建新模型实例,包括通过url的args
- html - 使用 python 进行 Web 抓取 - 未下载动态表数据
- python - Pandas 根据从第二个到第一个的匹配列值将列值从一个 DF 映射到另一个
- c# - .net Core Grpc 客户端无法调用 Greeter 服务
- python - 如何通过在 selenium (Python) 中按 TAB 来获取元素?
- angular - Angular 6 Event.Prevent 单选按钮的默认值
- python - OpenCV 调整大小错误(-215:断言失败)
- angular - Angular - 如何在一个请求中一次性订阅数据,并在子组件中使用它?