first commit

This commit is contained in:
ytc1012
2025-11-13 15:45:28 +08:00
commit 6b321890c0
54 changed files with 8412 additions and 0 deletions

View File

@@ -0,0 +1,20 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../services/background_sync_service.dart';
// BackgroundSyncService Provider
final backgroundSyncServiceProvider = Provider<BackgroundSyncService>((ref) {
final service = BackgroundSyncService();
// 当 Provider 被销毁时,停止服务
ref.onDispose(() {
service.stop();
});
return service;
});
// 后台同步状态 Provider
final backgroundSyncStatusProvider = StateProvider<bool>((ref) {
return false;
});

View 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();
});

View File

@@ -0,0 +1,20 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../services/time_tracking_service.dart';
// TimeTrackingService Provider
final timeTrackingServiceProvider = Provider<TimeTrackingService>((ref) {
return TimeTrackingService();
});
// 权限状态 Provider
final permissionStatusProvider = FutureProvider<bool>((ref) async {
final service = ref.read(timeTrackingServiceProvider);
return await service.hasPermission();
});
// 后台追踪状态 Provider
final backgroundTrackingStatusProvider = FutureProvider<bool>((ref) async {
final service = ref.read(timeTrackingServiceProvider);
return await service.isBackgroundTrackingActive();
});