import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../estado/estado_radio.dart'; import '../widgets/tarjeta_emisora.dart'; /// Pantalla de emisoras favoritas con reordenado y swipe-to-delete. 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: Column( mainAxisSize: MainAxisSize.min, children: [ Icon(Icons.favorite_border, size: 72, color: theme.colorScheme.outlineVariant), const SizedBox(height: 16), Text('Sin favoritos aún', style: theme.textTheme.titleMedium), const SizedBox(height: 8), Text( 'Toca ♥ en cualquier emisora para guardarla', style: theme.textTheme.bodyMedium?.copyWith( color: theme.colorScheme.onSurfaceVariant, ), ), ], ), ); } return ReorderableListView.builder( padding: const EdgeInsets.all(8), 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 Dismissible( key: Key(emisora.uuid), direction: DismissDirection.endToStart, background: Container( color: theme.colorScheme.error, alignment: Alignment.centerRight, padding: const EdgeInsets.only(right: 16), child: Icon(Icons.delete, color: theme.colorScheme.onError), ), onDismissed: (_) 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')), ); } }, child: TarjetaEmisora( key: Key(emisora.uuid), emisora: emisora, esCompacta: true, onTap: () => estado.reproducir(emisora), ), ); }, ); } }