import 'database.dart'; const unbekannterKuenstler = 'Unbekannt'; /// Gruppiert [songs] nach Künstler (fehlender Künstler → [unbekannterKuenstler]), /// alphabetisch nach Künstlername sortiert. Map> groupByArtist(List songs) { return _groupBy(songs, (s) => s.artist, unbekannterKuenstler); } const ohneAlbum = 'Ohne Album'; /// Gruppiert [songs] nach Album (fehlendes Album → [ohneAlbum]), /// alphabetisch nach Albumnamen sortiert. Map> groupByAlbum(List songs) { return _groupBy(songs, (s) => s.album, ohneAlbum); } Map> _groupBy( List songs, String? Function(Song) keyOf, String fallback, ) { final grouped = >{}; for (final song in songs) { final key = keyOf(song) ?? fallback; grouped.putIfAbsent(key, () => []).add(song); } final sortedKeys = grouped.keys.toList() ..sort((a, b) => a.toLowerCase().compareTo(b.toLowerCase())); return {for (final key in sortedKeys) key: grouped[key]!}; }