first commit
This commit is contained in:
54
lib/providers/statistics_provider.dart
Normal file
54
lib/providers/statistics_provider.dart
Normal file
@@ -0,0 +1,54 @@
|
||||
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();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user