import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'data/repositories/hero_repository.dart'; import 'services/api_service.dart'; import 'presentation/home_page/bloc/hero_list_bloc.dart'; import 'components/screens/hero_list_screen.dart'; import 'package:provider/provider.dart'; import 'presentation/home_page/bloc/hero_search_bloc.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import '../../Components/locale/l10n/app_locale.dart'; void main() { final apiService = ApiService(baseUrl: 'https://assets.deadlock-api.com'); final heroRepository = HeroRepository(apiService: apiService); runApp(MyApp(heroRepository: heroRepository)); } class MyApp extends StatelessWidget { final HeroRepository heroRepository; const MyApp({Key? key, required this.heroRepository}) : super(key: key); @override Widget build(BuildContext context) { return Provider( create: (_) => heroRepository, child: BlocProvider( create: (_) => HeroListBloc(heroRepository)..add(FetchHeroes()), child: Builder( builder: (context) { final heroListBloc = context.read(); return BlocBuilder( builder: (context, state) { if (state is HeroListLoaded) { return MultiBlocProvider( providers: [ BlocProvider( create: (_) => HeroSearchBloc(allHeroes: state.heroes), ), ], child: MaterialApp( home: HeroListScreen(), ), ); } return MaterialApp( localizationsDelegates: AppLocale.localizationsDelegates, supportedLocales: AppLocale.supportedLocales, home: Scaffold( body: Center( child: CircularProgressIndicator(), ), ), ); }, ); }, ), ), ); } }