fix(ci): resolve premium UI analyzer errors
Build & Deploy Pluriwave / Build APK + AAB release (push) Has been skipped
Build & Deploy Pluriwave / Análisis de código (push) Failing after 9s

This commit is contained in:
2026-05-20 20:07:24 +02:00
parent c707fc9911
commit 9c51454d57
9 changed files with 535 additions and 287 deletions
+62 -25
View File
@@ -1,22 +1,35 @@
import 'package:flutter/material.dart';
import 'package:flutter/material.dart';
import 'package:flutter_animate/flutter_animate.dart';
import 'package:provider/provider.dart';
import '../estado/estado_radio.dart';
import '../tema/pluriwave_theme.dart';
import '../widgets/pluri_glass_surface.dart';
import '../widgets/pluri_icon.dart';
import '../widgets/tarjeta_emisora.dart';
import 'package:pluriwave/widgets/tarjeta_emisora.dart';
const _paises = [
('España', 'ES'), ('USA', 'US'), ('México', 'MX'), ('Argentina', 'AR'),
('UK', 'GB'), ('Francia', 'FR'), ('Alemania', 'DE'), ('Italia', 'IT'),
('Brasil', 'BR'), ('Japón', 'JP'),
('España', 'ES'),
('USA', 'US'),
('México', 'MX'),
('Argentina', 'AR'),
('UK', 'GB'),
('Francia', 'FR'),
('Alemania', 'DE'),
('Italia', 'IT'),
('Brasil', 'BR'),
('Japón', 'JP'),
];
const _idiomas = [
'spanish', 'english', 'french', 'german', 'portuguese',
'italian', 'japanese', 'arabic', 'russian',
'spanish',
'english',
'french',
'german',
'portuguese',
'italian',
'japanese',
'arabic',
'russian',
];
class PantallaBuscar extends StatefulWidget {
@@ -60,7 +73,10 @@ class _PantallaBuscarState extends State<PantallaBuscar> {
child: SearchBar(
controller: _controller,
hintText: 'Nombre de la emisora...',
leading: const PluriIcon(glyph: PluriIconGlyph.search, variant: PluriIconVariant.filled),
leading: const PluriIcon(
glyph: PluriIconGlyph.search,
variant: PluriIconVariant.filled,
),
trailing: [
if (_controller.text.isNotEmpty)
IconButton(
@@ -77,14 +93,24 @@ class _PantallaBuscarState extends State<PantallaBuscar> {
),
),
),
_seccionFiltro('País', _paises.map((p) => (p.$1, p.$2)).toList(), _paisSeleccionado, (v) {
setState(() => _paisSeleccionado = v);
_buscar();
}),
_seccionFiltro('Idioma', _idiomas.map((i) => (i, i)).toList(), _idiomaSeleccionado, (v) {
setState(() => _idiomaSeleccionado = v);
_buscar();
}),
_seccionFiltro(
'País',
_paises.map((p) => (p.$1, p.$2)).toList(),
_paisSeleccionado,
(v) {
setState(() => _paisSeleccionado = v);
_buscar();
},
),
_seccionFiltro(
'Idioma',
_idiomas.map((i) => (i, i)).toList(),
_idiomaSeleccionado,
(v) {
setState(() => _idiomaSeleccionado = v);
_buscar();
},
),
Expanded(child: _resultados(estado, theme)),
],
);
@@ -138,15 +164,25 @@ class _PantallaBuscarState extends State<PantallaBuscar> {
final resultados = estado.resultadosBusqueda;
if (resultados.isEmpty) {
final sinFiltros = _controller.text.isEmpty && _paisSeleccionado == null && _idiomaSeleccionado == null;
final sinFiltros =
_controller.text.isEmpty &&
_paisSeleccionado == null &&
_idiomaSeleccionado == null;
return Center(
child: PluriGlassSurface(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const PluriIcon(glyph: PluriIconGlyph.search, variant: PluriIconVariant.activeGlow, size: 44),
const PluriIcon(
glyph: PluriIconGlyph.search,
variant: PluriIconVariant.activeGlow,
size: 44,
),
const SizedBox(height: 14),
Text(sinFiltros ? 'Buscá una emisora' : 'Sin resultados', style: theme.textTheme.titleMedium),
Text(
sinFiltros ? 'Buscá una emisora' : 'Sin resultados',
style: theme.textTheme.titleMedium,
),
],
),
),
@@ -157,11 +193,12 @@ class _PantallaBuscarState extends State<PantallaBuscar> {
padding: const EdgeInsets.all(16),
itemCount: resultados.length,
separatorBuilder: (_, __) => const SizedBox(height: 6),
itemBuilder: (context, i) => TarjetaEmisora(
emisora: resultados[i],
esCompacta: true,
onTap: () => context.read<EstadoRadio>().reproducir(resultados[i]),
).animate().fadeIn(delay: (i * 20).ms),
itemBuilder:
(context, i) => TarjetaEmisora(
emisora: resultados[i],
esCompacta: true,
onTap: () => context.read<EstadoRadio>().reproducir(resultados[i]),
).animate().fadeIn(delay: (i * 20).ms),
);
}
}