ObjectBox Flutter:如何实现带排序与限制的查询(替代getAll)
ObjectBox Flutter 实现无过滤条件的排序+限制查询
要实现查询全部数据、按名称升序排序、取前5条的需求,你可以通过ObjectBox的query() API完成,以下是最优实现方式:
正确代码示例
final boxListCoins = objectBoxDatabase.store.box<CoinsList>(); // 构建查询:无过滤条件(默认查全部)→ 按名称升序 → 限制返回5条 final query = boxListCoins.query() ..order(CoinsList_.name, flags: Order.ascending) ..limit(5) ..build(); final coinsList = query.find(); // 释放查询资源,避免内存泄漏 query.close();
关键说明
- 无过滤查询:
box.query()不传入任何条件时,默认会匹配集合中所有数据,无需额外配置 - 排序配置:将
CoinsList_.coinId替换为你的实体类中对应名称的字段(比如CoinsList_.name),Order.ascending指定升序(默认即为升序,该参数可省略,显式写出更清晰) - 限制条数:通过链式调用
..limit(5)直接配置,比build()后再赋值query.limit = 5更简洁 - 资源释放:查询完成后务必调用
query.close(),避免内存泄漏
紧凑写法(可选)
如果追求代码简洁,也可以用链式调用一步完成:
final boxListCoins = objectBoxDatabase.store.box<CoinsList>(); final query = boxListCoins.query() ..order(CoinsList_.name) ..limit(5) ..build(); final coinsList = query.find(); query.close();
内容的提问来源于stack exchange,提问作者Sheitak
相关产品推荐
相关产品推荐

