// lib/screens/character_selection_screen.dart import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:kzeduca_app/models/character.dart'; import 'package:kzeduca_app/providers/game_state_provider.dart'; import 'package:kzeduca_app/screens/game_screen.dart'; class CharacterSelectionScreen extends StatelessWidget { const CharacterSelectionScreen({super.key}); @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.black, appBar: AppBar( title: const Text('Escolha o seu Personagem', style: TextStyle(color: Colors.white)), backgroundColor: Colors.transparent, elevation: 0, ), body: Center( child: SingleChildScrollView( padding: const EdgeInsets.all(16.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ _buildCharacterCard( context, CharacterType.estudante, 'Estudante', 'Começando em Luanda, ela enfrenta desafios de mensalidades e transporte. Consegue equilibrar os estudos e as finanças?', 'assets/images/estudante.png', // Caminho da imagem para Estudante ), const SizedBox(height: 20), _buildCharacterCard( context, CharacterType.empreendedor, 'Jovem Empreendedor', 'Um visionário em Benguela com uma ideia de negócio, mas com capital limitado. Ousadia e gestão de risco são a chave.', 'assets/images/empreendedor.png', // Caminho da imagem para Empreendedor ), const SizedBox(height: 20), _buildCharacterCard( context, CharacterType.profissional, 'Profissional em Ascensão', 'Trabalhando no Huambo, ele busca oportunidades para avançar na carreira e investir. O futuro está nas suas decisões.', 'assets/images/profissional.png', // Caminho da imagem para Profissional ), const SizedBox(height: 20), _buildCharacterCard( context, CharacterType.artista, 'Artista Criativo', 'Busca transformar a sua paixão em uma fonte de renda, equilibrando a arte e o lado comercial.', 'assets/images/artista.png', // Caminho da imagem para Artista ), const SizedBox(height: 20), _buildCharacterCard( context, CharacterType.jornalista, 'Jornalista Investigativo', 'Atua no Huambo. Reportar a verdade o coloca em situações arriscadas, mas também abre portas. Sua jornada é sobre influência e integridade.', 'assets/images/jornalista.png', // Caminho da imagem para Jornalista ), const SizedBox(height: 20), _buildCharacterCard( context, CharacterType.professor, 'Professor', 'Dedicado a moldar mentes em Huambo. Lida com a burocracia académica e salários, enquanto inspira as futuras gerações.', 'assets/images/professor.png', // Caminho da imagem para Professor ), const SizedBox(height: 20), _buildCharacterCard( context, CharacterType.chefeDeFamilia, 'Chefe de Família', 'Em Luanda, ele é o pilar da sua família. Sua missão é garantir o sustento, a saúde e a educação, enfrentando os desafios do dia a dia.', 'assets/images/chefe_de_familia.png', // Caminho da imagem para Chefe de Família ), ], ), ), ), ); } Widget _buildCharacterCard( BuildContext context, CharacterType type, String title, String description, String imagePath, ) { return Card( color: const Color(0xFF1C1C1C), elevation: 5, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)), child: InkWell( onTap: () { Provider.of(context, listen: false).startNewGame(type); Navigator.push( context, MaterialPageRoute(builder: (context) => const GameScreen()), ); }, child: Padding( padding: const EdgeInsets.all(20.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ // Usamos um ClipRRect para dar bordas arredondadas à imagem // e um SizedBox para controlar o tamanho ClipRRect( borderRadius: BorderRadius.circular(10.0), // Ajuste o raio se desejar child: SizedBox( width: 80, // Aumentei o tamanho para melhor visualização height: 80, child: Image.asset( imagePath, fit: BoxFit.cover, // Para cobrir o espaço, cortando se necessário // fit: BoxFit.contain, // Alternativa: para caber no espaço, sem cortar // color: const Color(0xFF8A2BE2), // Opcional: Para dar um tom roxo à imagem // colorBlendMode: BlendMode.modulate, // Opcional: Para misturar a cor errorBuilder: (context, error, stackTrace) { // Este widget será exibido se a imagem não puder ser carregada return Container( color: Colors.red.shade900, child: const Center( child: Icon(Icons.error, color: Colors.white, size: 40), ), ); }, ), ), ), const SizedBox(width: 15), Expanded( child: Text( title, style: const TextStyle( color: Colors.white, fontSize: 24, fontWeight: FontWeight.bold, ), ), ), ], ), const SizedBox(height: 10), Text( description, style: const TextStyle( color: Colors.white70, fontSize: 16, ), ), ], ), ), ), ); } }