如何使用 flutter_moor 获取 table 中的条目数?

How to get the number of entries in a table using flutter_moor?

当我向 table 添加条目时,我需要知道 table 中的元素数。

onPressed: () {
  final db = Provider.of<AppDb>(context);

  final habitCount = 0; /* Number of entries in the "Habits" table */
  db.into(db.habits)
    .insert(HabitsCompanion.insert(name: "Sleep", order: habitCount * 2 ));
},

我怎样才能尽可能轻松地做到这一点?

您可以创建 DAO 来管理所有查询。在这里,我给你一个 todos table 的例子,它在文档中使用。

在此示例中,您可以通过 queries 键创建手动查询。

@UseDao(tables: [Todos], queries: {'totalTodos': 'SELECT COUNT(*) FROM todos;'})
class TodoDao extends DatabaseAccessor<MyDatabase> with _$TodoDaoMixin  {

  final MyDatabase database;

  TodoDao(this.database) : super(database);

  Future<int> getTotalRecords() {
    return totalTodos().getSingle();
  }
}

使用方法:

Selectable<int> total = TodoDao(database).totalTodos();
total.getSingle().then((value) => print('Records: $value'));

希望你能理解这个例子。如果您有任何问题,请告诉我。