feat: modo multidispositivo con Nearby Connections
Build & Deploy Farolero / Análisis de código (push) Successful in 9s
Build & Deploy Farolero / Build APK + AAB release (push) Successful in 1m10s

- ServicioNearby completo: P2P_STAR, auto-accept, protocolo mensajes
- PantallaLobbyHost: QR code + lista jugadores tiempo real
- PantallaUnirse: escaneo QR + conexión + sala espera
- Protocolo MensajeP2P: salaInfo, partidaInicio, fase, voto, resultado, fin
- Manejo desconexiones jugador/host
- l10n: nuevas keys es/en
- Version bump 1.1.0+5
This commit is contained in:
ShanaiaBot
2026-04-04 03:09:51 +02:00
parent f453ce6e0d
commit 23472707ad
25 changed files with 1799 additions and 165 deletions
+78
View File
@@ -992,6 +992,84 @@ abstract class AppLocalizations {
/// In es, this message translates to:
/// **'Licencias'**
String get licenses;
/// No description provided for @scanToJoin.
///
/// In es, this message translates to:
/// **'Escanea el QR para unirte'**
String get scanToJoin;
/// No description provided for @connectedPlayers.
///
/// In es, this message translates to:
/// **'Jugadores conectados'**
String get connectedPlayers;
/// No description provided for @waitingForPlayers.
///
/// In es, this message translates to:
/// **'Esperando jugadores...'**
String get waitingForPlayers;
/// No description provided for @needMorePlayers.
///
/// In es, this message translates to:
/// **'Faltan {count} jugadores más'**
String needMorePlayers(int count);
/// No description provided for @starting.
///
/// In es, this message translates to:
/// **'Iniciando...'**
String get starting;
/// No description provided for @enterNameAndScan.
///
/// In es, this message translates to:
/// **'Escribe tu nombre y escanea el QR del host'**
String get enterNameAndScan;
/// No description provided for @yourName.
///
/// In es, this message translates to:
/// **'Tu nombre'**
String get yourName;
/// No description provided for @nameRequired.
///
/// In es, this message translates to:
/// **'Escribe tu nombre'**
String get nameRequired;
/// No description provided for @connectingTo.
///
/// In es, this message translates to:
/// **'Conectando a'**
String get connectingTo;
/// No description provided for @scanQR.
///
/// In es, this message translates to:
/// **'Escanear QR'**
String get scanQR;
/// No description provided for @scanHostQR.
///
/// In es, this message translates to:
/// **'Apunta al QR del host'**
String get scanHostQR;
/// No description provided for @connectedWaiting.
///
/// In es, this message translates to:
/// **'¡Conectado!'**
String get connectedWaiting;
/// No description provided for @waitingForHost.
///
/// In es, this message translates to:
/// **'Esperando a que el host inicie la partida...'**
String get waitingForHost;
}
class _AppLocalizationsDelegate
@@ -470,4 +470,45 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get licenses => 'التراخيص';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -473,4 +473,45 @@ class AppLocalizationsCa extends AppLocalizations {
@override
String get licenses => 'Llicències';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -476,4 +476,45 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get licenses => 'Lizenzen';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -471,4 +471,45 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get licenses => 'Licenses';
@override
String get scanToJoin => 'Scan QR to join';
@override
String get connectedPlayers => 'Connected players';
@override
String get waitingForPlayers => 'Waiting for players...';
@override
String needMorePlayers(int count) {
return 'Need $count more players';
}
@override
String get starting => 'Starting...';
@override
String get enterNameAndScan => 'Enter your name and scan the host\'s QR';
@override
String get yourName => 'Your name';
@override
String get nameRequired => 'Enter your name';
@override
String get connectingTo => 'Connecting to';
@override
String get scanQR => 'Scan QR';
@override
String get scanHostQR => 'Point at the host\'s QR code';
@override
String get connectedWaiting => 'Connected!';
@override
String get waitingForHost => 'Waiting for the host to start the game...';
}
@@ -472,4 +472,45 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get licenses => 'Licencias';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -475,4 +475,45 @@ class AppLocalizationsEu extends AppLocalizations {
@override
String get licenses => 'Lizentziak';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -473,4 +473,45 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get licenses => 'Licences';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -472,4 +472,45 @@ class AppLocalizationsHi extends AppLocalizations {
@override
String get licenses => 'लाइसेंस';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -473,4 +473,45 @@ class AppLocalizationsIt extends AppLocalizations {
@override
String get licenses => 'Licenze';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -470,4 +470,45 @@ class AppLocalizationsJa extends AppLocalizations {
@override
String get licenses => 'ライセンス';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -470,4 +470,45 @@ class AppLocalizationsKo extends AppLocalizations {
@override
String get licenses => '라이선스';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -473,4 +473,45 @@ class AppLocalizationsNl extends AppLocalizations {
@override
String get licenses => 'Licenties';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -473,4 +473,45 @@ class AppLocalizationsPl extends AppLocalizations {
@override
String get licenses => 'Licencje';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -474,4 +474,45 @@ class AppLocalizationsPt extends AppLocalizations {
@override
String get licenses => 'Licenças';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -473,4 +473,45 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get licenses => 'Лицензии';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -472,4 +472,45 @@ class AppLocalizationsTr extends AppLocalizations {
@override
String get licenses => 'Lisanslar';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
@@ -469,6 +469,47 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get licenses => '许可证';
@override
String get scanToJoin => 'Escanea el QR para unirte';
@override
String get connectedPlayers => 'Jugadores conectados';
@override
String get waitingForPlayers => 'Esperando jugadores...';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
}
@override
String get starting => 'Iniciando...';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
@override
String get yourName => 'Tu nombre';
@override
String get nameRequired => 'Escribe tu nombre';
@override
String get connectingTo => 'Conectando a';
@override
String get scanQR => 'Escanear QR';
@override
String get scanHostQR => 'Apunta al QR del host';
@override
String get connectedWaiting => '¡Conectado!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
}
/// The translations for Chinese, as used in Taiwan (`zh_TW`).