mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-12 23:45:18 +00:00
refactor: downloads page to shadcn
This commit is contained in:
parent
3ffcb48db9
commit
e54a646073
@ -77,8 +77,7 @@ class LocalFolderItem extends HookConsumerWidget {
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
if (tracks.isEmpty)
|
||||
Card(
|
||||
child: Padding(
|
||||
Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Icon(
|
||||
SpotubeIcons.folder,
|
||||
@ -88,7 +87,6 @@ class LocalFolderItem extends HookConsumerWidget {
|
||||
? 100
|
||||
: 142,
|
||||
),
|
||||
),
|
||||
)
|
||||
else
|
||||
ClipRRect(
|
||||
|
@ -1,6 +1,6 @@
|
||||
import 'package:auto_size_text/auto_size_text.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:shadcn_flutter/shadcn_flutter.dart';
|
||||
|
||||
import 'package:spotube/modules/library/user_downloads/download_item.dart';
|
||||
import 'package:spotube/extensions/context.dart';
|
||||
@ -31,15 +31,10 @@ class UserDownloads extends HookConsumerWidget {
|
||||
context.l10n
|
||||
.currently_downloading(downloadManager.$downloadCount),
|
||||
maxLines: 1,
|
||||
style: Theme.of(context).textTheme.titleMedium,
|
||||
),
|
||||
).semiBold(),
|
||||
),
|
||||
const SizedBox(width: 10),
|
||||
FilledButton(
|
||||
style: FilledButton.styleFrom(
|
||||
backgroundColor: Colors.red[50],
|
||||
foregroundColor: Colors.red[400],
|
||||
),
|
||||
Button.destructive(
|
||||
onPressed: downloadManager.$downloadCount == 0
|
||||
? null
|
||||
: downloadManager.cancelAll,
|
||||
|
@ -1,10 +1,11 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:shadcn_flutter/shadcn_flutter.dart';
|
||||
import 'package:spotify/spotify.dart';
|
||||
import 'package:spotube/collections/spotube_icons.dart';
|
||||
import 'package:spotube/components/image/universal_image.dart';
|
||||
import 'package:spotube/components/links/artist_link.dart';
|
||||
import 'package:spotube/components/ui/button_tile.dart';
|
||||
import 'package:spotube/extensions/context.dart';
|
||||
import 'package:spotube/extensions/image.dart';
|
||||
import 'package:spotube/pages/track/track.dart';
|
||||
@ -46,7 +47,8 @@ class DownloadItem extends HookConsumerWidget {
|
||||
final isQueryingSourceInfo =
|
||||
taskStatus.value == null || track is! SourcedTrack;
|
||||
|
||||
return ListTile(
|
||||
return ButtonTile(
|
||||
style: ButtonVariance.ghost,
|
||||
leading: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 5),
|
||||
child: ClipRRect(
|
||||
@ -73,10 +75,7 @@ class DownloadItem extends HookConsumerWidget {
|
||||
),
|
||||
),
|
||||
trailing: isQueryingSourceInfo
|
||||
? Text(
|
||||
context.l10n.querying_info,
|
||||
style: Theme.of(context).textTheme.labelMedium,
|
||||
)
|
||||
? Text(context.l10n.querying_info).small()
|
||||
: switch (taskStatus.value!) {
|
||||
DownloadStatus.downloading => HookBuilder(builder: (context) {
|
||||
final taskProgress = useListenable(useMemoized(
|
||||
@ -84,39 +83,36 @@ class DownloadItem extends HookConsumerWidget {
|
||||
.getProgressNotifier(track as SourcedTrack),
|
||||
[track],
|
||||
));
|
||||
return SizedBox(
|
||||
width: 140,
|
||||
child: Row(
|
||||
return Row(
|
||||
children: [
|
||||
CircularProgressIndicator(
|
||||
value: taskProgress?.value ?? 0,
|
||||
),
|
||||
const SizedBox(width: 10),
|
||||
IconButton(
|
||||
IconButton.ghost(
|
||||
icon: const Icon(SpotubeIcons.pause),
|
||||
onPressed: () {
|
||||
downloadManager.pause(track as SourcedTrack);
|
||||
}),
|
||||
const SizedBox(width: 10),
|
||||
IconButton(
|
||||
IconButton.ghost(
|
||||
icon: const Icon(SpotubeIcons.close),
|
||||
onPressed: () {
|
||||
downloadManager.cancel(track as SourcedTrack);
|
||||
}),
|
||||
],
|
||||
),
|
||||
);
|
||||
}),
|
||||
DownloadStatus.paused => Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
IconButton(
|
||||
IconButton.ghost(
|
||||
icon: const Icon(SpotubeIcons.play),
|
||||
onPressed: () {
|
||||
downloadManager.resume(track as SourcedTrack);
|
||||
}),
|
||||
const SizedBox(width: 10),
|
||||
IconButton(
|
||||
IconButton.ghost(
|
||||
icon: const Icon(SpotubeIcons.close),
|
||||
onPressed: () {
|
||||
downloadManager.cancel(track as SourcedTrack);
|
||||
@ -132,7 +128,7 @@ class DownloadItem extends HookConsumerWidget {
|
||||
color: Colors.red[400],
|
||||
),
|
||||
const SizedBox(width: 10),
|
||||
IconButton(
|
||||
IconButton.ghost(
|
||||
icon: const Icon(SpotubeIcons.refresh),
|
||||
onPressed: () {
|
||||
downloadManager.retry(track as SourcedTrack);
|
||||
@ -143,7 +139,7 @@ class DownloadItem extends HookConsumerWidget {
|
||||
),
|
||||
DownloadStatus.completed =>
|
||||
Icon(SpotubeIcons.done, color: Colors.green[400]),
|
||||
DownloadStatus.queued => IconButton(
|
||||
DownloadStatus.queued => IconButton.ghost(
|
||||
icon: const Icon(SpotubeIcons.close),
|
||||
onPressed: () {
|
||||
downloadManager.removeFromQueue(track as SourcedTrack);
|
||||
|
Loading…
Reference in New Issue
Block a user