Tab-Reihenfolge, konfigurierbare Meine-Musik-Sektionen, Berechtigungen beim Start, schärferes Sperrbildschirm-Cover
- Tabs: Meine Musik, Suchen, Download, Favoriten (vorher Download vor Suchen) - "Meine Musik": Schnellzugriffe (Favoriten/Wiedergabelisten/Zuletzt) einzeln über die Einstellungen abschaltbar - Audio- und Benachrichtigungs-Berechtigung werden jetzt beim ersten Start gemeinsam angefragt statt erst bei Bedarf; Hinweisbanner + Einstellungen- Button bei dauerhafter Verweigerung (auch für Benachrichtigungen neu) - Cover-Extraktion beim Android-Scan von 512px auf 1024px erhöht, für ein schärferes Cover im Sperrbildschirm - Fix: notifyListeners() in LibraryService nur noch bei echter Wertänderung (verhinderte einen Test-Hang durch den neuen Start-Berechtigungs-Aufruf) 557 Tests grün, flutter analyze ohne Befund. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VM2JK5mV7AL1g2Rt6H6h9w
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
54cb523cf4
commit
da012a3dca
@@ -160,6 +160,22 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
),
|
||||
),
|
||||
const Divider(height: 1),
|
||||
const _SectionLabel('Meine Musik'),
|
||||
Consumer<AppSettings>(
|
||||
builder: (context, settings, _) => Column(
|
||||
children: [
|
||||
for (final sektion in AppSettings.alleMeineMusikSektionen)
|
||||
CheckboxListTile(
|
||||
secondary: Icon(_sektionIcon(sektion)),
|
||||
title: Text(_sektionLabel(sektion)),
|
||||
value: settings.meineMusikSektionen.contains(sektion),
|
||||
onChanged: (aktiv) => settings.setMeineMusikSektionAktiv(
|
||||
sektion, aktiv ?? false),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
const Divider(height: 1),
|
||||
const _SectionLabel('Darstellung'),
|
||||
Consumer<AppSettings>(
|
||||
builder: (context, settings, _) => SwitchListTile(
|
||||
@@ -301,6 +317,15 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
child: const Text('Einstellungen öffnen'),
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
leading: const Icon(Icons.notifications_outlined),
|
||||
title: const Text('Benachrichtigungs-Berechtigung'),
|
||||
subtitle: const Text('Für die Steuerung im Sperrbildschirm'),
|
||||
trailing: TextButton(
|
||||
onPressed: openMusicPermissionSettings,
|
||||
child: const Text('Einstellungen öffnen'),
|
||||
),
|
||||
),
|
||||
const Divider(height: 1),
|
||||
const _SectionLabel('Über Melo'),
|
||||
ListTile(
|
||||
@@ -577,6 +602,21 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Icon und Beschriftung der Schnellzugriff-Sektionen aus [AppSettings].
|
||||
IconData _sektionIcon(String sektion) => switch (sektion) {
|
||||
AppSettings.sektionFavoriten => Icons.favorite,
|
||||
AppSettings.sektionWiedergabelisten => Icons.queue_music,
|
||||
AppSettings.sektionZuletzt => Icons.schedule,
|
||||
_ => Icons.circle,
|
||||
};
|
||||
|
||||
String _sektionLabel(String sektion) => switch (sektion) {
|
||||
AppSettings.sektionFavoriten => 'Favoriten',
|
||||
AppSettings.sektionWiedergabelisten => 'Wiedergabelisten',
|
||||
AppSettings.sektionZuletzt => 'Zuletzt hinzugefügt',
|
||||
_ => sektion,
|
||||
};
|
||||
|
||||
/// Kleine graue Überschrift über einer Einstellungs-Gruppe.
|
||||
class _SectionLabel extends StatelessWidget {
|
||||
const _SectionLabel(this.label);
|
||||
|
||||
Reference in New Issue
Block a user