uso de imágenes y eliminación de innecesarias
This commit is contained in:
@@ -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>();
|
||||
|
||||
Reference in New Issue
Block a user