mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-14 00:15:17 +00:00
Merge 9163f1abe0
into 0326630a19
This commit is contained in:
commit
4809b11ed3
@ -8,6 +8,7 @@ import 'package:spotube/components/image/universal_image.dart';
|
|||||||
import 'package:spotube/extensions/image.dart';
|
import 'package:spotube/extensions/image.dart';
|
||||||
import 'package:spotube/extensions/string.dart';
|
import 'package:spotube/extensions/string.dart';
|
||||||
import 'package:spotube/provider/spotify/spotify.dart';
|
import 'package:spotube/provider/spotify/spotify.dart';
|
||||||
|
import 'package:spotube/utils/platform.dart';
|
||||||
import 'package:stroke_text/stroke_text.dart';
|
import 'package:stroke_text/stroke_text.dart';
|
||||||
|
|
||||||
class GenreSectionCardPlaylistCard extends HookConsumerWidget {
|
class GenreSectionCardPlaylistCard extends HookConsumerWidget {
|
||||||
@ -21,8 +22,10 @@ class GenreSectionCardPlaylistCard extends HookConsumerWidget {
|
|||||||
Widget build(BuildContext context, ref) {
|
Widget build(BuildContext context, ref) {
|
||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
|
|
||||||
|
final w = kIsDesktop ? 20 : 0;
|
||||||
|
|
||||||
return Container(
|
return Container(
|
||||||
width: 115 * theme.scaling,
|
width: (115 + w) * theme.scaling,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: theme.colorScheme.background.withAlpha(75),
|
color: theme.colorScheme.background.withAlpha(75),
|
||||||
borderRadius: theme.borderRadiusMd,
|
borderRadius: theme.borderRadiusMd,
|
||||||
@ -65,7 +68,7 @@ class GenreSectionCardPlaylistCard extends HookConsumerWidget {
|
|||||||
ref.watch(playlistImageProvider(playlist.id!));
|
ref.watch(playlistImageProvider(playlist.id!));
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
height: 100 * theme.scaling,
|
height: 100 * theme.scaling,
|
||||||
width: 100 * theme.scaling,
|
width: (100 + w) * theme.scaling,
|
||||||
child: Stack(
|
child: Stack(
|
||||||
children: [
|
children: [
|
||||||
Positioned.fill(
|
Positioned.fill(
|
||||||
@ -107,14 +110,14 @@ class GenreSectionCardPlaylistCard extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
height: 100 * theme.scaling,
|
height: 100 * theme.scaling,
|
||||||
width: 100 * theme.scaling,
|
width: (100 + w) * theme.scaling,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
playlist.name!,
|
playlist.name!,
|
||||||
maxLines: 2,
|
maxLines: 1,
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
).semiBold().small(),
|
).xSmall().bold(),
|
||||||
if (playlist.description != null)
|
if (playlist.description != null)
|
||||||
Text(
|
Text(
|
||||||
playlist.description?.unescapeHtml().cleanHtml() ?? "",
|
playlist.description?.unescapeHtml().cleanHtml() ?? "",
|
||||||
|
@ -99,22 +99,26 @@ class LocalFolderItem extends HookConsumerWidget {
|
|||||||
itemCount: tracks.length,
|
itemCount: tracks.length,
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
final track = tracks[index];
|
final track = tracks[index];
|
||||||
return UniversalImage(
|
return Expanded(
|
||||||
|
child: UniversalImage(
|
||||||
path: (track.album?.images).asUrlString(
|
path: (track.album?.images).asUrlString(
|
||||||
placeholder: ImagePlaceholder.albumArt,
|
placeholder: ImagePlaceholder.albumArt,
|
||||||
),
|
),
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Gap(8),
|
const Gap(8),
|
||||||
Stack(
|
Expanded(
|
||||||
|
child: Stack(
|
||||||
children: [
|
children: [
|
||||||
Column(
|
Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
Center(
|
Center(
|
||||||
|
child: Flexible(
|
||||||
child: Text(
|
child: Text(
|
||||||
isDownloadFolder
|
isDownloadFolder
|
||||||
? context.l10n.downloads
|
? context.l10n.downloads
|
||||||
@ -127,7 +131,9 @@ class LocalFolderItem extends HookConsumerWidget {
|
|||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Wrap(
|
),
|
||||||
|
Flexible(
|
||||||
|
child: Wrap(
|
||||||
spacing: 2,
|
spacing: 2,
|
||||||
runSpacing: 2,
|
runSpacing: 2,
|
||||||
children: [
|
children: [
|
||||||
@ -137,13 +143,14 @@ class LocalFolderItem extends HookConsumerWidget {
|
|||||||
TextSpan(
|
TextSpan(
|
||||||
children: [
|
children: [
|
||||||
if (index != 0) const TextSpan(text: "/ "),
|
if (index != 0) const TextSpan(text: "/ "),
|
||||||
TextSpan(text: segment),
|
TextSpan(text: segment)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
maxLines: 2,
|
maxLines: 2,
|
||||||
).xSmall().muted(),
|
).xSmall().muted(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
if (!isDownloadFolder && !isCacheFolder)
|
if (!isDownloadFolder && !isCacheFolder)
|
||||||
@ -161,8 +168,8 @@ class LocalFolderItem extends HookConsumerWidget {
|
|||||||
MenuButton(
|
MenuButton(
|
||||||
leading: Icon(SpotubeIcons.folderRemove,
|
leading: Icon(SpotubeIcons.folderRemove,
|
||||||
color: colorScheme.destructive),
|
color: colorScheme.destructive),
|
||||||
child:
|
child: Text(
|
||||||
Text(context.l10n.remove_library_location),
|
context.l10n.remove_library_location),
|
||||||
onPressed: (context) {
|
onPressed: (context) {
|
||||||
final libraryLocations = ref
|
final libraryLocations = ref
|
||||||
.read(userPreferencesProvider)
|
.read(userPreferencesProvider)
|
||||||
@ -185,6 +192,7 @@ class LocalFolderItem extends HookConsumerWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
Loading…
Reference in New Issue
Block a user