From 03eead45806e7f7b08d9e22aa936e43bb06d6a75 Mon Sep 17 00:00:00 2001 From: LOSSES Don <1384036+Losses@users.noreply.github.com> Date: Mon, 25 Nov 2024 21:19:12 +0800 Subject: [PATCH] chore: Tweak the visual effect of AxReveal --- .../ax_reveal/utils/reveal_config.dart | 9 ++++++-- .../utils/reveal_effect_painter.dart | 10 +++++--- .../track_list/large_screen_track_list.dart | 23 +++++++++++++------ 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/lib/widgets/ax_reveal/utils/reveal_config.dart b/lib/widgets/ax_reveal/utils/reveal_config.dart index 9ad4dc875..68fa2fe9b 100644 --- a/lib/widgets/ax_reveal/utils/reveal_config.dart +++ b/lib/widgets/ax_reveal/utils/reveal_config.dart @@ -1,5 +1,10 @@ import 'package:fluent_ui/fluent_ui.dart'; +enum AxRevealPressAnimationFillMode { + normal, + constrained, +} + class RevealConfig { final Color borderColor; final Color hoverLightColor; @@ -12,7 +17,7 @@ class RevealConfig { final bool hoverLight; final bool diffuse; final bool pressAnimation; - final String pressAnimationFillMode; + final AxRevealPressAnimationFillMode pressAnimationFillMode; const RevealConfig({ this.borderColor = Colors.white, @@ -26,6 +31,6 @@ class RevealConfig { this.hoverLight = true, this.diffuse = true, this.pressAnimation = true, - this.pressAnimationFillMode = 'constrained', + this.pressAnimationFillMode = AxRevealPressAnimationFillMode.normal, }); } diff --git a/lib/widgets/ax_reveal/utils/reveal_effect_painter.dart b/lib/widgets/ax_reveal/utils/reveal_effect_painter.dart index 2242cb88d..f82c1b54b 100644 --- a/lib/widgets/ax_reveal/utils/reveal_effect_painter.dart +++ b/lib/widgets/ax_reveal/utils/reveal_effect_painter.dart @@ -49,7 +49,7 @@ class RevealEffectPainter extends CustomPainter { } void _drawHoverLight(Canvas canvas, Size size, Path path) { - final radius = size.shortestSide * config.hoverLightFillRadius; + final radius = size.longestSide * config.hoverLightFillRadius; final gradient = ui.Gradient.radial( mousePosition!, radius, @@ -95,11 +95,15 @@ class RevealEffectPainter extends CustomPainter { } void _drawPressAnimation(Canvas canvas, Size size, Path path) { - final position = mouseReleased ? mouseDownPosition : mousePosition; + final position = mouseDownPosition; if (position == null) return; - final radius = config.pressAnimationFillMode == 'constrained' + if (!mousePressed) return; + if (logicFrame == 0) return; + + final radius = config.pressAnimationFillMode == + AxRevealPressAnimationFillMode.constrained ? size.shortestSide : size.longestSide; diff --git a/lib/widgets/track_list/large_screen_track_list.dart b/lib/widgets/track_list/large_screen_track_list.dart index 8c3f4a556..777211050 100644 --- a/lib/widgets/track_list/large_screen_track_list.dart +++ b/lib/widgets/track_list/large_screen_track_list.dart @@ -9,6 +9,8 @@ import '../../widgets/ax_pressure.dart'; import '../../widgets/smooth_horizontal_scroll.dart'; import '../../widgets/track_list/utils/internal_media_file.dart'; +import '../collection_item.dart'; +import '../ax_reveal/ax_reveal.dart'; import '../navigation_bar/page_content_frame.dart'; import '../start_screen/managed_start_screen_item.dart'; @@ -30,6 +32,8 @@ class LargeScreenTrackList extends StatelessWidget { @override Widget build(BuildContext context) { + final brightness = FluentTheme.of(context).brightness; + return Padding( padding: const EdgeInsets.symmetric(vertical: 12), child: LayoutBuilder( @@ -89,13 +93,18 @@ class LargeScreenTrackList extends StatelessWidget { width: cellSize / ratio, height: cellSize, child: AxPressure( - child: LargeScreenTrackListItem( - index: index, - item: item, - queries: queries, - fallbackFileIds: fallbackFileIds, - coverArtPath: item.coverArtPath, - mode: mode, + child: AxReveal( + config: brightness == Brightness.dark + ? defaultLightRevealConfig + : defaultDarkRevealConfig, + child: LargeScreenTrackListItem( + index: index, + item: item, + queries: queries, + fallbackFileIds: fallbackFileIds, + coverArtPath: item.coverArtPath, + mode: mode, + ), ), ), );