import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../presentation/home_page/bloc/hero_detail_bloc.dart'; import '../../data/dtos/hero_dto.dart'; import '../../data/repositories/hero_repository.dart'; import '../../Components/locale/l10n/app_locale.dart'; class HeroDetailScreen extends StatelessWidget { final int heroId; const HeroDetailScreen({Key? key, required this.heroId}) : super(key: key); @override Widget build(BuildContext context) { final heroRepository = context.read(); // Получаем текущую локализацию final locale = AppLocale.of(context)!; return BlocProvider( create: (_) => HeroDetailBloc(heroRepository)..add(FetchHeroDetails(heroId)), child: Scaffold( appBar: AppBar( title: Text(locale.heroDetailsTitle), ), body: BlocBuilder( builder: (context, state) { if (state is HeroDetailLoading) { return const Center(child: CircularProgressIndicator()); } else if (state is HeroDetailLoaded) { final hero = state.hero; return Column( children: [ hero.portraitUrl != null ? Image.network(hero.portraitUrl!) : Column( children: [ const Icon(Icons.image, size: 100), Text(locale.heroNoImage), ], ), Text( hero.name, style: const TextStyle(fontSize: 24, fontWeight: FontWeight.bold), ), Text( hero.description ?? locale.heroNoDescription, style: const TextStyle(fontSize: 16), ), ], ); } else if (state is HeroDetailError) { return Center(child: Text(state.message)); } return const SizedBox.shrink(); }, ), ), ); } }