Translate-Flutter/lib/storage/history_data.dart
fengshengxiong 70d663706c 第一版
2024-07-12 11:26:44 +08:00

60 lines
1.5 KiB
Dart

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