/// Die Auswahl, nachdem [songId] angetippt wurde — ein Titel kommt dazu oder /// fällt heraus. /// /// Gibt eine neue Menge zurück statt die alte zu ändern: die Oberfläche /// vergleicht beide, um zu erkennen, ob sich etwas getan hat. Set auswahlNach(Set auswahl, String songId) { final neu = {...auswahl}; if (!neu.remove(songId)) neu.add(songId); return neu; } /// Beschriftung der Auswahl-Leiste. String auswahlText(int anzahl) => switch (anzahl) { 0 => 'Titel auswählen', 1 => '1 Titel ausgewählt', _ => '$anzahl ausgewählt', }; /// Rückmeldung nach dem Hinzufügen mehrerer Titel zu einer Wiedergabeliste. /// /// Nennt beides: was dazukam und was schon drin war. Vorher meldete die App /// die volle Auswahl als „hinzugefügt", obwohl bereits enthaltene Titel wegen /// des Primärschlüssels nur verschoben worden wären. String playlistMeldung({ required int neu, required int schonDa, String? fehler, }) { if (fehler != null) return 'Abgebrochen nach $neu Titeln: $fehler'; if (neu == 0) return 'Alle schon in der Liste'; if (schonDa == 0) return '$neu Titel hinzugefügt'; return '$neu hinzugefügt · $schonDa waren schon drin'; }