💄 Better adjust lyrics experience

This commit is contained in:
2025-12-18 00:17:06 +08:00
parent f4b0dd8067
commit e4797fa2f9
4 changed files with 688 additions and 163 deletions

View File

@@ -160,9 +160,9 @@ class MusixmatchProvider extends LrcProvider {
final statusCode = jsonDecode(r.body)["message"]["header"]["status_code"];
if (statusCode != 200) return null;
final body = jsonDecode(r.body)["message"]["body"];
if (body == null || !(body is Map)) return null;
if (body == null || body is! Map) return null;
final tracks = body["track_list"];
if (tracks == null || !(tracks is List) || tracks.isEmpty) return null;
if (tracks == null || tracks is! List || tracks.isEmpty) return null;
// Simple "best match" - first track
final track = tracks.firstWhere((t) => true, orElse: () => null);

View File

@@ -1,4 +1,3 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:groovybox/logic/audio_handler.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';

View File

@@ -304,6 +304,7 @@ class LibraryScreen extends HookConsumerWidget {
}
// Import lyrics if any
if (!context.mounted) return;
if (lyricsPaths.isNotEmpty) {
await _batchImportLyricsFromPaths(
context,
@@ -366,10 +367,12 @@ class LibraryScreen extends HookConsumerWidget {
final query = searchQuery.value.toLowerCase();
filteredTracks = tracks.where((track) {
if (track.title.toLowerCase().contains(query)) return true;
if (track.artist?.toLowerCase().contains(query) ?? false)
if (track.artist?.toLowerCase().contains(query) ?? false) {
return true;
if (track.album?.toLowerCase().contains(query) ?? false)
}
if (track.album?.toLowerCase().contains(query) ?? false) {
return true;
}
if (track.lyrics != null) {
try {
final lyricsData = LyricsData.fromJsonString(track.lyrics!);

File diff suppressed because it is too large Load Diff