SpotiFLAC-Mobile/lib/screens/settings
zarzet 149cdc782d refactor: migrate local library from in-memory list to database-backed pagination
Replace the full in-memory List<LocalLibraryItem> in LocalLibraryState
with a lightweight lookup index (ISRCs, matchKeys, filePathById) and
database-backed FutureProvider.family pagination providers.

Database changes:
- Add library schema v7 with normalized lookup columns (track_name_norm,
  artist_name_norm, album_name_norm, album_artist_norm, match_key,
  album_key) and corresponding indexes
- Backfill normalized columns on migration from v6
- Add getPage, getPageCount, getAlbumPage, getAlbumCount, getLookupIndex,
  getCoverPaths, getByFilePath, findFirstByTrackAndArtist DB methods

Provider changes:
- LocalLibraryState no longer holds items list; uses totalCount and
  loadedIndexVersion for change tracking
- Deprecate synchronous getByIsrc/findByTrackAndArtist (return null);
  add async findExistingAsync, getByIsrcAsync, getById on notifier
- Add localLibraryPageProvider, localLibraryAlbumPageProvider,
  localLibraryAllItemsProvider family providers for paginated access
- Add localLibraryCoverProvider and localLibraryFirstCoverProvider
  for async cover path resolution from DB

Screen migrations:
- album/artist/playlist screens use findExistingAsync for playback
- library_tracks_folder_screen uses async cover providers and
  existsInLibrary for local library indicator
- queue_tab watches localLibraryAllItemsProvider instead of state.items
- library_settings_page uses state.totalCount
- playback_provider uses findExistingAsync

Track metadata screen:
- Replace pushReplacement navigation with in-place state swap using
  AnimatedSwitcher for smooth cross-fade transitions on track swipe
- Add metadataLoadGeneration counter to prevent stale async callbacks
- Reset all transient state (lyrics, cover, file check) on track change
2026-05-06 03:15:30 +07:00
..
about_page.dart chore: update default lyrics providers and about links 2026-05-04 15:51:57 +07:00
app_settings_page.dart chore: remove redundant comments and boilerplate across codebase 2026-05-05 21:35:18 +07:00
appearance_settings_page.dart chore: remove redundant comments and boilerplate across codebase 2026-05-05 21:35:18 +07:00
cache_management_page.dart feat(i18n): replace all hardcoded strings with l10n keys across 13 screens 2026-03-13 15:12:12 +07:00
donate_page.dart chore: remove redundant comments and boilerplate across codebase 2026-05-05 21:35:18 +07:00
download_fallback_extensions_page.dart feat: add configurable extension download fallback 2026-04-13 23:32:18 +07:00
download_settings_page.dart chore: remove redundant comments and boilerplate across codebase 2026-05-05 21:35:18 +07:00
extension_detail_page.dart feat: show extension service health 2026-05-03 20:20:28 +07:00
extensions_page.dart chore: remove redundant comments and boilerplate across codebase 2026-05-05 21:35:18 +07:00
files_settings_page.dart chore: remove redundant comments and boilerplate across codebase 2026-05-05 21:35:18 +07:00
library_settings_page.dart refactor: migrate local library from in-memory list to database-backed pagination 2026-05-06 03:15:30 +07:00
log_screen.dart chore: remove redundant comments and boilerplate across codebase 2026-05-05 21:35:18 +07:00
lyrics_provider_priority_page.dart chore: remove redundant comments and boilerplate across codebase 2026-05-05 21:35:18 +07:00
lyrics_settings_page.dart chore: remove redundant comments and boilerplate across codebase 2026-05-05 21:35:18 +07:00
metadata_provider_priority_page.dart refactor: remove built-in provider registry in favor of extensions 2026-05-05 03:55:24 +07:00
metadata_settings_page.dart chore: remove redundant comments and boilerplate across codebase 2026-05-05 21:35:18 +07:00
provider_priority_page.dart refactor: remove built-in provider registry in favor of extensions 2026-05-05 03:55:24 +07:00
settings_tab.dart chore: remove redundant comments and boilerplate across codebase 2026-05-05 21:35:18 +07:00