import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import '../../presentation/heroDetail/hero_detail_block.dart'; import '../../data/repositories/hero_repository.dart'; import '../../presentation/heroDetail/hero_detail_state.dart'; import '../../presentation/heroDetail/hero_detail_events.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(); return BlocProvider( create: (_) => HeroDetailBloc(heroRepository)..add(FetchHeroDetails(heroId)), child: Scaffold( appBar: AppBar(title: const Text('Hero Details')), body: BlocBuilder( builder: (context, state) { if (state is HeroDetailLoading) { // Показ индикатора загрузки return const Center(child: CircularProgressIndicator()); } else if (state is HeroDetailLoaded) { final hero = state.hero; return SingleChildScrollView( // Добавляем прокрутку child: Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // Центрируем изображение героя Center( child: hero.portraitUrl != null ? Image.network(hero.portraitUrl!, height: 150) : const Icon(Icons.image, size: 150), ), const SizedBox(height: 16), // Имя героя Text( hero.name, style: const TextStyle( fontSize: 24, fontWeight: FontWeight.bold, ), ), const SizedBox(height: 16), // Описание героя Text( hero.description ?? 'No description available', style: const TextStyle(fontSize: 16), ), ], ), ), ); } else if (state is HeroDetailError) { // Показ сообщения об ошибке return Center( child: Text( 'Error: ${state.message}', style: const TextStyle(fontSize: 16, color: Colors.red), ), ); } // Пустое состояние по умолчанию return const SizedBox.shrink(); }, ), ), ); } }