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));
}
相关推荐
三少爷的鞋23 分钟前
2026 已过 1/3:事豫则立,不预则废——关于架构、协程与边界的思考
android
冬奇Lab31 分钟前
Android 15 音频子系统(八):Audio HAL 与硬件接口——音频数据的最后一公里
android·音视频开发·源码阅读
还是做不到嘛\.35 分钟前
Dvwa靶场-SQL Injection (Blind)-基于sqlmap
数据库·sql·web安全
不写八个1 小时前
PHP教程004:php链接mysql数据库
数据库·mysql·php
Dylan~~~1 小时前
深度解析Cassandra:分布式数据库的王者之路
数据库·分布式
荒川之神2 小时前
Oracle HR 模式递归函数练习(基于 employees 表)
数据库·oracle
小陈工2 小时前
2026年3月31日技术资讯洞察:AI智能体安全、异步编程突破与Python运行时演进
开发语言·jvm·数据库·人工智能·python·安全·oracle
杨云龙UP3 小时前
Linux生产环境下Oracle RMAN 备份、核查、清理与验证常用命令整理_20260330
linux·运维·服务器·数据库·oracle
橙子家3 小时前
关于列式存储(Column-base Storage)的几个要点解读
数据库
٩( 'ω' )و2603 小时前
MySQL基础
数据库·mysql