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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user