Flutter——数据库Drift开发详细教程(二)

目录

1.核心API

1.1查询数据列表分页

限制返回的结果数量limit ,从某一位置开始查询offset

dart 复制代码
///limit=10, offset=10
Future<List<TodoItem>> limitTodos(int limit, {int? offset}) {
  return (select(todoItems)..limit(limit, offset: offset)).get();
}

1.2 列表排序

使用该orderBy方法。它需要一个函数列表,用于从表中提取各个排序项。您可以使用任何表达式作为排序项。

dart 复制代码
///根据对象字段title,字母排序
  Future<List<TodoItem>> sortEntriesAlphabetically() {
    return (select(todoItems)
          ..orderBy([
            // (t) => OrderingTerm(expression: t.title, mode: OrderingMode.desc),
            (t) => OrderingTerm(expression: t.title),
          ]))
        .get();
  }
  ///下图是结果,左1  mode: OrderingMode.desc 反向排序
  ///左2 默认顺序排序

1.3推迟获取与观察

如果您希望使查询可作为Future或 来使用,则可以使用其中一个抽象基类Stream来优化返回类型;Selectable ,返回数据对象或者流类型 自行选择

dart 复制代码
// Exposes `get` and `watch`
MultiSelectable<TodoItem> pageOfTodos(int page, {int pageSize = 10}) {
  return select(todoItems)..limit(pageSize, offset: page);
}

// Exposes `getSingle` and `watchSingle`
SingleSelectable<TodoItem> selectableEntryById(int id) {
  return select(todoItems)..where((t) => t.id.equals(id));
}

// Exposes `getSingleOrNull` and `watchSingleOrNull`
SingleOrNullSelectable<TodoItem> entryFromExternalLink(int id) {
  return select(todoItems)..where((t) => t.id.equals(id));
}
相关推荐
小蒜学长13 小时前
汽车专卖店管理系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·汽车
柏油15 小时前
MySQL InnoDB 后台线程
数据库·后端·mysql
老华带你飞15 小时前
社区互助|基于SSM+vue的社区互助平台的设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·小程序·毕设·社区互助平台
_祝你今天愉快15 小时前
Android Binder 驱动 - Media 服务启动流程
android
法迪16 小时前
【Android 16】Android W 的冻结机制内核分析
android·功耗
阿华的代码王国16 小时前
【Android】OkHttp发起GET请求 && POST请求
android·java·okhttp·网络连接
WAsbry18 小时前
Android 屏幕适配系列开篇:核心概念、官方机制与主流方案
android·面试
C++chaofan18 小时前
Spring Task快速上手
java·jvm·数据库·spring boot·后端·spring·mybatis
RestCloud1 天前
从 Oracle 到 TiDB,通过ETL工具,高效实现数据拉通
数据库·oracle
阿里云大数据AI技术1 天前
[VLDB 2025]阿里云大数据AI平台多篇论文被收录
数据库·flink