uso de imágenes y eliminación de innecesarias

This commit is contained in:
2026-05-12 01:09:05 +02:00
parent a055ed808c
commit 1885c85de9
28 changed files with 298 additions and 47 deletions
+18 -13
View File
@@ -19,7 +19,7 @@ import 'pantalla_resultado_online.dart';
import 'pantalla_fin_partida_online.dart';
/// Pantalla para unirse a una partida multidispositivo.
/// Flujo: nombre → discovery automático (lista de salas) → fallback QR
/// Flujo: nombre → discovery automático (lista de salas) → fallback QR
class PantallaUnirse extends StatefulWidget {
const PantallaUnirse({super.key});
@@ -64,7 +64,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
nearby.onMensaje((endpointId, mensaje) {
if (!mounted) return;
if (mensaje.tipo == TipoMensaje.partidaInicio) {
// El host ha iniciado la partida nos ha enviado nuestra palabra
// El host ha iniciado la partida — nos ha enviado nuestra palabra
final jugadoresData = mensaje.datos['jugadores'] as List<dynamic>?;
final jugadoresTodosData =
mensaje.datos['jugadoresTodos'] as List<dynamic>?;
@@ -303,7 +303,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
if (!_formKey.currentState!.validate()) return;
final l10n = AppLocalizations.of(context)!;
// Solicitar permisos automáticamente
// Solicitar permisos automáticamente
final permisosOk = await ServicioPermisos.solicitarPermisosNearby(context);
if (!permisosOk) {
setState(() {
@@ -365,7 +365,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
_conectando = false;
_error = l10n.couldNotConnectToHost(nombreHost);
});
// Reiniciar búsqueda
// Reiniciar búsqueda
_iniciarBusqueda();
}
}
@@ -395,7 +395,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
datos['host'] as String? ?? datos['sala'] as String? ?? l10n.room;
});
// Iniciar búsqueda para que Nearby encuentre al host
// Iniciar búsqueda para que Nearby encuentre al host
final nearby = context.read<ServicioNearby>();
if (!nearby.buscando) {
final servicioPerfil = context.read<ServicioPerfilUsuario>();
@@ -419,7 +419,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
final l10n = AppLocalizations.of(context)!;
final nearby = context.watch<ServicioNearby>();
// Si estamos conectados pantalla de espera
// Si estamos conectados → pantalla de espera
if (nearby.conectado && !nearby.esHost) {
return _buildPantallaEspera(context, l10n);
}
@@ -457,6 +457,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
const SizedBox(height: 14),
EncabezadoFarolero(
icono: Icons.bluetooth_searching,
assetIconPath: 'assets/ui/generated/actions/action_multidevice_signal.webp',
titulo: l10n.joinGameTitle,
subtitulo: l10n.enterNameToSearch,
color: TemaApp.colorAzul,
@@ -479,6 +480,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
BotonFarolero(
texto: l10n.searchGames,
icono: Icons.search,
assetIconPath: 'assets/ui/generated/actions/action_join_search.webp',
onPressed: _iniciarBusqueda,
),
if (_error != null) ...[
@@ -527,6 +529,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
const SizedBox(height: 12),
EncabezadoFarolero(
icono: _conectando ? Icons.sync : Icons.radar,
assetIconPath: _conectando ? null : 'assets/ui/generated/actions/action_join_search.webp',
titulo: _conectando
? '${l10n.connectingTo} ${_salaSeleccionada ?? ""}...'
: l10n.searchingGames,
@@ -553,6 +556,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
? Center(
child: EstadoVacioFarolero(
icono: Icons.radar,
assetIconPath: 'assets/ui/generated/actions/action_join_search.webp',
titulo: l10n.noGamesFound,
subtitulo: l10n.noGamesFoundHint,
),
@@ -584,10 +588,11 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
const SizedBox(height: 8),
SizedBox(
width: double.infinity,
child: OutlinedButton.icon(
child: BotonFarolero.oscuro(
texto: l10n.scanQR,
icono: Icons.qr_code_scanner,
assetIconPath: 'assets/ui/generated/actions/action_qr_scan.webp',
onPressed: _abrirEscaner,
icon: const Icon(Icons.qr_code_scanner),
label: Text(l10n.scanQR),
),
),
],
@@ -655,7 +660,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
);
}
// ==================== ESCÁNER QR ====================
// ==================== ESCÁNER QR ====================
Widget _buildEscaner(BuildContext context, AppLocalizations l10n) {
return Scaffold(
@@ -766,7 +771,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
padding: const EdgeInsets.all(12),
child: Column(
children: [
// Opción crear nuevo usuario (tarea 3.5)
// Opción crear nuevo usuario (tarea 3.5)
ListTile(
leading: const Icon(
Icons.add,
@@ -798,7 +803,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
);
}
/// Crea un nuevo usuario y lo envía al host
/// Crea un nuevo usuario y lo envía al host
Future<void> _crearNuevoUsuario(BuildContext context) async {
final l10n = AppLocalizations.of(context)!;
final controller = TextEditingController();
@@ -847,7 +852,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
}
}
/// Envía el usuario seleccionado/creado al host
/// Envía el usuario seleccionado/creado al host
void _enviarUsuarioAlHost(Usuario usuario) {
final l10n = AppLocalizations.of(context)!;
final nearby = context.read<ServicioNearby>();