perf(app): Phase 2 前端性能优化 5 项 — 8b-D01/D02/D03/M02/N01
- 8b-D01: Isar 添加 authorId+dateEpoch 复合索引和 dateEpoch 单独索引 - 8b-D02: getJournals 分页改为 DB 层 .offset().limit() 替代 Dart 层 sublist - 8b-D03: home_bloc monthCount 改用日期范围独立查询(不受分页限制) - 8b-M02: 笔画光栅化改为 BBox 裁剪 — 短笔画不再创建全画布尺寸图像 - _CacheEntry 增加 offset 字段记录 BBox 偏移 - _rasterizeStroke 计算包围盒 + 4px padding - _compositeIncremental 使用 offset 定位 - 8b-N01: SyncEngine enqueue 合并同一资源的操作 - create+update → create(最新数据) - update+update → update(最新数据) - update+delete → delete - create+delete → 取消(不发送) - 注意: Isar .g.dart 需运行 build_runner 重新生成
This commit is contained in:
@@ -64,19 +64,18 @@ class IsarJournalRepository implements JournalRepository {
|
||||
query = query.and().classIdEqualTo(classId);
|
||||
}
|
||||
|
||||
// 按日期降序排列
|
||||
var results = await query
|
||||
.sortByDateEpochDesc()
|
||||
.findAll();
|
||||
|
||||
// 分页
|
||||
// 按日期降序排列 + DB 层分页(替代全量加载后 Dart 层 sublist)
|
||||
if (page != null && pageSize != null) {
|
||||
final start = (page - 1) * pageSize;
|
||||
if (start >= results.length) return [];
|
||||
final end = (start + pageSize).clamp(0, results.length);
|
||||
results = results.sublist(start, end);
|
||||
final offset = (page - 1) * pageSize;
|
||||
final results = await query
|
||||
.sortByDateEpochDesc()
|
||||
.offset(offset)
|
||||
.limit(pageSize)
|
||||
.findAll();
|
||||
return results.map(_fromCollection).toList();
|
||||
}
|
||||
|
||||
final results = await query.sortByDateEpochDesc().findAll();
|
||||
return results.map(_fromCollection).toList();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user