correcciones
All checks were successful
Build & Deploy Farolero / Análisis de código (push) Successful in 35s
Build & Deploy Farolero / Build APK + AAB release (push) Successful in 1m49s

This commit is contained in:
2026-05-10 22:27:10 +02:00
parent 76de0f88f1
commit 12af58d828
6 changed files with 26 additions and 15 deletions

View File

@@ -324,7 +324,7 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
_CrearPartidaHeader( _CrearPartidaHeader(
titulo: '?C?mo quieres jugar?', titulo: l10n.createGame,
subtitulo: l10n.playersRange, subtitulo: l10n.playersRange,
), ),
const SizedBox(height: 12), const SizedBox(height: 12),

View File

@@ -746,7 +746,7 @@ class _MedallaDesbloqueada extends StatelessWidget {
width: 58, width: 58,
height: 58, height: 58,
fit: BoxFit.contain, fit: BoxFit.contain,
errorBuilder: (_, __, ___) => errorBuilder: (context, error, stackTrace) =>
Text(medalla.emoji, style: const TextStyle(fontSize: 32)), Text(medalla.emoji, style: const TextStyle(fontSize: 32)),
), ),
], ],

View File

@@ -325,6 +325,8 @@ class _PantallaLobbyHostState extends State<PantallaLobbyHost> {
final controller = TextEditingController(); final controller = TextEditingController();
final nearby = context.read<ServicioNearby>(); final nearby = context.read<ServicioNearby>();
final perfil = context.read<ServicioPerfilUsuario>().perfil; final perfil = context.read<ServicioPerfilUsuario>().perfil;
final gamificacion =
context.read<ServicioPerfilUsuario>().resumenGamificacion;
final nombre = await showDialog<String>( final nombre = await showDialog<String>(
context: context, context: context,
@@ -354,8 +356,6 @@ class _PantallaLobbyHostState extends State<PantallaLobbyHost> {
); );
if (nombre != null && nombre.trim().isNotEmpty) { if (nombre != null && nombre.trim().isNotEmpty) {
final gamificacion =
context.read<ServicioPerfilUsuario>().resumenGamificacion;
await nearby.crearUsuarioSala( await nearby.crearUsuarioSala(
nombre.trim(), nombre.trim(),
seleccionar: true, seleccionar: true,

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_animate/flutter_animate.dart'; import 'package:flutter_animate/flutter_animate.dart';
import 'package:farolero/l10n/generated/app_localizations.dart';
import '../tema/componentes_farolero.dart'; import '../tema/componentes_farolero.dart';
import '../tema/tema_app.dart'; import '../tema/tema_app.dart';
@@ -10,9 +11,10 @@ class PantallaSeleccionModoJuego extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final l10n = AppLocalizations.of(context)!;
return Scaffold( return Scaffold(
extendBodyBehindAppBar: true, extendBodyBehindAppBar: true,
appBar: AppBar(title: const Text('Elegir modo')), appBar: AppBar(title: Text(l10n.gameMode)),
body: FondoFarolero( body: FondoFarolero(
intenso: true, intenso: true,
child: SafeArea( child: SafeArea(
@@ -25,12 +27,15 @@ class PantallaSeleccionModoJuego extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
const SizedBox(height: 12), const SizedBox(height: 12),
const _ModoHero().animate().fadeIn(duration: 320.ms).slideY(begin: -0.12), _ModoHero(
titulo: l10n.gameMode,
subtitulo: l10n.playersRange,
).animate().fadeIn(duration: 320.ms).slideY(begin: -0.12),
const SizedBox(height: 34), const SizedBox(height: 34),
_ModoCard( _ModoCard(
marcoAsset: 'assets/ui/generated/mode/mode_single_card_frame.png', marcoAsset: 'assets/ui/generated/mode/mode_single_card_frame.png',
icono: Icons.phone_android_rounded, icono: Icons.phone_android_rounded,
titulo: 'Un móvil', titulo: l10n.singleDevice,
subtitulo: 'Partida en este dispositivo', subtitulo: 'Partida en este dispositivo',
descripcion: 'Ideal para jugar todos juntos pasando el móvil. Configuración rápida y directa.', descripcion: 'Ideal para jugar todos juntos pasando el móvil. Configuración rápida y directa.',
onTap: () => Navigator.push( onTap: () => Navigator.push(
@@ -47,7 +52,7 @@ class PantallaSeleccionModoJuego extends StatelessWidget {
_ModoCard( _ModoCard(
marcoAsset: 'assets/ui/generated/mode/mode_multi_card_frame.png', marcoAsset: 'assets/ui/generated/mode/mode_multi_card_frame.png',
icono: Icons.devices_rounded, icono: Icons.devices_rounded,
titulo: 'Multidispositivo', titulo: l10n.multiDevice,
subtitulo: 'Cada jugador en su móvil', subtitulo: 'Cada jugador en su móvil',
descripcion: 'Crea una sala premium, comparte QR y gestiona usuarios desde el lobby.', descripcion: 'Crea una sala premium, comparte QR y gestiona usuarios desde el lobby.',
destacado: true, destacado: true,
@@ -73,7 +78,13 @@ class PantallaSeleccionModoJuego extends StatelessWidget {
} }
class _ModoHero extends StatelessWidget { class _ModoHero extends StatelessWidget {
const _ModoHero(); final String titulo;
final String subtitulo;
const _ModoHero({
required this.titulo,
required this.subtitulo,
});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@@ -89,7 +100,7 @@ class _ModoHero extends StatelessWidget {
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
Text( Text(
'?C?mo quer?s jugar?', titulo,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: Theme.of(context).textTheme.headlineMedium?.copyWith( style: Theme.of(context).textTheme.headlineMedium?.copyWith(
color: TemaApp.colorDorado, color: TemaApp.colorDorado,
@@ -102,7 +113,7 @@ class _ModoHero extends StatelessWidget {
), ),
const SizedBox(height: 8), const SizedBox(height: 8),
Text( Text(
'Eleg? el tipo de partida y arranc? sin fricci?n.', subtitulo,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: Theme.of(context).textTheme.titleMedium?.copyWith( style: Theme.of(context).textTheme.titleMedium?.copyWith(
color: TemaApp.colorTextoSecundario, color: TemaApp.colorTextoSecundario,

View File

@@ -173,7 +173,6 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
}, },
), ),
), ),
),
); );
} }
@@ -490,6 +489,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
), ),
), ),
), ),
),
); );
} }
@@ -799,6 +799,8 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
final controller = TextEditingController(); final controller = TextEditingController();
final nearby = context.read<ServicioNearby>(); final nearby = context.read<ServicioNearby>();
final perfil = context.read<ServicioPerfilUsuario>().perfil; final perfil = context.read<ServicioPerfilUsuario>().perfil;
final gamificacion =
context.read<ServicioPerfilUsuario>().resumenGamificacion;
controller.text = perfil.nombre; controller.text = perfil.nombre;
final nombre = await showDialog<String>( final nombre = await showDialog<String>(
@@ -829,8 +831,6 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
); );
if (nombre != null && nombre.trim().isNotEmpty) { if (nombre != null && nombre.trim().isNotEmpty) {
final gamificacion =
context.read<ServicioPerfilUsuario>().resumenGamificacion;
await nearby.crearUsuarioSala( await nearby.crearUsuarioSala(
nombre.trim(), nombre.trim(),
seleccionar: true, seleccionar: true,

View File

@@ -582,7 +582,7 @@ class _MiniMedalla extends StatelessWidget {
width: 26, width: 26,
height: 26, height: 26,
fit: BoxFit.contain, fit: BoxFit.contain,
errorBuilder: (_, __, ___) => errorBuilder: (context, error, stackTrace) =>
Text(medalla.emoji, style: const TextStyle(fontSize: 12)), Text(medalla.emoji, style: const TextStyle(fontSize: 12)),
), ),
), ),