algunos iconos PRO

This commit is contained in:
2026-05-12 00:11:43 +02:00
parent 532e3b84f1
commit be255d5ea3
16 changed files with 116 additions and 6 deletions
+3 -1
View File
@@ -1,4 +1,4 @@
import 'package:flutter/material.dart';
import 'package:flutter/material.dart';
import 'package:farolero/l10n/generated/app_localizations.dart';
import 'package:provider/provider.dart';
import '../estado/estado_juego.dart';
@@ -122,6 +122,7 @@ class _PantallaAdivinanzaState extends State<PantallaAdivinanza> {
child: BotonFarolero(
texto: l10n.guess,
icono: Icons.send,
assetIconPath: 'assets/ui/generated/actions/action_impostor_mask.webp',
onPressed: _controlador.text.trim().isNotEmpty ? _intentarAdivinar : null,
),
),
@@ -173,6 +174,7 @@ class _PantallaAdivinanzaState extends State<PantallaAdivinanza> {
BotonFarolero(
texto: acierto ? l10n.seeEndResult : l10n.nextRound,
icono: acierto ? Icons.emoji_events : Icons.skip_next,
assetIconPath: acierto ? 'assets/ui/generated/actions/action_result_trophy.webp' : null,
onPressed: acierto
? () {
Navigator.pushReplacement(
+2
View File
@@ -122,6 +122,7 @@ class _PantallaDebateState extends State<PantallaDebate> {
child: BotonFarolero.oscuro(
texto: l10n.notes,
icono: Icons.edit_note,
assetIconPath: 'assets/ui/generated/actions/action_notes_quill.webp',
onPressed: () {
Navigator.push(
context,
@@ -136,6 +137,7 @@ class _PantallaDebateState extends State<PantallaDebate> {
child: BotonFarolero(
texto: l10n.goToVoting,
icono: Icons.how_to_vote,
assetIconPath: 'assets/ui/generated/actions/action_vote_mask.webp',
onPressed: _irAVotacion,
),
),
+4 -1
View File
@@ -1,4 +1,4 @@
import 'dart:async';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:farolero/l10n/generated/app_localizations.dart';
import 'package:farolero/modelos/inicio_partida_multijugador.dart';
@@ -205,6 +205,9 @@ class _PantallaDebateClienteState extends State<PantallaDebateCliente> {
icono: _votacionSolicitada
? Icons.hourglass_empty
: Icons.how_to_vote,
assetIconPath: _votacionSolicitada
? null
: 'assets/ui/generated/actions/action_vote_mask.webp',
onPressed: _votacionSolicitada
? null
: () {
+5
View File
@@ -804,12 +804,14 @@ class _PantallaGestorHostState extends State<PantallaGestorHost> {
return BotonFarolero.secundario(
texto: l10n.goToVoting,
icono: Icons.how_to_vote,
assetIconPath: 'assets/ui/generated/actions/action_vote_mask.webp',
onPressed: () => _avanzarAFase(FaseJuego.votacion),
);
case FaseJuego.votacion:
return BotonFarolero(
texto: todosVotaron ? l10n.revealResult : l10n.waitingVoting,
icono: Icons.visibility,
assetIconPath: 'assets/ui/generated/actions/action_result_trophy.webp',
onPressed: todosVotaron ? () => _avanzarAFase(FaseJuego.resultado) : null,
);
case FaseJuego.resultado:
@@ -843,6 +845,7 @@ class _PantallaGestorHostState extends State<PantallaGestorHost> {
return BotonFarolero(
texto: l10n.seeEndResult,
icono: Icons.emoji_events,
assetIconPath: 'assets/ui/generated/actions/action_result_trophy.webp',
onPressed: () => _finalizarPartidaOnline(context),
);
}
@@ -853,6 +856,7 @@ class _PantallaGestorHostState extends State<PantallaGestorHost> {
BotonFarolero.oscuro(
texto: l10n.impostorGuessWord,
icono: Icons.psychology,
assetIconPath: 'assets/ui/generated/actions/action_impostor_mask.webp',
onPressed: () => _iniciarAdivinanzaOnline(context),
),
const SizedBox(height: 12),
@@ -878,6 +882,7 @@ class _PantallaGestorHostState extends State<PantallaGestorHost> {
BotonFarolero(
texto: l10n.guess,
icono: Icons.check_circle,
assetIconPath: 'assets/ui/generated/actions/action_impostor_mask.webp',
onPressed: () => _resolverAdivinanzaOnline(context),
),
const SizedBox(height: 12),
+2 -2
View File
@@ -5,7 +5,7 @@ import 'package:farolero/tema/componentes_farolero.dart';
import 'package:farolero/tema/tema_app.dart';
/// Pantalla que ve cada jugador cuando recibe su palabra (modo multidispositivo).
/// El cliente recibe la palabra vía ServicioNearby y se navega aquí.
/// El cliente recibe la palabra vía ServicioNearby y se navega aquí.
/// NO es la pantalla del host.
class PantallaPalabraCliente extends StatefulWidget {
final String palabra;
@@ -166,7 +166,7 @@ class _PantallaPalabraClienteState extends State<PantallaPalabraCliente> {
),
const Spacer(),
// Botón confirmar
// Botón confirmar
BotonFarolero(
texto: _haRevelado ? l10n.iveSeenIt : l10n.tapToSee,
icono: Icons.check,
+2
View File
@@ -102,6 +102,7 @@ class _PantallaVotacionState extends State<PantallaVotacion> {
BotonFarolero(
texto: l10n.confirmVote,
icono: Icons.how_to_vote,
assetIconPath: 'assets/ui/generated/actions/action_vote_mask.webp',
onPressed: _seleccionado != null
? () {
estado.registrarVoto(votanteActual.id, _seleccionado!);
@@ -147,6 +148,7 @@ class _PantallaVotacionState extends State<PantallaVotacion> {
BotonFarolero(
texto: l10n.revealResult,
icono: Icons.visibility,
assetIconPath: 'assets/ui/generated/actions/action_result_trophy.webp',
onPressed: () {
final resultado = estado.procesarVotacion();
if (resultado != null) {
+2 -1
View File
@@ -12,7 +12,7 @@ import 'package:farolero/tema/componentes_farolero.dart';
import 'package:farolero/tema/tema_app.dart';
import 'package:provider/provider.dart';
/// Pantalla de votación para cliente multidispositivo.
/// Pantalla de votación para cliente multidispositivo.
/// Un cliente puede manejar uno o varios jugadores, por eso se recoge un voto
/// por cada jugador controlado activo.
class PantallaVotacionCliente extends StatefulWidget {
@@ -186,6 +186,7 @@ class _PantallaVotacionClienteState extends State<PantallaVotacionCliente> {
BotonFarolero.secundario(
texto: l10n.votar,
icono: Icons.how_to_vote,
assetIconPath: 'assets/ui/generated/actions/action_vote_mask.webp',
onPressed: _votacionCompleta
? () => widget.onVotos(Map.unmodifiable(_votosPorVotante))
: null,
+12 -1
View File
@@ -233,6 +233,7 @@ class LogoFarolero extends StatelessWidget {
class BotonFarolero extends StatelessWidget {
final String texto;
final IconData icono;
final String? assetIconPath;
final VoidCallback? onPressed;
final LinearGradient gradient;
final Color foreground;
@@ -242,6 +243,7 @@ class BotonFarolero extends StatelessWidget {
super.key,
required this.texto,
required this.icono,
this.assetIconPath,
required this.onPressed,
this.gradient = TemaApp.gradientePrimario,
this.foreground = Colors.black,
@@ -252,6 +254,7 @@ class BotonFarolero extends StatelessWidget {
super.key,
required this.texto,
required this.icono,
this.assetIconPath,
required this.onPressed,
}) : gradient = const LinearGradient(
colors: [TemaApp.colorPurpura, Color(0xFF2B1736)],
@@ -265,6 +268,7 @@ class BotonFarolero extends StatelessWidget {
super.key,
required this.texto,
required this.icono,
this.assetIconPath,
required this.onPressed,
}) : gradient = const LinearGradient(
colors: [Color(0xFF151F27), Color(0xFF090E13)],
@@ -303,7 +307,14 @@ class BotonFarolero extends StatelessWidget {
children: [
SizedBox(
width: 44,
child: Icon(icono, color: colorTexto, size: 30),
height: 40,
child: assetIconPath == null
? Icon(icono, color: colorTexto, size: 30)
: Image.asset(
assetIconPath!,
fit: BoxFit.contain,
filterQuality: FilterQuality.medium,
),
),
const SizedBox(width: 10),
Expanded(