aplicadas correcciones
This commit is contained in:
@@ -301,13 +301,13 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
|
||||
/// Paso 1: validar nombre, pedir permisos e iniciar discovery
|
||||
Future<void> _iniciarBusqueda() async {
|
||||
if (!_formKey.currentState!.validate()) return;
|
||||
final l10n = AppLocalizations.of(context)!;
|
||||
|
||||
// Solicitar permisos automáticamente
|
||||
final permisosOk = await ServicioPermisos.solicitarPermisosNearby(context);
|
||||
if (!permisosOk) {
|
||||
setState(() {
|
||||
_error =
|
||||
'Se necesitan permisos de Bluetooth y ubicación para buscar partidas.';
|
||||
_error = l10n.bluetoothLocationPermissionsRequired;
|
||||
});
|
||||
return;
|
||||
}
|
||||
@@ -332,14 +332,14 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
|
||||
});
|
||||
} else {
|
||||
setState(() {
|
||||
_error =
|
||||
'No se pudo iniciar la búsqueda. Verifica Bluetooth y ubicación.';
|
||||
_error = l10n.couldNotStartSearch;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/// Conectar a un host de la lista
|
||||
Future<void> _conectarAHost(String endpointId, String nombreHost) async {
|
||||
final l10n = AppLocalizations.of(context)!;
|
||||
setState(() {
|
||||
_conectando = true;
|
||||
_salaSeleccionada = nombreHost;
|
||||
@@ -363,7 +363,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
|
||||
if (!ok && mounted) {
|
||||
setState(() {
|
||||
_conectando = false;
|
||||
_error = 'No se pudo conectar a $nombreHost';
|
||||
_error = l10n.couldNotConnectToHost(nombreHost);
|
||||
});
|
||||
// Reiniciar búsqueda
|
||||
_iniciarBusqueda();
|
||||
@@ -387,11 +387,12 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
|
||||
|
||||
final datos = ServicioNearby.parsearQR(valor);
|
||||
if (datos != null) {
|
||||
final l10n = AppLocalizations.of(context)!;
|
||||
setState(() {
|
||||
_escaneandoQR = false;
|
||||
_conectando = true;
|
||||
_salaSeleccionada =
|
||||
datos['host'] as String? ?? datos['sala'] as String? ?? 'Sala';
|
||||
datos['host'] as String? ?? datos['sala'] as String? ?? l10n.room;
|
||||
});
|
||||
|
||||
// Iniciar búsqueda para que Nearby encuentre al host
|
||||
@@ -530,8 +531,8 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
|
||||
? '${l10n.connectingTo} ${_salaSeleccionada ?? ""}...'
|
||||
: l10n.searchingGames,
|
||||
subtitulo: _conectando
|
||||
? 'Preparando la sala segura'
|
||||
: 'Buscando partidas cercanas por Bluetooth',
|
||||
? l10n.preparingSecureRoom
|
||||
: l10n.searchingNearbyBluetoothGames,
|
||||
color: _conectando ? TemaApp.colorAcento : TemaApp.colorNaranja,
|
||||
trailing: SizedBox(
|
||||
width: 24,
|
||||
@@ -560,7 +561,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
|
||||
itemCount: hosts.length,
|
||||
itemBuilder: (context, index) {
|
||||
final entry = hosts.entries.elementAt(index);
|
||||
return _buildHostTile(entry.key, entry.value);
|
||||
return _buildHostTile(l10n, entry.key, entry.value);
|
||||
},
|
||||
),
|
||||
),
|
||||
@@ -597,7 +598,11 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildHostTile(String endpointId, String nombre) {
|
||||
Widget _buildHostTile(
|
||||
AppLocalizations l10n,
|
||||
String endpointId,
|
||||
String nombre,
|
||||
) {
|
||||
return Container(
|
||||
margin: const EdgeInsets.only(bottom: 10),
|
||||
child: Material(
|
||||
@@ -630,7 +635,7 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
|
||||
style: Theme.of(context).textTheme.titleMedium,
|
||||
),
|
||||
Text(
|
||||
'Toca para unirte',
|
||||
l10n.tapToJoin,
|
||||
style: Theme.of(context).textTheme.bodySmall,
|
||||
),
|
||||
],
|
||||
@@ -842,16 +847,18 @@ 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>();
|
||||
nearby.seleccionarUsuarioSala(usuario.id);
|
||||
ScaffoldMessenger.of(
|
||||
context,
|
||||
).showSnackBar(SnackBar(content: Text('${usuario.nombre} seleccionado')));
|
||||
).showSnackBar(SnackBar(content: Text(l10n.profileSelected)));
|
||||
}
|
||||
|
||||
Widget _buildUsuarioSalaTile(Usuario usuario) {
|
||||
final l10n = AppLocalizations.of(context)!;
|
||||
final nearby = context.read<ServicioNearby>();
|
||||
final miClientId = nearby.miClientId;
|
||||
final seleccionadoPorMi = usuario.clienteIdSeleccionado == miClientId;
|
||||
@@ -872,10 +879,10 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
|
||||
children: [
|
||||
Text(
|
||||
seleccionadoPorMi
|
||||
? 'Seleccionado por este móvil'
|
||||
? l10n.selectedOnThisPhone
|
||||
: seleccionadoPorOtro
|
||||
? 'No disponible'
|
||||
: 'Disponible',
|
||||
? l10n.notAvailable
|
||||
: l10n.available,
|
||||
),
|
||||
if (usuario.medallas.isNotEmpty) ...[
|
||||
const SizedBox(height: 4),
|
||||
|
||||
Reference in New Issue
Block a user