import 'package:collection/collection.dart'; import 'package:trans_lark/entity/history_model.dart'; import 'package:trans_lark/hive/hive_storage.dart'; import 'package:trans_lark/util/t_date_utils.dart'; class HistoryData { /// 私有构造函数 HistoryData._(); /// 静态常量用于保存类的唯一实例 static final HistoryData _instance = HistoryData._(); /// 工厂构造函数返回类的唯一实例 factory HistoryData() { return _instance; } /// 声明盒子 /// 注意, main函数中这个盒子已经打开, 可以进行存储操作 final _box = getHistoryBox(); /// 返回所有数据 List getAllHistory() { return _box.values.toList(); } /// 返回分组后的所有数据 Map> getMapList() { // 使用 groupBy 函数进行分组 var groupedEvents = groupBy( getAllHistory().reversed.toList(), (HistoryEntity event) => TDateUtils.formatDateMs( event.translationTime ?? TDateUtils.getNowTimestamp(), format: DateFormats.yMoD)); return groupedEvents; } /// 添加数据 Future addHistory(HistoryEntity entity, {int? index}) async { entity.translationTime = TDateUtils.getNowTimestamp(); return await _box.add(entity); } /// 删除 Future deleteHistory(int index, {HistoryEntity? entity}) async { await _box.deleteAt(index); await _box.flush(); } /// 清空所有数据 Future clearHistory() async { await _box.clear(); await _box.flush(); } }