import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:moonwell_launcher/app/home_screen/bloc/home_screen_bloc.dart'; import 'package:moonwell_launcher/app/home_screen/home_screen_content.dart'; import 'package:moonwell_launcher/app/login_screen/login_screen.dart'; import 'package:moonwell_launcher/features/launcher/application/client_sync_use_case.dart'; import 'package:moonwell_launcher/features/launcher/data/game_installation_service.dart'; import 'package:moonwell_launcher/features/launcher/data/launcher_api_client.dart'; import 'package:moonwell_launcher/features/launcher/domain/entities/client_manifest.dart'; import 'package:moonwell_launcher/features/launcher/domain/entities/launcher_session.dart'; import 'package:moonwell_launcher/features/preferences/domain/repositories/preferences_repository.dart'; import 'package:moonwell_launcher/service_container.dart'; class HomeScreen extends StatelessWidget { const HomeScreen({super.key, required this.session, required this.manifest}); final LauncherSession session; final ClientManifest manifest; @override Widget build(BuildContext context) { return BlocProvider( create: (context) => HomeScreenBloc( clientSyncUseCase: getIt(), gameInstallationService: getIt(), launcherApiClient: getIt(), preferencesRepository: getIt(), session: session, manifest: manifest, ), child: BlocListener( listenWhen: (previous, current) => previous.model.isAuthenticated && !current.model.isAuthenticated, listener: (context, state) async { await Navigator.of(context).pushReplacement( PageRouteBuilder( pageBuilder: (_, _, _) => const LoginScreen(), transitionsBuilder: (_, animation, _, child) { return FadeTransition(opacity: animation, child: child); }, transitionDuration: const Duration(milliseconds: 250), ), ); }, child: const HomeScreenContent(), ), ); } }