Skip to content

Commit

Permalink
Фикс постоянных перестроек интерфейса на Desktop Layout из-за `Progre…
Browse files Browse the repository at this point in the history
…ssIndicatorIcon`.
  • Loading branch information
Zensonaton committed Oct 2, 2024
1 parent 1427da5 commit 11e8445
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 26 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
- Фикс отображения обложки как фон полноэкранного плеера.
- Фикс изменения цветов экрана плейлиста в зависимости от трека.
- Фикс лагучей перемотки на OS Windows.
- Фикс постоянных перестроек интерфейса на Desktop Layout из-за `ProgressIndicatorIcon`.

<!-- Изменения с других Pre-release версий, которые должны быть отображены в non-pre версии:
Expand Down
61 changes: 35 additions & 26 deletions lib/widgets/download_manager_icon.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,11 @@ class ProgressIndicatorIcon extends StatelessWidget {
Widget build(BuildContext context) {
final scheme = Theme.of(context).colorScheme;

final isStarted = progress > 0.0;
final isCompleted = progress >= 1.0;
final bool shouldAnimate = progress > 0.0 && progress < 1.0;

// FIXME: После первого открытия, анимация ломается из-за проверки с shouldAnimate.

return SizedBox(
width: downloadManagerMinimizedSize,
Expand All @@ -37,20 +41,23 @@ class ProgressIndicatorIcon extends StatelessWidget {
alignment: Alignment.center,
children: [
// Анимация загрузки.
CircularProgressIndicator(
strokeWidth: 3,
value: progress,
)
.animate(
onComplete: (controller) => controller.loop(),
)
.rotate(
duration: const Duration(
seconds: 2,
),
begin: 0,
end: 1,
if (isStarted)
CircularProgressIndicator(
strokeWidth: 3,
value: progress,
).animate(
onComplete: (controller) {
if (!shouldAnimate) return;

controller.loop();
},
).rotate(
duration: const Duration(
seconds: 2,
),
begin: 0,
end: 1,
),

// Иконка загрузки, либо же галочка, если загрузка была завершена.
AnimatedSwitcher(
Expand Down Expand Up @@ -96,20 +103,22 @@ class ProgressIndicatorIcon extends StatelessWidget {
Icons.arrow_downward,
color: scheme.onSecondaryContainer,
size: 22,
)
.animate(
onPlay: (controller) => controller.repeat(
reverse: true,
),
)
.moveY(
duration: const Duration(
milliseconds: 1000,
),
curve: Curves.ease,
begin: -2,
end: 2,
).animate(
onPlay: (controller) {
if (!shouldAnimate) return;

controller.repeat(
reverse: true,
);
},
).moveY(
duration: const Duration(
milliseconds: 1000,
),
curve: Curves.ease,
begin: -2,
end: 2,
);
}(),
),
],
Expand Down

0 comments on commit 11e8445

Please sign in to comment.