aplicadas correcciones

This commit is contained in:
2026-05-10 22:53:41 +02:00
parent 12af58d828
commit fa7901019f
42 changed files with 2708 additions and 76 deletions

View File

@@ -55,8 +55,10 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
final servicioPerfil = context.read<ServicioPerfilUsuario>();
if (!servicioPerfil.cargado) return;
final perfil = servicioPerfil.perfil;
final nombre =
perfil.nombre.trim().isEmpty ? 'Jugador' : perfil.nombre.trim();
final l10n = AppLocalizations.of(context)!;
final nombre = perfil.nombre.trim().isEmpty
? l10n.defaultPlayerName
: perfil.nombre.trim();
if (_jugadores.contains(nombre)) return;
setState(() {
_jugadores.insert(0, nombre);
@@ -101,8 +103,10 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
void _eliminarJugador(int index) {
final perfil = context.read<ServicioPerfilUsuario>().perfil;
final nombrePerfil =
perfil.nombre.trim().isEmpty ? 'Jugador' : perfil.nombre.trim();
final l10n = AppLocalizations.of(context)!;
final nombrePerfil = perfil.nombre.trim().isEmpty
? l10n.defaultPlayerName
: perfil.nombre.trim();
if (index == 0 && _jugadores[index] == nombrePerfil) return;
setState(() {
_jugadores.removeAt(index);
@@ -146,13 +150,14 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
}
Future<void> _iniciarPartidaMulti() async {
final l10n = AppLocalizations.of(context)!;
// 1. Pedir permisos automáticamente
final permisosOk = await ServicioPermisos.solicitarPermisosNearby(context);
if (!permisosOk) {
if (mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('Se necesitan permisos de Bluetooth y ubicación'),
SnackBar(
content: Text(l10n.bluetoothLocationPermissionsShort),
),
);
}
@@ -182,8 +187,8 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
if (!ok) {
if (mounted) {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('No se pudo crear la sala. Verifica Bluetooth.'),
SnackBar(
content: Text(l10n.couldNotCreateRoom),
),
);
}
@@ -207,7 +212,9 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
'No se puede iniciar: ${validacion.codigo ?? "sala inválida"}',
l10n.cannotStartWithReason(
validacion.codigo ?? l10n.invalidRoom,
),
),
),
);
@@ -301,7 +308,7 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
final categorias = ['todas', ...?estado.banco?.nombresCategorias];
final etiquetas = _etiquetasTiempo(l10n);
final nombrePerfilActual = servicioPerfil.perfil.nombre.trim().isEmpty
? 'Jugador'
? l10n.defaultPlayerName
: servicioPerfil.perfil.nombre.trim();
if (!_modoMultimovil &&
servicioPerfil.cargado &&
@@ -383,8 +390,8 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
Expanded(
child: Text(
_modoMultimovil
? 'Partida multidispositivo'
: 'Partida en este dispositivo',
? l10n.multiDeviceGameLabel
: l10n.singleDeviceGameLabel,
style: Theme.of(context).textTheme.titleMedium,
),
),
@@ -475,7 +482,7 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
..._jugadores.asMap().entries.map((e) {
final perfil = servicioPerfil.perfil;
final nombrePerfil = perfil.nombre.trim().isEmpty
? 'Jugador'
? l10n.defaultPlayerName
: perfil.nombre.trim();
final inicialPerfil = nombrePerfil.isEmpty
? '?'
@@ -498,7 +505,7 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
),
title: Text(e.value),
subtitle: esPerfilLocal
? const Text('Usuario principal del dispositivo')
? Text(l10n.mainDeviceUser)
: null,
trailing: esPerfilLocal
? const Icon(Icons.lock, color: TemaApp.colorDorado)