feat(lyrics): animate pronunciation and translation visibility

Add a contextual language menu for available lyric supplements in portrait and landscape. Remember independent visibility choices across tracks and player sessions without changing embedded lyrics or download options.

Fade and collapse supplements over 320 ms while interpolating lyric row heights and keeping the active line aligned. Honor reduced motion and control auto-hide; cover menu availability, persistence, animation, and word timing in widget tests.
This commit is contained in:
zarzet
2026-09-25 10:29:22 +07:00
parent 87321c7efd
commit 3ca881b169
8 changed files with 500 additions and 33 deletions
+5
View File
@@ -17,6 +17,7 @@ class MornyeLandscapePlayer extends StatefulWidget {
required this.volume,
required this.page,
required this.onPageChanged,
this.lyricsOptions,
});
final Widget artwork;
@@ -27,6 +28,7 @@ class MornyeLandscapePlayer extends StatefulWidget {
final Widget volume;
final int page;
final ValueChanged<int> onPageChanged;
final Widget? lyricsOptions;
@override
State<MornyeLandscapePlayer> createState() => _MornyeLandscapePlayerState();
@@ -193,6 +195,9 @@ class _MornyeLandscapePlayerState extends State<MornyeLandscapePlayer> {
widget.page == 1 ? 0 : 1,
),
),
if (widget.page == 1 &&
widget.lyricsOptions != null)
widget.lyricsOptions!,
IconButton(
tooltip:
context.l10n.nowPlayingUpNext,