55 lines
1.8 KiB
Dart
55 lines
1.8 KiB
Dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||
import '../models/daily_stats.dart';
|
||
import '../models/app_usage.dart';
|
||
import '../services/statistics_service.dart';
|
||
|
||
// StatisticsService Provider
|
||
final statisticsServiceProvider = Provider<StatisticsService>((ref) {
|
||
return StatisticsService();
|
||
});
|
||
|
||
// 今日统计 Provider
|
||
final todayStatsProvider = FutureProvider<DailyStats>((ref) async {
|
||
final service = ref.read(statisticsServiceProvider);
|
||
return await service.getTodayStats();
|
||
});
|
||
|
||
// 本周统计 Provider
|
||
final weekStatsProvider = FutureProvider<List<DailyStats>>((ref) async {
|
||
final service = ref.read(statisticsServiceProvider);
|
||
return await service.getWeekStats();
|
||
});
|
||
|
||
// 本月统计 Provider
|
||
final monthStatsProvider = FutureProvider<List<DailyStats>>((ref) async {
|
||
final service = ref.read(statisticsServiceProvider);
|
||
return await service.getMonthStats();
|
||
});
|
||
|
||
// 今日统计列表 Provider(用于日视图,只返回今日数据)
|
||
final todayStatsListProvider = FutureProvider<List<DailyStats>>((ref) async {
|
||
final service = ref.read(statisticsServiceProvider);
|
||
final todayStats = await service.getTodayStats();
|
||
return [todayStats];
|
||
});
|
||
|
||
// 今日 Top 应用 Provider
|
||
final todayTopAppsProvider = FutureProvider<List<AppUsage>>((ref) async {
|
||
final service = ref.read(statisticsServiceProvider);
|
||
final now = DateTime.now();
|
||
final startOfDay = DateTime(now.year, now.month, now.day);
|
||
final endOfDay = startOfDay.add(const Duration(days: 1));
|
||
return await service.getTopApps(
|
||
startTime: startOfDay,
|
||
endTime: endOfDay,
|
||
limit: 5,
|
||
);
|
||
});
|
||
|
||
// 刷新今日统计 Provider
|
||
final refreshTodayStatsProvider = FutureProvider.family<DailyStats, void>((ref, _) async {
|
||
final service = ref.read(statisticsServiceProvider);
|
||
return await service.refreshTodayStats();
|
||
});
|
||
|