import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'database.dart'; import 'song_grouping.dart'; import 'song_list.dart'; /// Bibliotheks-Tab: Künstler-Übersicht, gruppiert aus [MeloDb.watchSongs]. class ArtistListScreen extends StatelessWidget { const ArtistListScreen({super.key}); @override Widget build(BuildContext context) { final db = context.read(); return StreamBuilder>( stream: db.watchSongs(), builder: (context, snapshot) { final songs = snapshot.data ?? const []; if (songs.isEmpty) { return const Center( child: Text('Keine Künstler', style: TextStyle(color: Colors.white54)), ); } final grouped = groupByArtist(songs); final artists = grouped.keys.toList(); return ListView.builder( itemCount: artists.length, itemBuilder: (context, i) { final artist = artists[i]; final artistSongs = grouped[artist]!; return ListTile( title: Text(artist, maxLines: 1, overflow: TextOverflow.ellipsis), subtitle: Text('${artistSongs.length} Songs'), onTap: () => Navigator.push( context, MaterialPageRoute( builder: (_) => _ArtistSongsScreen(artist: artist, songs: artistSongs), ), ), ); }, ); }, ); } } /// Zeigt alle Songs eines Künstlers. class _ArtistSongsScreen extends StatelessWidget { const _ArtistSongsScreen({required this.artist, required this.songs}); final String artist; final List songs; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text(artist)), body: SongList(songs), ); } } /// Künstler-Übersicht als eigener Bildschirm (Schnellzugriff "Künstler"). class ArtistsScreen extends StatelessWidget { const ArtistsScreen({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Künstler')), body: const ArtistListScreen(), ); } }