Implementado:

No se puede marcar “vista” sin revelar la palabra antes.
Se puede volver a ver la palabra durante debate/votación/resultado.
Notas online privadas por partida y jugador.
Tests añadidos para notas scoped.
Ajusté roomId en el payload de inicio para que las notas no se mezclen entre partidas.
This commit is contained in:
2026-05-05 21:49:40 +02:00
parent 1abdeb2f56
commit 6e5e423ab4
12 changed files with 802 additions and 75 deletions
+34 -17
View File
@@ -27,10 +27,14 @@ class PantallaPalabraCliente extends StatefulWidget {
class _PantallaPalabraClienteState extends State<PantallaPalabraCliente> {
bool _palabraVisible = false;
bool _haRevelado = false;
Timer? _timer;
void _togglePalabra() {
setState(() => _palabraVisible = !_palabraVisible);
setState(() {
_palabraVisible = !_palabraVisible;
if (_palabraVisible) _haRevelado = true;
});
_timer?.cancel();
}
@@ -88,17 +92,28 @@ class _PantallaPalabraClienteState extends State<PantallaPalabraCliente> {
size: 32,
),
const SizedBox(height: 16),
_palabraVisible
? TarjetaPalabraFarolero(palabra: widget.palabra)
: const Text(
'???',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
color: TemaApp.colorTextoSecundario,
),
),
if (_palabraVisible && widget.esImpostor)
Text(
l10n.youAreImpostor,
textAlign: TextAlign.center,
style: const TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
color: TemaApp.colorDorado,
),
)
else if (_palabraVisible)
TarjetaPalabraFarolero(palabra: widget.palabra)
else
const Text(
'???',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
color: TemaApp.colorTextoSecundario,
),
),
],
),
),
@@ -137,7 +152,9 @@ class _PantallaPalabraClienteState extends State<PantallaPalabraCliente> {
child: Text(
_palabraVisible
? 'Mantén la pantalla oculta. No la enseñes a nadie.'
: 'Toca para ver tu palabra',
: _haRevelado
? l10n.seeYourWord
: l10n.tapToSee,
textAlign: TextAlign.center,
style: TextStyle(
color: TemaApp.colorTextoSecundario,
@@ -153,11 +170,11 @@ class _PantallaPalabraClienteState extends State<PantallaPalabraCliente> {
width: double.infinity,
height: 56,
child: ElevatedButton.icon(
onPressed: () {
widget.onVisto();
},
onPressed: _haRevelado ? widget.onVisto : null,
icon: const Icon(Icons.check),
label: Text(l10n.iveSeenIt),
label: Text(
_haRevelado ? l10n.iveSeenIt : l10n.tapToSee,
),
style: ElevatedButton.styleFrom(
backgroundColor: TemaApp.colorAcento,
foregroundColor: Colors.white,