feat: permisos automáticos + cableado crear partida → lobby multi
Some checks failed
Build & Deploy Farolero / Análisis de código (push) Successful in 9s
Build & Deploy Farolero / Build APK + AAB release (push) Failing after 4s

- ServicioPermisos: solicita BT+Location automáticamente con diálogo si denegados
- PantallaCrearPartida: modo multi → pide nombre host → permisos → lobby con QR
- PantallaUnirse: pide permisos antes de iniciar discovery
- ServicioNearby: pararBusqueda() para limpiar discovery sin desconectar
- Botón iniciar habilitado en modo multi sin necesidad de 3 jugadores locales
- permission_handler añadido como dependencia
This commit is contained in:
ShanaiaBot
2026-04-04 03:41:10 +02:00
parent 33a71a93be
commit 723c075524
5 changed files with 263 additions and 3 deletions

View File

@@ -3,6 +3,7 @@ import 'package:mobile_scanner/mobile_scanner.dart';
import 'package:provider/provider.dart';
import 'package:farolero/l10n/generated/app_localizations.dart';
import '../servicios/servicio_nearby.dart';
import '../servicios/servicio_permisos.dart';
import '../tema/tema_app.dart';
/// Pantalla para unirse a una partida multidispositivo.
@@ -31,10 +32,20 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
super.dispose();
}
/// Paso 1: validar nombre e iniciar discovery
/// Paso 1: validar nombre, pedir permisos e iniciar discovery
Future<void> _iniciarBusqueda() async {
if (!_formKey.currentState!.validate()) return;
// 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.';
});
return;
}
if (!mounted) return;
final nearby = context.read<ServicioNearby>();
final ok = await nearby.buscarHosts(_nombreController.text.trim());