From a8494f7b01955b3124899b408bc47f8c4040d65b Mon Sep 17 00:00:00 2001 From: freetlab Date: Sun, 10 May 2026 23:36:31 +0200 Subject: [PATCH] =?UTF-8?q?correcci=C3=B3n=20de=20botonesa,=20y=20por=20lo?= =?UTF-8?q?=20visto=20tambi=C3=A9n=20traducciones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/l10n/app_ar.arb | 5 +- lib/l10n/app_ca.arb | 5 +- lib/l10n/app_de.arb | 5 +- lib/l10n/app_en.arb | 5 +- lib/l10n/app_es.arb | 5 +- lib/l10n/app_eu.arb | 5 +- lib/l10n/app_fr.arb | 5 +- lib/l10n/app_hi.arb | 5 +- lib/l10n/app_it.arb | 5 +- lib/l10n/app_ja.arb | 5 +- lib/l10n/app_ko.arb | 5 +- lib/l10n/app_nl.arb | 5 +- lib/l10n/app_pl.arb | 5 +- lib/l10n/app_pt.arb | 5 +- lib/l10n/app_ru.arb | 5 +- lib/l10n/app_tr.arb | 5 +- lib/l10n/app_zh.arb | 5 +- lib/l10n/app_zh_TW.arb | 5 +- lib/l10n/generated/app_localizations.dart | 6 + lib/l10n/generated/app_localizations_ar.dart | 11 +- lib/l10n/generated/app_localizations_ca.dart | 11 +- lib/l10n/generated/app_localizations_de.dart | 11 +- lib/l10n/generated/app_localizations_en.dart | 11 +- lib/l10n/generated/app_localizations_es.dart | 11 +- lib/l10n/generated/app_localizations_eu.dart | 11 +- lib/l10n/generated/app_localizations_fr.dart | 11 +- lib/l10n/generated/app_localizations_hi.dart | 11 +- lib/l10n/generated/app_localizations_it.dart | 11 +- lib/l10n/generated/app_localizations_ja.dart | 11 +- lib/l10n/generated/app_localizations_ko.dart | 11 +- lib/l10n/generated/app_localizations_nl.dart | 11 +- lib/l10n/generated/app_localizations_pl.dart | 11 +- lib/l10n/generated/app_localizations_pt.dart | 11 +- lib/l10n/generated/app_localizations_ru.dart | 11 +- lib/l10n/generated/app_localizations_tr.dart | 11 +- lib/l10n/generated/app_localizations_zh.dart | 18 +++ lib/pantallas/pantalla_lobby_host.dart | 51 ++++--- lib/pantallas/pantalla_principal.dart | 83 ++++++----- .../pantalla_seleccion_modo_juego.dart | 131 ++++++++++-------- lib/tema/componentes_farolero.dart | 76 ++++++---- 40 files changed, 463 insertions(+), 168 deletions(-) diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb index d382f2a..8b3a726 100644 --- a/lib/l10n/app_ar.arb +++ b/lib/l10n/app_ar.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Could not create the room. Check Bluetooth.", "cannotStartWithReason": "Cannot start: {reason}", "invalidRoom": "invalid room", - "defaultPlayerName": "لاعب" + "defaultPlayerName": "لاعب", + "play": "العب", + "history": "السجل", + "mainTagline": "اكتشف المنتحل قبل فوات الأوان" } diff --git a/lib/l10n/app_ca.arb b/lib/l10n/app_ca.arb index 3593565..d00a940 100644 --- a/lib/l10n/app_ca.arb +++ b/lib/l10n/app_ca.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "No s’ha pogut crear la sala. Verifica el Bluetooth.", "cannotStartWithReason": "No es pot iniciar: {reason}", "invalidRoom": "sala invàlida", - "defaultPlayerName": "Jugador" + "defaultPlayerName": "Jugador", + "play": "Jugar", + "history": "Historial", + "mainTagline": "Descobreix l’impostor abans que siga massa tard" } diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 2642535..70fd51c 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Raum konnte nicht erstellt werden. Prüfe Bluetooth.", "cannotStartWithReason": "Start nicht möglich: {reason}", "invalidRoom": "ungültiger Raum", - "defaultPlayerName": "Spieler" + "defaultPlayerName": "Spieler", + "play": "Spielen", + "history": "Verlauf", + "mainTagline": "Finde den Hochstapler, bevor es zu spät ist" } diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 49ff51a..f8e6f15 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -295,5 +295,8 @@ "couldNotCreateRoom": "Could not create the room. Check Bluetooth.", "cannotStartWithReason": "Cannot start: {reason}", "invalidRoom": "invalid room", - "defaultPlayerName": "Player" + "defaultPlayerName": "Player", + "play": "Play", + "history": "History", + "mainTagline": "Find the impostor before it is too late" } diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 609db04..2f947c9 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -327,5 +327,8 @@ } }, "invalidRoom": "sala inválida", - "defaultPlayerName": "Jugador" + "defaultPlayerName": "Jugador", + "play": "Jugar", + "history": "Historial", + "mainTagline": "Descubre al impostor antes de que sea tarde" } diff --git a/lib/l10n/app_eu.arb b/lib/l10n/app_eu.arb index 72cf4ee..6e01731 100644 --- a/lib/l10n/app_eu.arb +++ b/lib/l10n/app_eu.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Could not create the room. Check Bluetooth.", "cannotStartWithReason": "Cannot start: {reason}", "invalidRoom": "invalid room", - "defaultPlayerName": "Jokalaria" + "defaultPlayerName": "Jokalaria", + "play": "Jokatu", + "history": "Historia", + "mainTagline": "Aurkitu iruzurtia berandu baino lehen" } diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index ed94264..b583472 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Impossible de créer le salon. Vérifie le Bluetooth.", "cannotStartWithReason": "Impossible de démarrer : {reason}", "invalidRoom": "salon invalide", - "defaultPlayerName": "Joueur" + "defaultPlayerName": "Joueur", + "play": "Jouer", + "history": "Historique", + "mainTagline": "Découvre l’imposteur avant qu’il ne soit trop tard" } diff --git a/lib/l10n/app_hi.arb b/lib/l10n/app_hi.arb index 4cbd244..8d73afe 100644 --- a/lib/l10n/app_hi.arb +++ b/lib/l10n/app_hi.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Could not create the room. Check Bluetooth.", "cannotStartWithReason": "Cannot start: {reason}", "invalidRoom": "invalid room", - "defaultPlayerName": "खिलाड़ी" + "defaultPlayerName": "खिलाड़ी", + "play": "खेलें", + "history": "इतिहास", + "mainTagline": "बहुत देर होने से पहले impostor को ढूँढें" } diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index 65b9c99..7d025f7 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Impossibile creare la stanza. Verifica Bluetooth.", "cannotStartWithReason": "Impossibile iniziare: {reason}", "invalidRoom": "stanza non valida", - "defaultPlayerName": "Giocatore" + "defaultPlayerName": "Giocatore", + "play": "Gioca", + "history": "Cronologia", + "mainTagline": "Scopri l’impostore prima che sia troppo tardi" } diff --git a/lib/l10n/app_ja.arb b/lib/l10n/app_ja.arb index 256307d..e9e4b3d 100644 --- a/lib/l10n/app_ja.arb +++ b/lib/l10n/app_ja.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Could not create the room. Check Bluetooth.", "cannotStartWithReason": "Cannot start: {reason}", "invalidRoom": "invalid room", - "defaultPlayerName": "プレイヤー" + "defaultPlayerName": "プレイヤー", + "play": "プレイ", + "history": "履歴", + "mainTagline": "手遅れになる前にインポスターを見つけよう" } diff --git a/lib/l10n/app_ko.arb b/lib/l10n/app_ko.arb index d99096e..aadc6ca 100644 --- a/lib/l10n/app_ko.arb +++ b/lib/l10n/app_ko.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Could not create the room. Check Bluetooth.", "cannotStartWithReason": "Cannot start: {reason}", "invalidRoom": "invalid room", - "defaultPlayerName": "플레이어" + "defaultPlayerName": "플레이어", + "play": "플레이", + "history": "기록", + "mainTagline": "늦기 전에 임포스터를 찾아내세요" } diff --git a/lib/l10n/app_nl.arb b/lib/l10n/app_nl.arb index 50fc0a1..dfec24b 100644 --- a/lib/l10n/app_nl.arb +++ b/lib/l10n/app_nl.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Could not create the room. Check Bluetooth.", "cannotStartWithReason": "Cannot start: {reason}", "invalidRoom": "invalid room", - "defaultPlayerName": "Speler" + "defaultPlayerName": "Speler", + "play": "Spelen", + "history": "Geschiedenis", + "mainTagline": "Vind de bedrieger voordat het te laat is" } diff --git a/lib/l10n/app_pl.arb b/lib/l10n/app_pl.arb index 87ff826..946a577 100644 --- a/lib/l10n/app_pl.arb +++ b/lib/l10n/app_pl.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Could not create the room. Check Bluetooth.", "cannotStartWithReason": "Cannot start: {reason}", "invalidRoom": "invalid room", - "defaultPlayerName": "Gracz" + "defaultPlayerName": "Gracz", + "play": "Graj", + "history": "Historia", + "mainTagline": "Znajdź oszusta, zanim będzie za późno" } diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index 254bb7b..378f276 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Não foi possível criar a sala. Verifica o Bluetooth.", "cannotStartWithReason": "Não é possível iniciar: {reason}", "invalidRoom": "sala inválida", - "defaultPlayerName": "Jogador" + "defaultPlayerName": "Jogador", + "play": "Jogar", + "history": "Histórico", + "mainTagline": "Descobre o impostor antes que seja tarde" } diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index 5c83ed7..e577c4d 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Could not create the room. Check Bluetooth.", "cannotStartWithReason": "Cannot start: {reason}", "invalidRoom": "invalid room", - "defaultPlayerName": "Игрок" + "defaultPlayerName": "Игрок", + "play": "Играть", + "history": "История", + "mainTagline": "Найди самозванца, пока не стало слишком поздно" } diff --git a/lib/l10n/app_tr.arb b/lib/l10n/app_tr.arb index a8fa04d..c445610 100644 --- a/lib/l10n/app_tr.arb +++ b/lib/l10n/app_tr.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Could not create the room. Check Bluetooth.", "cannotStartWithReason": "Cannot start: {reason}", "invalidRoom": "invalid room", - "defaultPlayerName": "Oyuncu" + "defaultPlayerName": "Oyuncu", + "play": "Oyna", + "history": "Geçmiş", + "mainTagline": "Çok geç olmadan sahtekârı bul" } diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 6322ce3..9d92715 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Could not create the room. Check Bluetooth.", "cannotStartWithReason": "Cannot start: {reason}", "invalidRoom": "invalid room", - "defaultPlayerName": "玩家" + "defaultPlayerName": "玩家", + "play": "开始", + "history": "历史", + "mainTagline": "在太晚之前找出冒牌者" } diff --git a/lib/l10n/app_zh_TW.arb b/lib/l10n/app_zh_TW.arb index 4c6208c..d438f3a 100644 --- a/lib/l10n/app_zh_TW.arb +++ b/lib/l10n/app_zh_TW.arb @@ -254,5 +254,8 @@ "couldNotCreateRoom": "Could not create the room. Check Bluetooth.", "cannotStartWithReason": "Cannot start: {reason}", "invalidRoom": "invalid room", - "defaultPlayerName": "玩家" + "defaultPlayerName": "玩家", + "play": "開始", + "history": "紀錄", + "mainTagline": "在太晚之前找出冒牌者" } diff --git a/lib/l10n/generated/app_localizations.dart b/lib/l10n/generated/app_localizations.dart index 7859b4b..83c0d93 100644 --- a/lib/l10n/generated/app_localizations.dart +++ b/lib/l10n/generated/app_localizations.dart @@ -1233,6 +1233,12 @@ abstract class AppLocalizations { /// **'Perfiles disponibles'** String get availableProfiles; + String get play; + + String get history; + + String get mainTagline; + String get scanThisCodeFromAnotherPhone; String get gameUsers; diff --git a/lib/l10n/generated/app_localizations_ar.dart b/lib/l10n/generated/app_localizations_ar.dart index 4cd9833..304a670 100644 --- a/lib/l10n/generated/app_localizations_ar.dart +++ b/lib/l10n/generated/app_localizations_ar.dart @@ -703,4 +703,13 @@ class AppLocalizationsAr extends AppLocalizations { @override String get defaultPlayerName => 'لاعب'; -} + @override + String get play => 'العب'; + + @override + String get history => 'السجل'; + + @override + String get mainTagline => 'اكتشف المنتحل قبل فوات الأوان'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_ca.dart b/lib/l10n/generated/app_localizations_ca.dart index 804037c..60d53c4 100644 --- a/lib/l10n/generated/app_localizations_ca.dart +++ b/lib/l10n/generated/app_localizations_ca.dart @@ -706,4 +706,13 @@ class AppLocalizationsCa extends AppLocalizations { @override String get defaultPlayerName => 'Jugador'; -} + @override + String get play => 'Jugar'; + + @override + String get history => 'Historial'; + + @override + String get mainTagline => 'Descobreix l’impostor abans que siga massa tard'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_de.dart b/lib/l10n/generated/app_localizations_de.dart index 5d08add..fc8a0e7 100644 --- a/lib/l10n/generated/app_localizations_de.dart +++ b/lib/l10n/generated/app_localizations_de.dart @@ -709,4 +709,13 @@ class AppLocalizationsDe extends AppLocalizations { @override String get defaultPlayerName => 'Spieler'; -} + @override + String get play => 'Spielen'; + + @override + String get history => 'Verlauf'; + + @override + String get mainTagline => 'Finde den Hochstapler, bevor es zu spät ist'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_en.dart b/lib/l10n/generated/app_localizations_en.dart index e623dd5..fb3c1e3 100644 --- a/lib/l10n/generated/app_localizations_en.dart +++ b/lib/l10n/generated/app_localizations_en.dart @@ -703,4 +703,13 @@ class AppLocalizationsEn extends AppLocalizations { @override String get defaultPlayerName => 'Player'; -} + @override + String get play => 'Play'; + + @override + String get history => 'History'; + + @override + String get mainTagline => 'Find the impostor before it is too late'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_es.dart b/lib/l10n/generated/app_localizations_es.dart index 654bc4a..4310630 100644 --- a/lib/l10n/generated/app_localizations_es.dart +++ b/lib/l10n/generated/app_localizations_es.dart @@ -705,4 +705,13 @@ class AppLocalizationsEs extends AppLocalizations { @override String get defaultPlayerName => 'Jugador'; -} + @override + String get play => 'Jugar'; + + @override + String get history => 'Historial'; + + @override + String get mainTagline => 'Descubre al impostor antes de que sea tarde'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_eu.dart b/lib/l10n/generated/app_localizations_eu.dart index defe7af..dc8abcc 100644 --- a/lib/l10n/generated/app_localizations_eu.dart +++ b/lib/l10n/generated/app_localizations_eu.dart @@ -708,4 +708,13 @@ class AppLocalizationsEu extends AppLocalizations { @override String get defaultPlayerName => 'Jokalaria'; -} + @override + String get play => 'Jokatu'; + + @override + String get history => 'Historia'; + + @override + String get mainTagline => 'Aurkitu iruzurtia berandu baino lehen'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_fr.dart b/lib/l10n/generated/app_localizations_fr.dart index fc86f39..edec65e 100644 --- a/lib/l10n/generated/app_localizations_fr.dart +++ b/lib/l10n/generated/app_localizations_fr.dart @@ -706,4 +706,13 @@ class AppLocalizationsFr extends AppLocalizations { @override String get defaultPlayerName => 'Joueur'; -} + @override + String get play => 'Jouer'; + + @override + String get history => 'Historique'; + + @override + String get mainTagline => 'Découvre l’imposteur avant qu’il ne soit trop tard'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_hi.dart b/lib/l10n/generated/app_localizations_hi.dart index eccf6d0..f3b1eae 100644 --- a/lib/l10n/generated/app_localizations_hi.dart +++ b/lib/l10n/generated/app_localizations_hi.dart @@ -705,4 +705,13 @@ class AppLocalizationsHi extends AppLocalizations { @override String get defaultPlayerName => 'खिलाड़ी'; -} + @override + String get play => 'खेलें'; + + @override + String get history => 'इतिहास'; + + @override + String get mainTagline => 'बहुत देर होने से पहले impostor को ढूँढें'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_it.dart b/lib/l10n/generated/app_localizations_it.dart index 2e8438b..811dcc5 100644 --- a/lib/l10n/generated/app_localizations_it.dart +++ b/lib/l10n/generated/app_localizations_it.dart @@ -706,4 +706,13 @@ class AppLocalizationsIt extends AppLocalizations { @override String get defaultPlayerName => 'Giocatore'; -} + @override + String get play => 'Gioca'; + + @override + String get history => 'Cronologia'; + + @override + String get mainTagline => 'Scopri l’impostore prima che sia troppo tardi'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_ja.dart b/lib/l10n/generated/app_localizations_ja.dart index b5c8dfa..a81f583 100644 --- a/lib/l10n/generated/app_localizations_ja.dart +++ b/lib/l10n/generated/app_localizations_ja.dart @@ -703,4 +703,13 @@ class AppLocalizationsJa extends AppLocalizations { @override String get defaultPlayerName => 'プレイヤー'; -} + @override + String get play => 'プレイ'; + + @override + String get history => '履歴'; + + @override + String get mainTagline => '手遅れになる前にインポスターを見つけよう'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_ko.dart b/lib/l10n/generated/app_localizations_ko.dart index c18fba2..45af00e 100644 --- a/lib/l10n/generated/app_localizations_ko.dart +++ b/lib/l10n/generated/app_localizations_ko.dart @@ -703,4 +703,13 @@ class AppLocalizationsKo extends AppLocalizations { @override String get defaultPlayerName => '플레이어'; -} + @override + String get play => '플레이'; + + @override + String get history => '기록'; + + @override + String get mainTagline => '늦기 전에 임포스터를 찾아내세요'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_nl.dart b/lib/l10n/generated/app_localizations_nl.dart index 420db42..0e2f620 100644 --- a/lib/l10n/generated/app_localizations_nl.dart +++ b/lib/l10n/generated/app_localizations_nl.dart @@ -706,4 +706,13 @@ class AppLocalizationsNl extends AppLocalizations { @override String get defaultPlayerName => 'Speler'; -} + @override + String get play => 'Spelen'; + + @override + String get history => 'Geschiedenis'; + + @override + String get mainTagline => 'Vind de bedrieger voordat het te laat is'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_pl.dart b/lib/l10n/generated/app_localizations_pl.dart index 08adae2..dd776ec 100644 --- a/lib/l10n/generated/app_localizations_pl.dart +++ b/lib/l10n/generated/app_localizations_pl.dart @@ -706,4 +706,13 @@ class AppLocalizationsPl extends AppLocalizations { @override String get defaultPlayerName => 'Gracz'; -} + @override + String get play => 'Graj'; + + @override + String get history => 'Historia'; + + @override + String get mainTagline => 'Znajdź oszusta, zanim będzie za późno'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_pt.dart b/lib/l10n/generated/app_localizations_pt.dart index 88866d9..8ba168e 100644 --- a/lib/l10n/generated/app_localizations_pt.dart +++ b/lib/l10n/generated/app_localizations_pt.dart @@ -707,4 +707,13 @@ class AppLocalizationsPt extends AppLocalizations { @override String get defaultPlayerName => 'Jogador'; -} + @override + String get play => 'Jogar'; + + @override + String get history => 'Histórico'; + + @override + String get mainTagline => 'Descobre o impostor antes que seja tarde'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_ru.dart b/lib/l10n/generated/app_localizations_ru.dart index d96c262..5401aca 100644 --- a/lib/l10n/generated/app_localizations_ru.dart +++ b/lib/l10n/generated/app_localizations_ru.dart @@ -706,4 +706,13 @@ class AppLocalizationsRu extends AppLocalizations { @override String get defaultPlayerName => 'Игрок'; -} + @override + String get play => 'Играть'; + + @override + String get history => 'История'; + + @override + String get mainTagline => 'Найди самозванца, пока не стало слишком поздно'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_tr.dart b/lib/l10n/generated/app_localizations_tr.dart index 8123703..423fd97 100644 --- a/lib/l10n/generated/app_localizations_tr.dart +++ b/lib/l10n/generated/app_localizations_tr.dart @@ -705,4 +705,13 @@ class AppLocalizationsTr extends AppLocalizations { @override String get defaultPlayerName => 'Oyuncu'; -} + @override + String get play => 'Oyna'; + + @override + String get history => 'Geçmiş'; + + @override + String get mainTagline => 'Çok geç olmadan sahtekârı bul'; + +} \ No newline at end of file diff --git a/lib/l10n/generated/app_localizations_zh.dart b/lib/l10n/generated/app_localizations_zh.dart index 41d86f6..2ca6030 100644 --- a/lib/l10n/generated/app_localizations_zh.dart +++ b/lib/l10n/generated/app_localizations_zh.dart @@ -702,6 +702,15 @@ class AppLocalizationsZh extends AppLocalizations { @override String get defaultPlayerName => '玩家'; + @override + String get play => '开始'; + + @override + String get history => '历史'; + + @override + String get mainTagline => '在太晚之前找出冒牌者'; + } /// The translations for Chinese, as used in Taiwan (`zh_TW`). @@ -1274,4 +1283,13 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get defaultPlayerName => '玩家'; + + @override + String get play => '開始'; + + @override + String get history => '紀錄'; + + @override + String get mainTagline => '在太晚之前找出冒牌者'; } diff --git a/lib/pantallas/pantalla_lobby_host.dart b/lib/pantallas/pantalla_lobby_host.dart index 4eb1ddf..c095868 100644 --- a/lib/pantallas/pantalla_lobby_host.dart +++ b/lib/pantallas/pantalla_lobby_host.dart @@ -62,20 +62,30 @@ class _PantallaLobbyHostState extends State { ), const SizedBox(height: 14), PanelFarolero( - padding: const EdgeInsets.all(16), + padding: const EdgeInsets.fromLTRB(16, 18, 16, 16), child: Column( children: [ SizedBox( - width: 196, - height: 196, + width: 236, + height: 236, child: Stack( alignment: Alignment.center, children: [ + Positioned.fill( + child: IgnorePointer( + child: Image.asset( + 'assets/ui/generated/join_lobby/qr_frame.png', + fit: BoxFit.contain, + ), + ), + ), Container( - padding: const EdgeInsets.all(12), + width: 178, + height: 178, + padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: Colors.white, - borderRadius: BorderRadius.circular(18), + borderRadius: BorderRadius.circular(12), boxShadow: [ BoxShadow( color: TemaApp.colorNaranja.withValues(alpha: 0.18), @@ -86,18 +96,10 @@ class _PantallaLobbyHostState extends State { child: QrImageView( data: nearby.generarDatosQR(widget.nombreSala), version: QrVersions.auto, - size: 156, + size: 162, backgroundColor: Colors.white, ), ), - Positioned.fill( - child: IgnorePointer( - child: Image.asset( - 'assets/ui/generated/join_lobby/qr_frame.png', - fit: BoxFit.cover, - ), - ), - ), ], ), ), @@ -229,7 +231,8 @@ class _PantallaLobbyHostState extends State { }) { final color = ok ? TemaApp.colorVerde : TemaApp.colorNaranja; return Container( - padding: const EdgeInsets.all(12), + constraints: const BoxConstraints(minHeight: 70), + padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 10), decoration: BoxDecoration( color: color.withValues(alpha: 0.18), borderRadius: BorderRadius.circular(12), @@ -237,14 +240,24 @@ class _PantallaLobbyHostState extends State { ), child: Row( children: [ - Icon(icon, color: color), - const SizedBox(width: 8), + Icon(icon, color: color, size: 26), + const SizedBox(width: 10), Expanded( - child: Text(label, style: Theme.of(context).textTheme.bodySmall), + child: Text( + label, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: Theme.of(context).textTheme.bodySmall?.copyWith(height: 1.08), + ), ), + const SizedBox(width: 8), Text( value, - style: TextStyle(color: color, fontWeight: FontWeight.bold), + style: TextStyle( + color: color, + fontWeight: FontWeight.bold, + fontSize: 18, + ), ), ], ), diff --git a/lib/pantallas/pantalla_principal.dart b/lib/pantallas/pantalla_principal.dart index d4bcc99..d32f137 100644 --- a/lib/pantallas/pantalla_principal.dart +++ b/lib/pantallas/pantalla_principal.dart @@ -92,6 +92,7 @@ class PantallaPrincipal extends StatelessWidget { SizedBox(height: isWide ? 48 : 34), _HeroInicioPremium( subtitulo: l10n.subtitle, + tagline: l10n.mainTagline, compact: constraints.maxHeight < 760, ) .animate() @@ -99,7 +100,7 @@ class PantallaPrincipal extends StatelessWidget { .scale(begin: const Offset(0.92, 0.92)), SizedBox(height: isWide ? 46 : 34), _BotonInicioPremium.primario( - texto: 'Jugar', + texto: l10n.play, icono: Icons.play_arrow_rounded, onPressed: () { Navigator.push( @@ -134,7 +135,7 @@ class PantallaPrincipal extends StatelessWidget { ).animate().fadeIn(delay: 390.ms).slideY(begin: 0.16), const SizedBox(height: 14), _AccesoHistorialPremium( - etiqueta: 'Historial', + etiqueta: l10n.history, onPressed: () { Navigator.push( context, @@ -270,10 +271,12 @@ class _PerfilInicioPremium extends StatelessWidget { class _HeroInicioPremium extends StatelessWidget { final String subtitulo; + final String tagline; final bool compact; const _HeroInicioPremium({ required this.subtitulo, + required this.tagline, required this.compact, }); @@ -327,7 +330,7 @@ class _HeroInicioPremium extends StatelessWidget { ), const SizedBox(height: 4), Text( - 'Descubrí al impostor antes de que sea tarde', + tagline, textAlign: TextAlign.center, style: Theme.of(context).textTheme.bodyMedium?.copyWith( color: TemaApp.colorTextoSecundario, @@ -423,10 +426,11 @@ class _BotonInicioPremium extends StatelessWidget { @override Widget build(BuildContext context) { + final radius = BorderRadius.circular(hero ? 26 : 22); return Material( color: Colors.transparent, child: InkWell( - borderRadius: BorderRadius.circular(hero ? 26 : 22), + borderRadius: radius, onTap: onPressed, child: Ink( height: height, @@ -445,40 +449,55 @@ class _BotonInicioPremium extends StatelessWidget { ], ), child: ClipRRect( - borderRadius: BorderRadius.circular(hero ? 26 : 22), + borderRadius: radius, child: Stack( + alignment: Alignment.center, children: [ - if (hero) - Positioned.fill( - child: Image.asset( - 'assets/ui/generated/main/main_cta_frame.png', - fit: BoxFit.fill, - ), + Positioned.fill( + child: Image.asset( + 'assets/ui/premium/card_sheen_overlay.png', + fit: BoxFit.cover, + opacity: AlwaysStoppedAnimation(hero ? 0.20 : 0.14), ), - Row( - children: [ - SizedBox( - width: hero ? 70 : 62, - child: Icon( - icono, - color: foreground, - size: hero ? 38 : 27, + ), + Padding( + padding: EdgeInsets.symmetric( + horizontal: hero ? 18 : 16, + vertical: hero ? 14 : 11, + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + width: hero ? 46 : 38, + child: Icon( + icono, + color: foreground, + size: hero ? 36 : 27, + ), ), - ), - Expanded( - child: Text( - texto.toUpperCase(), - textAlign: TextAlign.center, - style: Theme.of(context).textTheme.titleLarge?.copyWith( - color: foreground, - fontSize: hero ? 28 : 18, - fontWeight: FontWeight.w900, - letterSpacing: hero ? 1.6 : 1.0, + const SizedBox(width: 10), + Expanded( + child: Center( + child: FittedBox( + fit: BoxFit.scaleDown, + child: Text( + texto.toUpperCase(), + maxLines: 1, + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.titleLarge?.copyWith( + color: foreground, + fontSize: hero ? 28 : 18, + fontWeight: FontWeight.w900, + letterSpacing: hero ? 1.4 : 1.0, + ), ), + ), + ), ), - ), - SizedBox(width: hero ? 70 : 62), - ], + SizedBox(width: hero ? 56 : 48), + ], + ), ), ], ), diff --git a/lib/pantallas/pantalla_seleccion_modo_juego.dart b/lib/pantallas/pantalla_seleccion_modo_juego.dart index 2b29b14..ca959aa 100644 --- a/lib/pantallas/pantalla_seleccion_modo_juego.dart +++ b/lib/pantallas/pantalla_seleccion_modo_juego.dart @@ -172,68 +172,87 @@ class _ModoCard extends StatelessWidget { ), ], ), - child: Stack( - children: [ - Positioned.fill( - child: ClipRRect( - borderRadius: BorderRadius.circular(28), - child: Image.asset( - marcoAsset, - fit: BoxFit.fill, - opacity: const AlwaysStoppedAnimation(0.86), + child: ConstrainedBox( + constraints: const BoxConstraints(minHeight: 164), + child: ClipRRect( + borderRadius: BorderRadius.circular(28), + child: Stack( + alignment: Alignment.center, + children: [ + Positioned.fill( + child: Image.asset( + marcoAsset, + fit: BoxFit.cover, + opacity: AlwaysStoppedAnimation(destacado ? 0.22 : 0.18), + ), ), - ), - ), - Positioned.fill( - child: Image.asset( - 'assets/ui/premium/card_sheen_overlay.png', - fit: BoxFit.cover, - opacity: AlwaysStoppedAnimation(destacado ? 0.34 : 0.22), - ), - ), - Padding( - padding: const EdgeInsets.all(20), - child: Row( - children: [ - Container( - width: 64, - height: 64, - decoration: BoxDecoration( - color: color.withValues(alpha: 0.18), - borderRadius: BorderRadius.circular(22), - border: Border.all(color: color.withValues(alpha: 0.72)), - ), - child: Icon(icono, color: color, size: 34), + Positioned.fill( + child: Image.asset( + 'assets/ui/premium/card_sheen_overlay.png', + fit: BoxFit.cover, + opacity: AlwaysStoppedAnimation(destacado ? 0.28 : 0.18), ), - const SizedBox(width: 16), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - titulo.toUpperCase(), - style: Theme.of(context).textTheme.titleLarge?.copyWith( - color: destacado ? TemaApp.colorDorado : Colors.white, - fontWeight: FontWeight.w900, - letterSpacing: 0.8, + ), + Padding( + padding: const EdgeInsets.fromLTRB(18, 18, 14, 18), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + width: 58, + height: 58, + decoration: BoxDecoration( + color: color.withValues(alpha: 0.18), + borderRadius: BorderRadius.circular(20), + border: Border.all(color: color.withValues(alpha: 0.72)), + ), + child: Icon(icono, color: color, size: 32), + ), + const SizedBox(width: 16), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + FittedBox( + fit: BoxFit.scaleDown, + alignment: Alignment.centerLeft, + child: Text( + titulo.toUpperCase(), + maxLines: 1, + style: Theme.of(context).textTheme.titleLarge?.copyWith( + color: destacado ? TemaApp.colorDorado : Colors.white, + fontWeight: FontWeight.w900, + letterSpacing: 0.8, + ), ), + ), + const SizedBox(height: 4), + Text( + subtitulo, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: Theme.of(context).textTheme.titleMedium?.copyWith(color: color), + ), + const SizedBox(height: 8), + Text( + descripcion, + maxLines: 2, + overflow: TextOverflow.ellipsis, + style: Theme.of(context).textTheme.bodyMedium?.copyWith(height: 1.18), + ), + ], ), - const SizedBox(height: 3), - Text( - subtitulo, - style: Theme.of(context).textTheme.titleMedium?.copyWith(color: color), - ), - const SizedBox(height: 7), - Text(descripcion, style: Theme.of(context).textTheme.bodyMedium), - ], - ), + ), + const SizedBox(width: 8), + Icon(Icons.chevron_right_rounded, color: color, size: 30), + ], ), - const SizedBox(width: 8), - Icon(Icons.chevron_right_rounded, color: color, size: 32), - ], - ), + ), + ], ), - ], + ), ), ), ), diff --git a/lib/tema/componentes_farolero.dart b/lib/tema/componentes_farolero.dart index b76bb56..e0808ad 100644 --- a/lib/tema/componentes_farolero.dart +++ b/lib/tema/componentes_farolero.dart @@ -149,6 +149,8 @@ class EncabezadoFarolero extends StatelessWidget { children: [ Text( titulo, + maxLines: 1, + overflow: TextOverflow.ellipsis, style: Theme.of(context).textTheme.headlineMedium?.copyWith( color: TemaApp.colorDorado, fontWeight: FontWeight.w900, @@ -158,6 +160,8 @@ class EncabezadoFarolero extends StatelessWidget { const SizedBox(height: 3), Text( subtitulo!, + maxLines: 2, + overflow: TextOverflow.ellipsis, style: Theme.of(context).textTheme.bodyMedium, ), ], @@ -290,6 +294,7 @@ class BotonFarolero extends StatelessWidget { @override Widget build(BuildContext context) { final habilitado = onPressed != null; + final colorTexto = habilitado ? foreground : TemaApp.colorTextoSecundario; return Material( color: Colors.transparent, @@ -297,7 +302,6 @@ class BotonFarolero extends StatelessWidget { borderRadius: BorderRadius.circular(18), onTap: onPressed, child: Ink( - height: 58, decoration: BoxDecoration( gradient: habilitado ? gradient @@ -323,37 +327,55 @@ class BotonFarolero extends StatelessWidget { ), ], ), - child: Stack( - children: [ - Positioned.fill( - child: Image.asset( - 'assets/ui/premium/card_sheen_overlay.png', - fit: BoxFit.cover, - opacity: const AlwaysStoppedAnimation(0.18), - ), - ), - Row( + child: ConstrainedBox( + constraints: const BoxConstraints(minHeight: 64), + child: ClipRRect( + borderRadius: BorderRadius.circular(18), + child: Stack( + alignment: Alignment.center, children: [ - SizedBox( - width: 58, - child: Icon(icono, color: foreground, size: 28), - ), - Expanded( - child: Text( - texto.toUpperCase(), - textAlign: TextAlign.center, - style: Theme.of(context).textTheme.titleMedium?.copyWith( - color: foreground, - fontSize: 18, - fontWeight: FontWeight.w900, - letterSpacing: 0.8, - ), + Positioned.fill( + child: Image.asset( + 'assets/ui/premium/card_sheen_overlay.png', + fit: BoxFit.cover, + opacity: const AlwaysStoppedAnimation(0.14), + ), + ), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 12), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + width: 42, + child: Icon(icono, color: colorTexto, size: 28), + ), + const SizedBox(width: 8), + Expanded( + child: Center( + child: FittedBox( + fit: BoxFit.scaleDown, + child: Text( + texto.toUpperCase(), + maxLines: 1, + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.titleMedium?.copyWith( + color: colorTexto, + fontSize: 18, + fontWeight: FontWeight.w900, + letterSpacing: 0.8, + ), + ), + ), + ), + ), + const SizedBox(width: 50), + ], ), ), - const SizedBox(width: 58), ], ), - ], + ), ), ), ),