import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../library/database.dart'; import '../library/playlist_service.dart'; import 'theme.dart'; /// Herz-Toggle: ausgefüllt = favorisiert, umrandet = nicht favorisiert. /// /// Ohne [songId] (Titel, der nur am Server liegt) bleibt das Herz sichtbar, /// aber ausgegraut. Vorher kam hier der leere String an: das Herz füllte sich, /// die Favoritenliste blieb leer — sie verbindet über die Song-UUID, die ein /// reiner Server-Titel nicht hat. class FavoriteButton extends StatelessWidget { const FavoriteButton({super.key, required this.songId}); final String songId; @override Widget build(BuildContext context) { if (songId.isEmpty) { return const IconButton( tooltip: 'Nur für Titel in deiner Bibliothek', icon: Icon(Icons.favorite_border, color: MeloTheme.text3), onPressed: null, ); } final db = context.read(); final service = context.read(); return StreamBuilder( stream: db.watchIsFavorite(songId), builder: (context, snapshot) { final isFavorite = snapshot.data ?? false; return IconButton( tooltip: isFavorite ? 'Favorit entfernen' : 'Zu Favoriten hinzufügen', icon: Icon( isFavorite ? Icons.favorite : Icons.favorite_border, color: isFavorite ? MeloTheme.red : MeloTheme.text2, ), onPressed: () => service.toggleFavorite(songId), ); }, ); } }