fix lyrics delta + fix translation color in lyrics
This commit is contained in:
parent
cf3829e103
commit
99fb6521f2
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -71,3 +71,7 @@ testfiles/
|
|||
translations/crowdin.zip
|
||||
translations/freezer.json
|
||||
translations/exp
|
||||
|
||||
# Ignore flatpak builds
|
||||
flatpak/build-dir
|
||||
flatpak/.flatpak-builder
|
|
@ -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/
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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(
|
||||
|
|
Loading…
Reference in a new issue