fix(buscar): build the 2x2 "Explorar por" grid, add Novedades

Audit 3.2 (t4 lines 162-171): the prototype groups Países, Géneros,
Tendencias and the entirely-missing Novedades into one 2x2 entry-point
grid. The build had them as three unrelated always-visible widgets
(a Países ListTile, a Géneros FilterChip Wrap, a Tendencias ActionChip
strip) and no Novedades entry at all.

Replaces all three with a single grid section, capability-preserving:
Países still pushes PantallaPaises; Géneros and Tendencias now open
their exact existing content in a picker sheet instead of always-on-
screen (Géneros auto-closes on selection, matching this screen's other
single-choice filter sheets; Tendencias stays open, a browse list, not
a filter). Novedades re-triggers the existing discovery refresh, since
no distinct "new stations" feed exists anywhere in the domain.

New ARB key set (exploreByTitle/exploreTrendingTitle/
exploreTrendingSubtitle/exploreNewTitle/exploreNewSubtitle) translated
across all 13 locales with zero anti-copy allowlist entries needed.

Also fixes a pre-existing PluriEmptyState overflow this restructure
exposed (unrelated to the grid itself, confirmed via isolated repro):
wraps its Column in a SingleChildScrollView so a too-tall title/
subtitle scrolls instead of throwing a hard RenderFlex overflow.
This commit is contained in:
2026-07-30 00:43:27 +02:00
parent a49b2b6519
commit e5d461af53
31 changed files with 755 additions and 58 deletions
+5
View File
@@ -306,6 +306,11 @@
"detectAction": "اكتشاف",
"liveRadar": "رادار مباشر",
"genresTitle": "الأنواع",
"exploreByTitle": "استكشاف حسب",
"exploreTrendingTitle": "الرائجة",
"exploreTrendingSubtitle": "اليوم",
"exploreNewTitle": "جديد",
"exploreNewSubtitle": "هذا الأسبوع",
"offlineBannerTitle": "لا يوجد اتصال",
"retryAction": "إعادة المحاولة",
"noStationsAvailable": "لا توجد محطات متاحة",
+5
View File
@@ -306,6 +306,11 @@
"detectAction": "সনাক্ত করুন",
"liveRadar": "লাইভ রাডার",
"genresTitle": "ধরন",
"exploreByTitle": "যেভাবে অন্বেষণ করুন",
"exploreTrendingTitle": "ট্রেন্ডিং",
"exploreTrendingSubtitle": "আজ",
"exploreNewTitle": "নতুন",
"exploreNewSubtitle": "এই সপ্তাহে",
"offlineBannerTitle": "সংযোগ নেই",
"retryAction": "আবার চেষ্টা করুন",
"noStationsAvailable": "কোনো স্টেশন উপলব্ধ নেই",
+5
View File
@@ -306,6 +306,11 @@
"detectAction": "Erkennen",
"liveRadar": "Live-Radar",
"genresTitle": "Genres",
"exploreByTitle": "Entdecken nach",
"exploreTrendingTitle": "Trends",
"exploreTrendingSubtitle": "Heute",
"exploreNewTitle": "Neuheiten",
"exploreNewSubtitle": "Diese Woche",
"offlineBannerTitle": "Keine Verbindung",
"retryAction": "Erneut versuchen",
"noStationsAvailable": "Keine Sender verfügbar",
+5
View File
@@ -369,6 +369,11 @@
"detectAction": "Detect",
"liveRadar": "Live radar",
"genresTitle": "Genres",
"exploreByTitle": "Browse by",
"exploreTrendingTitle": "Trending",
"exploreTrendingSubtitle": "Today",
"exploreNewTitle": "New",
"exploreNewSubtitle": "This week",
"offlineBannerTitle": "No connection",
"retryAction": "Retry",
"noStationsAvailable": "No stations available",
+5
View File
@@ -369,6 +369,11 @@
"detectAction": "Detectar",
"liveRadar": "Radar en directo",
"genresTitle": "Géneros",
"exploreByTitle": "Explorar por",
"exploreTrendingTitle": "Tendencias",
"exploreTrendingSubtitle": "Hoy",
"exploreNewTitle": "Novedades",
"exploreNewSubtitle": "Esta semana",
"offlineBannerTitle": "Sin conexión",
"retryAction": "Reintentar",
"noStationsAvailable": "No hay emisoras disponibles",
+5
View File
@@ -306,6 +306,11 @@
"detectAction": "Détecter",
"liveRadar": "Radar en direct",
"genresTitle": "Genres",
"exploreByTitle": "Explorer par",
"exploreTrendingTitle": "Tendances",
"exploreTrendingSubtitle": "Aujourd'hui",
"exploreNewTitle": "Nouveautés",
"exploreNewSubtitle": "Cette semaine",
"offlineBannerTitle": "Aucune connexion",
"retryAction": "Réessayer",
"noStationsAvailable": "Aucune station disponible",
+5
View File
@@ -306,6 +306,11 @@
"detectAction": "पहचानें",
"liveRadar": "लाइव रडार",
"genresTitle": "शैलियाँ",
"exploreByTitle": "इस अनुसार खोजें",
"exploreTrendingTitle": "ट्रेंडिंग",
"exploreTrendingSubtitle": "आज",
"exploreNewTitle": "नया",
"exploreNewSubtitle": "इस सप्ताह",
"offlineBannerTitle": "कोई कनेक्शन नहीं",
"retryAction": "फिर कोशिश करें",
"noStationsAvailable": "कोई स्टेशन उपलब्ध नहीं",
+5
View File
@@ -306,6 +306,11 @@
"detectAction": "Deteksi",
"liveRadar": "Radar langsung",
"genresTitle": "Genre",
"exploreByTitle": "Jelajahi berdasarkan",
"exploreTrendingTitle": "Tren",
"exploreTrendingSubtitle": "Hari ini",
"exploreNewTitle": "Baru",
"exploreNewSubtitle": "Minggu ini",
"offlineBannerTitle": "Tidak ada koneksi",
"retryAction": "Coba lagi",
"noStationsAvailable": "Tidak ada stasiun tersedia",
+5
View File
@@ -306,6 +306,11 @@
"detectAction": "Rileva",
"liveRadar": "Radar live",
"genresTitle": "Generi",
"exploreByTitle": "Esplora per",
"exploreTrendingTitle": "Tendenze",
"exploreTrendingSubtitle": "Oggi",
"exploreNewTitle": "Novità",
"exploreNewSubtitle": "Questa settimana",
"offlineBannerTitle": "Nessuna connessione",
"retryAction": "Riprova",
"noStationsAvailable": "Nessuna emittente disponibile",
+5
View File
@@ -306,6 +306,11 @@
"detectAction": "検出",
"liveRadar": "ライブレーダー",
"genresTitle": "ジャンル",
"exploreByTitle": "カテゴリで探す",
"exploreTrendingTitle": "トレンド",
"exploreTrendingSubtitle": "今日",
"exploreNewTitle": "新着",
"exploreNewSubtitle": "今週",
"offlineBannerTitle": "接続なし",
"retryAction": "再試行",
"noStationsAvailable": "利用できる局がありません",
+5
View File
@@ -306,6 +306,11 @@
"detectAction": "Detectar",
"liveRadar": "Radar ao vivo",
"genresTitle": "Gêneros",
"exploreByTitle": "Navegar por",
"exploreTrendingTitle": "Tendências",
"exploreTrendingSubtitle": "Hoje",
"exploreNewTitle": "Novidades",
"exploreNewSubtitle": "Nesta semana",
"offlineBannerTitle": "Sem conexão",
"retryAction": "Tentar novamente",
"noStationsAvailable": "Não há estações disponíveis",
+5
View File
@@ -306,6 +306,11 @@
"detectAction": "Определить",
"liveRadar": "Радар в эфире",
"genresTitle": "Жанры",
"exploreByTitle": "Обзор по",
"exploreTrendingTitle": "В тренде",
"exploreTrendingSubtitle": "Сегодня",
"exploreNewTitle": "Новинки",
"exploreNewSubtitle": "На этой неделе",
"offlineBannerTitle": "Нет подключения",
"retryAction": "Повторить",
"noStationsAvailable": "Нет доступных станций",
+5
View File
@@ -306,6 +306,11 @@
"detectAction": "检测",
"liveRadar": "直播雷达",
"genresTitle": "类型",
"exploreByTitle": "浏览分类",
"exploreTrendingTitle": "热门",
"exploreTrendingSubtitle": "今天",
"exploreNewTitle": "最新",
"exploreNewSubtitle": "本周",
"offlineBannerTitle": "无连接",
"retryAction": "重试",
"noStationsAvailable": "没有可用电台",
+30
View File
@@ -1438,6 +1438,36 @@ abstract class AppLocalizations {
/// **'Géneros'**
String get genresTitle;
/// No description provided for @exploreByTitle.
///
/// In es, this message translates to:
/// **'Explorar por'**
String get exploreByTitle;
/// No description provided for @exploreTrendingTitle.
///
/// In es, this message translates to:
/// **'Tendencias'**
String get exploreTrendingTitle;
/// No description provided for @exploreTrendingSubtitle.
///
/// In es, this message translates to:
/// **'Hoy'**
String get exploreTrendingSubtitle;
/// No description provided for @exploreNewTitle.
///
/// In es, this message translates to:
/// **'Novedades'**
String get exploreNewTitle;
/// No description provided for @exploreNewSubtitle.
///
/// In es, this message translates to:
/// **'Esta semana'**
String get exploreNewSubtitle;
/// No description provided for @offlineBannerTitle.
///
/// In es, this message translates to:
+15
View File
@@ -766,6 +766,21 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get genresTitle => 'الأنواع';
@override
String get exploreByTitle => 'استكشاف حسب';
@override
String get exploreTrendingTitle => 'الرائجة';
@override
String get exploreTrendingSubtitle => 'اليوم';
@override
String get exploreNewTitle => 'جديد';
@override
String get exploreNewSubtitle => 'هذا الأسبوع';
@override
String get offlineBannerTitle => 'لا يوجد اتصال';
+15
View File
@@ -769,6 +769,21 @@ class AppLocalizationsBn extends AppLocalizations {
@override
String get genresTitle => 'ধরন';
@override
String get exploreByTitle => 'যেভাবে অন্বেষণ করুন';
@override
String get exploreTrendingTitle => 'ট্রেন্ডিং';
@override
String get exploreTrendingSubtitle => 'আজ';
@override
String get exploreNewTitle => 'নতুন';
@override
String get exploreNewSubtitle => 'এই সপ্তাহে';
@override
String get offlineBannerTitle => 'সংযোগ নেই';
+15
View File
@@ -772,6 +772,21 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get genresTitle => 'Genres';
@override
String get exploreByTitle => 'Entdecken nach';
@override
String get exploreTrendingTitle => 'Trends';
@override
String get exploreTrendingSubtitle => 'Heute';
@override
String get exploreNewTitle => 'Neuheiten';
@override
String get exploreNewSubtitle => 'Diese Woche';
@override
String get offlineBannerTitle => 'Keine Verbindung';
+15
View File
@@ -765,6 +765,21 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get genresTitle => 'Genres';
@override
String get exploreByTitle => 'Browse by';
@override
String get exploreTrendingTitle => 'Trending';
@override
String get exploreTrendingSubtitle => 'Today';
@override
String get exploreNewTitle => 'New';
@override
String get exploreNewSubtitle => 'This week';
@override
String get offlineBannerTitle => 'No connection';
+15
View File
@@ -770,6 +770,21 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get genresTitle => 'Géneros';
@override
String get exploreByTitle => 'Explorar por';
@override
String get exploreTrendingTitle => 'Tendencias';
@override
String get exploreTrendingSubtitle => 'Hoy';
@override
String get exploreNewTitle => 'Novedades';
@override
String get exploreNewSubtitle => 'Esta semana';
@override
String get offlineBannerTitle => 'Sin conexión';
+15
View File
@@ -774,6 +774,21 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get genresTitle => 'Genres';
@override
String get exploreByTitle => 'Explorer par';
@override
String get exploreTrendingTitle => 'Tendances';
@override
String get exploreTrendingSubtitle => 'Aujourd\'hui';
@override
String get exploreNewTitle => 'Nouveautés';
@override
String get exploreNewSubtitle => 'Cette semaine';
@override
String get offlineBannerTitle => 'Aucune connexion';
+15
View File
@@ -766,6 +766,21 @@ class AppLocalizationsHi extends AppLocalizations {
@override
String get genresTitle => 'शैलियाँ';
@override
String get exploreByTitle => 'इस अनुसार खोजें';
@override
String get exploreTrendingTitle => 'ट्रेंडिंग';
@override
String get exploreTrendingSubtitle => 'आज';
@override
String get exploreNewTitle => 'नया';
@override
String get exploreNewSubtitle => 'इस सप्ताह';
@override
String get offlineBannerTitle => 'कोई कनेक्शन नहीं';
+15
View File
@@ -766,6 +766,21 @@ class AppLocalizationsId extends AppLocalizations {
@override
String get genresTitle => 'Genre';
@override
String get exploreByTitle => 'Jelajahi berdasarkan';
@override
String get exploreTrendingTitle => 'Tren';
@override
String get exploreTrendingSubtitle => 'Hari ini';
@override
String get exploreNewTitle => 'Baru';
@override
String get exploreNewSubtitle => 'Minggu ini';
@override
String get offlineBannerTitle => 'Tidak ada koneksi';
+15
View File
@@ -772,6 +772,21 @@ class AppLocalizationsIt extends AppLocalizations {
@override
String get genresTitle => 'Generi';
@override
String get exploreByTitle => 'Esplora per';
@override
String get exploreTrendingTitle => 'Tendenze';
@override
String get exploreTrendingSubtitle => 'Oggi';
@override
String get exploreNewTitle => 'Novità';
@override
String get exploreNewSubtitle => 'Questa settimana';
@override
String get offlineBannerTitle => 'Nessuna connessione';
+15
View File
@@ -740,6 +740,21 @@ class AppLocalizationsJa extends AppLocalizations {
@override
String get genresTitle => 'ジャンル';
@override
String get exploreByTitle => 'カテゴリで探す';
@override
String get exploreTrendingTitle => 'トレンド';
@override
String get exploreTrendingSubtitle => '今日';
@override
String get exploreNewTitle => '新着';
@override
String get exploreNewSubtitle => '今週';
@override
String get offlineBannerTitle => '接続なし';
+15
View File
@@ -769,6 +769,21 @@ class AppLocalizationsPt extends AppLocalizations {
@override
String get genresTitle => 'Gêneros';
@override
String get exploreByTitle => 'Navegar por';
@override
String get exploreTrendingTitle => 'Tendências';
@override
String get exploreTrendingSubtitle => 'Hoje';
@override
String get exploreNewTitle => 'Novidades';
@override
String get exploreNewSubtitle => 'Nesta semana';
@override
String get offlineBannerTitle => 'Sem conexão';
+15
View File
@@ -770,6 +770,21 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get genresTitle => 'Жанры';
@override
String get exploreByTitle => 'Обзор по';
@override
String get exploreTrendingTitle => 'В тренде';
@override
String get exploreTrendingSubtitle => 'Сегодня';
@override
String get exploreNewTitle => 'Новинки';
@override
String get exploreNewSubtitle => 'На этой неделе';
@override
String get offlineBannerTitle => 'Нет подключения';
+15
View File
@@ -737,6 +737,21 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get genresTitle => '类型';
@override
String get exploreByTitle => '浏览分类';
@override
String get exploreTrendingTitle => '热门';
@override
String get exploreTrendingSubtitle => '今天';
@override
String get exploreNewTitle => '最新';
@override
String get exploreNewSubtitle => '本周';
@override
String get offlineBannerTitle => '无连接';