feat: add app lifecycle refresh coordinator

This commit is contained in:
qzl
2026-03-20 15:39:44 +08:00
parent e64b9c670c
commit f4c07287bc
3 changed files with 80 additions and 0 deletions
+24
View File
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'core/constants/app_constants.dart';
import 'core/cache/cache_refresh_coordinator.dart';
import 'core/di/injection.dart';
import 'core/notifications/local_notification_service.dart';
import 'core/notifications/reminder_notification_callbacks.dart';
@@ -14,9 +15,13 @@ import 'features/auth/presentation/bloc/auth_bloc.dart';
import 'features/auth/presentation/bloc/auth_event.dart';
import 'features/auth/presentation/bloc/auth_state.dart';
import 'features/calendar/data/services/calendar_service.dart';
import 'features/calendar/data/services/calendar_repository.dart';
import 'features/calendar/reminders/reminder_action_executor.dart';
import 'features/calendar/reminders/ui/reminder_foreground_presenter.dart';
import 'features/calendar/ui/calendar_state_manager.dart';
import 'features/chat/presentation/bloc/chat_bloc.dart';
import 'features/settings/data/services/settings_user_cache.dart';
import 'features/todo/data/todo_repository.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
@@ -44,6 +49,25 @@ void main() async {
final authBloc = sl<AuthBloc>();
authBloc.add(AuthStarted());
final cacheRefreshCoordinator = CacheRefreshCoordinator(
minInterval: const Duration(minutes: 5),
onRefresh: () {
final selected = sl<CalendarStateManager>().selectedDate;
unawaited(
sl<CalendarRepository>().getDayEvents(selected, forceRefresh: true),
);
unawaited(
sl<CalendarRepository>().getMonthEvents(
DateTime(selected.year, selected.month, 1),
forceRefresh: true,
),
);
unawaited(sl<TodoRepository>().getPendingTodos(forceRefresh: true));
unawaited(sl<SettingsUserCache>().getProfile(forceRefresh: true));
},
);
WidgetsBinding.instance.addObserver(cacheRefreshCoordinator);
runApp(
LinksyApp(
authBloc: authBloc,