import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../estado/estado_radio.dart'; import '../widgets/pluri_glass_surface.dart'; import '../widgets/pluri_icon.dart'; import 'package:pluriwave/widgets/tarjeta_emisora.dart'; class PantallaFavoritos extends StatelessWidget { const PantallaFavoritos({super.key}); @override Widget build(BuildContext context) { final estado = context.watch(); final favoritos = estado.listaFavoritos; final theme = Theme.of(context); if (favoritos.isEmpty) { return Center( child: PluriGlassSurface( child: Column( mainAxisSize: MainAxisSize.min, children: [ const PluriIcon( glyph: PluriIconGlyph.favorites, variant: PluriIconVariant.activeGlow, size: 52, ), const SizedBox(height: 16), Text('Sin favoritos aún', style: theme.textTheme.titleMedium), const SizedBox(height: 8), Text( 'Tocá ♥ en cualquier emisora para guardarla', style: theme.textTheme.bodyMedium?.copyWith( color: theme.colorScheme.onSurfaceVariant, ), ), ], ), ), ); } return ReorderableListView.builder( padding: const EdgeInsets.all(12), onReorder: (oldIndex, newIndex) async { if (newIndex > oldIndex) newIndex--; final emisora = favoritos[oldIndex]; await estado.favoritos.reordenar(emisora.uuid, newIndex); await estado.cargarFavoritos(); }, itemCount: favoritos.length, itemBuilder: (context, i) { final emisora = favoritos[i]; return Padding( key: ValueKey('favorito-pad-${emisora.uuid}'), padding: const EdgeInsets.symmetric(vertical: 4), child: PluriGlassSurface( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 6), child: Row( children: [ const Icon(Icons.drag_indicator_rounded), const SizedBox(width: 6), Expanded( child: TarjetaEmisora( key: Key(emisora.uuid), emisora: emisora, esCompacta: true, onTap: () => estado.reproducir(emisora), ), ), IconButton( tooltip: 'Eliminar de favoritos', icon: const Icon(Icons.delete_outline_rounded), onPressed: () async { await estado.favoritos.eliminar(emisora.uuid); await estado.cargarFavoritos(); if (context.mounted) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( '${emisora.nombre} eliminada de favoritos', ), ), ); } }, ), ], ), ), ); }, ); } }