import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'core/config/env.dart'; import 'core/di/injection.dart'; import 'core/router/app_router.dart'; import 'core/theme/app_theme.dart'; import 'core/notifications/local_notification_service.dart'; import 'features/auth/presentation/bloc/auth_bloc.dart'; import 'features/auth/presentation/bloc/auth_event.dart'; import 'features/calendar/data/services/calendar_service.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await configureDependencies(); final notificationService = sl(); await notificationService.initialize(); final authBloc = sl(); authBloc.add(AuthStarted()); try { final now = DateTime.now(); final end = now.add(const Duration(days: 90)); final events = await sl().getEventsForRange(now, end); await notificationService.rebuildUpcomingReminders(events); } catch (_) { // ignore startup sync failures } runApp(LinksyApp(authBloc: authBloc)); } class LinksyApp extends StatelessWidget { final AuthBloc authBloc; const LinksyApp({super.key, required this.authBloc}); @override Widget build(BuildContext context) { return BlocProvider.value( value: authBloc, child: MaterialApp.router( title: 'Linksy', debugShowCheckedModeBanner: false, theme: AppTheme.light, routerConfig: createAppRouter(authBloc), ), ); } }