fix(ui): unify scroll and improve playback switching
Build & Deploy Pluriwave / Análisis de código (push) Successful in 12s
Build & Deploy Pluriwave / Build APK + AAB release (push) Successful in 1m17s

This commit is contained in:
2026-05-20 23:44:14 +02:00
parent 34022e0814
commit 10520fef48
5 changed files with 138 additions and 191 deletions
+22 -12
View File
@@ -67,7 +67,8 @@ class _PantallaBuscarState extends State<PantallaBuscar> {
final estado = context.watch<EstadoRadio>();
final theme = Theme.of(context);
return Column(
return ListView(
padding: const EdgeInsets.fromLTRB(0, 0, 0, 124),
children: [
PluriScreenHeader(
title: 'Buscar senal',
@@ -125,7 +126,7 @@ class _PantallaBuscarState extends State<PantallaBuscar> {
_buscar();
},
),
Expanded(child: _resultados(estado, theme)),
_resultados(estado, theme),
],
);
}
@@ -144,7 +145,7 @@ class _PantallaBuscarState extends State<PantallaBuscar> {
children: [
Expanded(
child: Text(
pais == null ? 'Emisoras cercanas' : 'Emisoras cercanas ? $pais',
pais == null ? 'Emisoras cercanas' : 'Emisoras cercanas - $pais',
style: theme.textTheme.labelLarge?.copyWith(
fontWeight: FontWeight.w900,
),
@@ -247,7 +248,10 @@ class _PantallaBuscarState extends State<PantallaBuscar> {
Widget _resultados(EstadoRadio estado, ThemeData theme) {
if (estado.cargandoBusqueda) {
return const Center(child: CircularProgressIndicator());
return const SizedBox(
height: 220,
child: Center(child: CircularProgressIndicator()),
);
}
final resultados = estado.resultadosBusqueda;
@@ -257,18 +261,24 @@ class _PantallaBuscarState extends State<PantallaBuscar> {
_controller.text.isEmpty &&
_paisSeleccionado == null &&
_idiomaSeleccionado == null;
return PluriEmptyState(
glyph: PluriIconGlyph.search,
title: sinFiltros ? 'Busca una emisora' : 'Sin resultados',
subtitle: sinFiltros
? 'Usa la barra superior o los chips para descubrir senales de todo el mundo.'
: 'Proba quitar filtros o escribir otro nombre para encontrar una senal activa.',
return SizedBox(
height: 260,
child: PluriEmptyState(
glyph: PluriIconGlyph.search,
title: sinFiltros ? 'Busca una emisora' : 'Sin resultados',
subtitle: sinFiltros
? 'Usa la barra superior o los chips para descubrir senales de todo el mundo.'
: 'Proba quitar filtros o escribir otro nombre para encontrar una senal activa.',
),
);
}
final total = resultados.length + (estado.hayMasBusqueda ? 1 : 0);
return ListView.separated(
padding: const EdgeInsets.fromLTRB(16, 16, 16, 120),
itemCount: resultados.length + (estado.hayMasBusqueda ? 1 : 0),
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
padding: const EdgeInsets.fromLTRB(16, 16, 16, 16),
itemCount: total,
separatorBuilder: (_, __) => const SizedBox(height: 10),
itemBuilder: (context, i) {
if (i >= resultados.length) {