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
@@ -25,8 +25,23 @@ class LibraryService extends ChangeNotifier {
|
||||
int scanDone = 0;
|
||||
int scanTotal = 0;
|
||||
bool permissionDenied = false;
|
||||
bool notificationPermissionDenied = false;
|
||||
String? scanError;
|
||||
|
||||
/// Fragt beim ersten Start alle für den Betrieb nötigen Berechtigungen an
|
||||
/// (Musik-Zugriff + Wiedergabe-Benachrichtigung), statt sie erst bei Bedarf
|
||||
/// einzeln einzufordern.
|
||||
///
|
||||
/// Nacheinander, nicht gleichzeitig: `permission_handler` wirft, wenn eine
|
||||
/// zweite Abfrage startet, während die erste noch offen ist.
|
||||
Future<void> ensureStartupPermissions() async {
|
||||
await _ensurePermission();
|
||||
final denied = !await ensureNotificationPermission();
|
||||
if (denied == notificationPermissionDenied) return;
|
||||
notificationPermissionDenied = denied;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
/// Auf Android: automatischer Geräte-Scan. Auf Desktop: Ordner wählen + scannen.
|
||||
Future<void> pickFolderAndScan() async {
|
||||
if (!await _ensurePermission()) return;
|
||||
@@ -52,8 +67,11 @@ class LibraryService extends ChangeNotifier {
|
||||
|
||||
Future<bool> _ensurePermission() async {
|
||||
final granted = await ensureAudioPermission();
|
||||
permissionDenied = !granted;
|
||||
notifyListeners();
|
||||
final denied = !granted;
|
||||
if (denied != permissionDenied) {
|
||||
permissionDenied = denied;
|
||||
notifyListeners();
|
||||
}
|
||||
return granted;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user