fix lyrics delta + fix translation color in lyrics

This commit is contained in:
Pato05 2024-07-01 13:16:11 +02:00
parent cf3829e103
commit 99fb6521f2
No known key found for this signature in database
GPG key ID: ED4C6F9C3D574FB6
6 changed files with 67 additions and 42 deletions

4
.gitignore vendored
View file

@ -71,3 +71,7 @@ testfiles/
translations/crowdin.zip
translations/freezer.json
translations/exp
# Ignore flatpak builds
flatpak/build-dir
flatpak/.flatpak-builder

View file

@ -14,9 +14,10 @@ executableName=freezer
# ------------------------------- Build Flatpak ----------------------------- #
# Extract portable Flutter build.
# Find and extract portable build
mkdir -p $projectName
tar -xf $projectName-linux.tar.gz -C $projectName
EXTRACT_DIR=`pwd`"/$projectName"
tar -xf "../build/linux/x64/release/$projectName-linux-*.tar.gz" -C "$EXTRACT_DIR"
# Copy the portable app to the Flatpak-based location.
cp -r $projectName /app/

View file

@ -88,6 +88,7 @@ class DeezerAudioSource extends StreamAudioSource {
if (_downloadUrl != null && quality != newQuality) {
// update currentUrl to get tracks with new quality
_deezerAudio.quality = newQuality;
_downloadUrl = null;
}

View file

@ -658,6 +658,7 @@ class AudioPlayerTask extends BaseAudioHandler {
Future customAction(String name, [Map<String, dynamic>? extras]) async {
switch (name) {
case 'updateQuality':
_logger.fine('updateQuality($extras)');
//Pass wifi & mobile quality by custom action
//Isolate can't access globals
wifiQuality = extras!['wifiQuality'] as AudioQuality;

View file

@ -108,7 +108,7 @@ class Settings {
@HiveField(26)
bool colorGradientBackground = false;
@HiveField(27)
bool blurPlayerBackground = false;
bool blurPlayerBackground = true;
@HiveField(28)
String font = 'System';
@HiveField(29)
@ -117,8 +117,8 @@ class Settings {
int? displayMode;
@HiveField(31, defaultValue: true)
bool enableFilledPlayButton = true;
@HiveField(32, defaultValue: false)
bool playerBackgroundOnLyrics = false;
@HiveField(32, defaultValue: true)
bool playerBackgroundOnLyrics = true;
@HiveField(33, defaultValue: NavigatorRouteType.material)
NavigatorRouteType navigatorRouteType = NavigatorRouteType.material;
@ -161,8 +161,8 @@ class Settings {
@HiveField(45, defaultValue: false)
bool materialYouAccent = false;
@HiveField(46, defaultValue: true)
bool playerAlbumArtDropShadow = true;
@HiveField(46, defaultValue: false)
bool playerAlbumArtDropShadow = false;
@HiveField(47, defaultValue: false)
bool seekAsSkip = false;

View file

@ -282,12 +282,11 @@ class _LyricsWidgetState extends State<LyricsWidget>
if (_showTranslation)
Text(_lyrics!.lyrics![i].translated!,
textAlign: TextAlign.start,
style: TextStyle(
color: Color.lerp(
Theme.of(context).colorScheme.onBackground,
Colors.black,
0.12),
fontSize: 20.0)),
style: lyricsStyle.getTextStyle(
isActive,
Color.lerp(textColor, Colors.black, 0.25)!
.withOpacity(isActive ? 1.0 : 0.25),
20.0)),
],
),
)));
@ -296,6 +295,7 @@ class _LyricsWidgetState extends State<LyricsWidget>
@override
Widget build(BuildContext context) {
final lyricsStyle = LyricsStyle.fromIndex(settings.lyricsStyle);
var extentBefore = 0.0;
return Stack(
children: [
_error != null
@ -305,45 +305,63 @@ class _LyricsWidgetState extends State<LyricsWidget>
_loading
? const Center(child: CircularProgressIndicator())
: LayoutBuilder(builder: (context, constraints) {
return NotificationListener<ScrollStartNotification>(
return NotificationListener<ScrollNotification>(
onNotification: (notification) {
if (!_syncedLyrics) return false;
final extentDelta =
(notification.metrics.extentBefore -
notification.metrics.extentAfter)
.abs();
// avoid accidental clicks
const extentThreshold = 9000.0;
print('delta: $extentDelta');
if (extentDelta >= extentThreshold &&
!_animatedScroll &&
final extentDelta =
(notification.metrics.pixels - extentBefore)
.abs();
extentBefore = notification.metrics.pixels;
const extentThreshold = 20.0;
if (!_animatedScroll &&
!_freeScroll &&
!_loading &&
!_freeScroll) {
extentDelta >= extentThreshold) {
setState(() => _freeScroll = true);
}
return false;
},
child: ScrollConfiguration(
behavior: _scrollBehavior,
child: FadingEdgeScrollView.fromScrollView(
gradientFractionOnStart: 0.25,
gradientFractionOnEnd: 0.25,
child: ListView.builder(
padding: EdgeInsets.symmetric(
horizontal: 8.0,
vertical: constraints.maxHeight / 2 -
height / 2),
controller: _controller,
itemCount: _lyrics!.lyrics!.length + 1,
itemBuilder: (BuildContext context, int i) {
return AutoScrollTag(
key: ValueKey(i),
controller: _controller,
index: i,
child:
_buildLyricWidget(i, lyricsStyle));
},
))));
child: _syncedLyrics
? FadingEdgeScrollView.fromScrollView(
gradientFractionOnStart: 0.25,
gradientFractionOnEnd: 0.25,
child: ListView.builder(
padding: EdgeInsets.symmetric(
horizontal: 8.0,
vertical: !_syncedLyrics
? 4.0
: constraints.maxHeight / 2 -
height / 2),
controller: _controller,
itemCount: _lyrics!.lyrics!.length + 1,
itemBuilder:
(BuildContext context, int i) {
return AutoScrollTag(
key: ValueKey(i),
controller: _controller,
index: i,
child: _buildLyricWidget(
i, lyricsStyle));
},
))
: FadingEdgeScrollView
.fromSingleChildScrollView(
gradientFractionOnStart: 0.25,
gradientFractionOnEnd: 0.25,
child: SingleChildScrollView(
controller: _controller,
child: Padding(
padding:
const EdgeInsets.all(8.0),
child: Text(
_lyrics!.lyrics![0].text!,
style:
TextStyle(fontSize: 20.0),
),
)))));
}),
if (_availableTranslation)
Positioned(