Cambios visuales completos

This commit is contained in:
2026-05-10 17:28:35 +02:00
parent 8b4ca132aa
commit 42f01949c4
33 changed files with 887 additions and 397 deletions

View File

@@ -48,25 +48,66 @@ class _PantallaLobbyHostState extends State<PantallaLobbyHost> {
),
),
body: FondoFarolero(
intenso: true,
child: Padding(
padding: const EdgeInsets.all(24),
child: Column(
children: [
Container(
children: [
EncabezadoFarolero(
icono: Icons.wifi_tethering,
titulo: widget.nombreSala,
subtitulo: l10n.scanToJoin,
),
const SizedBox(height: 14),
PanelFarolero(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16),
),
child: QrImageView(
data: nearby.generarDatosQR(widget.nombreSala),
version: QrVersions.auto,
size: 160,
backgroundColor: Colors.white,
child: Column(
children: [
SizedBox(
width: 196,
height: 196,
child: Stack(
alignment: Alignment.center,
children: [
Container(
padding: const EdgeInsets.all(12),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(18),
boxShadow: [
BoxShadow(
color: TemaApp.colorNaranja.withValues(alpha: 0.18),
blurRadius: 24,
),
],
),
child: QrImageView(
data: nearby.generarDatosQR(widget.nombreSala),
version: QrVersions.auto,
size: 156,
backgroundColor: Colors.white,
),
),
Positioned.fill(
child: IgnorePointer(
child: Image.asset(
'assets/ui/premium/qr_frame_overlay.png',
fit: BoxFit.cover,
),
),
),
],
),
),
const SizedBox(height: 10),
Text(
'Escanea este código desde otro móvil',
style: Theme.of(context).textTheme.bodyMedium,
textAlign: TextAlign.center,
),
],
),
),
const SizedBox(height: 12),
Text(l10n.scanToJoin),
const SizedBox(height: 16),
_buildResumenSala(context, seleccionados, nearby.jugadores.length),
const SizedBox(height: 12),
@@ -119,15 +160,15 @@ class _PantallaLobbyHostState extends State<PantallaLobbyHost> {
const SizedBox(height: 12),
SizedBox(
width: double.infinity,
child: ElevatedButton.icon(
child: BotonFarolero(
texto: _iniciando ? l10n.starting : l10n.startGame,
icono: Icons.play_arrow,
onPressed: puedeIniciar && !_iniciando
? () {
setState(() => _iniciando = true);
widget.onIniciar();
}
: null,
icon: const Icon(Icons.play_arrow),
label: Text(_iniciando ? l10n.starting : l10n.startGame),
),
),
],