feat(stations): add quality filters and list ordering
Build & Deploy Pluriwave / Análisis de código (push) Successful in 26s
Build & Deploy Pluriwave / Build APK + AAB release (push) Successful in 1m42s

This commit is contained in:
2026-05-22 15:54:39 +02:00
parent 0114e4805e
commit f667277e35
9 changed files with 306 additions and 101 deletions
+52
View File
@@ -62,6 +62,8 @@ class _AjustesContent extends StatelessWidget {
SizedBox(height: 12),
_SeccionIdioma(),
SizedBox(height: 12),
_SeccionOrdenListas(),
SizedBox(height: 12),
_SeccionEmisoraPreferida(),
SizedBox(height: 12),
_SeccionEmisoras(),
@@ -641,6 +643,56 @@ class _SeccionEcualizador extends StatelessWidget {
}
}
class _SeccionOrdenListas extends StatelessWidget {
const _SeccionOrdenListas();
@override
Widget build(BuildContext context) {
final estado = context.watch<EstadoRadio>();
return PluriGlassSurface(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
const Icon(Icons.sort_rounded),
const SizedBox(width: 12),
Text(
'Orden de emisoras',
style: Theme.of(context).textTheme.titleMedium,
),
],
),
const SizedBox(height: 8),
SegmentedButton<OrdenEmisoras>(
segments: const [
ButtonSegment(
value: OrdenEmisoras.nombre,
icon: Icon(Icons.sort_by_alpha_rounded),
label: Text('Por nombre'),
),
ButtonSegment(
value: OrdenEmisoras.calidad,
icon: Icon(Icons.hd_rounded),
label: Text('Por calidad'),
),
],
selected: {estado.ordenListas},
onSelectionChanged: (value) {
estado.cambiarOrdenListas(value.first);
},
),
const SizedBox(height: 8),
Text(
'Se aplica a favoritos, b?squedas, emisoras cercanas y listados r?pidos.',
style: Theme.of(context).textTheme.bodySmall,
),
],
),
);
}
}
class _SeccionEmisoraPreferida extends StatelessWidget {
const _SeccionEmisoraPreferida();