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 '../widgets/pluri_premium_widgets.dart'; import 'package:pluriwave/widgets/tarjeta_emisora.dart'; import 'reproducir_minimizado.dart'; class PantallaFavoritos extends StatelessWidget { const PantallaFavoritos({super.key}); @override Widget build(BuildContext context) { final estado = context.watch(); final favoritos = estado.listaFavoritos; if (favoritos.isEmpty) { return ListView( padding: EdgeInsets.fromLTRB(0, 0, 0, 124), children: [ PluriScreenHeader( title: 'Favoritos', subtitle: 'Tu cabina personal para volver a las senales que mas escuchas.', glyph: PluriIconGlyph.favorites, trailing: PluriStatusPill( icon: Icons.favorite_rounded, label: 'Coleccion', ), ), SizedBox( height: 320, child: PluriEmptyState( glyph: PluriIconGlyph.favorites, title: 'Sin favoritos aun', subtitle: 'Toca el corazon en cualquier emisora para guardarla en tu coleccion.', ), ), ], ); } return CustomScrollView( slivers: [ SliverToBoxAdapter( child: PluriScreenHeader( title: 'Favoritos', subtitle: 'Reordena tu coleccion y deja arriba las radios que mas importan.', glyph: PluriIconGlyph.favorites, trailing: PluriStatusPill( icon: Icons.library_music_rounded, label: '${favoritos.length} guardadas', ), ), ), SliverPadding( padding: const EdgeInsets.fromLTRB(12, 4, 12, 124), sliver: SliverReorderableList( proxyDecorator: (child, index, animation) => ScaleTransition( scale: Tween(begin: 1, end: 1.03).animate(animation), child: child, ), // ignore: deprecated_member_use 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: 5), child: PluriGlassSurface( padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 7), child: Row( children: [ ReorderableDragStartListener( index: i, child: const Padding( padding: EdgeInsets.all(8), child: Icon(Icons.drag_indicator_rounded), ), ), Expanded( child: TarjetaEmisora( key: Key(emisora.uuid), emisora: emisora, esCompacta: true, onTap: () => reproducirMinimizado(context, emisora), ), ), IconButton.filledTonal( 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'), ), ); } }, ), ], ), ), ); }, ), ), ], ); } }