This commit is contained in:
Alessio 2025-12-06 16:31:29 +00:00 committed by GitHub
commit 861a6e425e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 29 additions and 40 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 KiB

View File

@ -7,16 +7,12 @@ import 'commands/translated.dart';
import 'commands/untranslated.dart'; import 'commands/untranslated.dart';
void main(List<String> args) { void main(List<String> args) {
final commandRunner = CommandRunner( final commandRunner = CommandRunner("cli", "Configuration CLI for Spotube");
"cli",
"Configuration CLI for Spotube",
);
commandRunner.addCommand(InstallDependenciesCommand()); commandRunner.addCommand(InstallDependenciesCommand());
commandRunner.addCommand(BuildCommand()); commandRunner.addCommand(BuildCommand());
commandRunner.addCommand(CreditsCommand()); commandRunner.addCommand(CreditsCommand());
commandRunner.addCommand(TranslatedCommand()); commandRunner.addCommand(TranslatedCommand());
commandRunner.addCommand(UntranslatedCommand()); commandRunner.addCommand(UntranslatedCommand());
commandRunner.run(args); commandRunner.run(args);
} }

View File

@ -1,14 +1,6 @@
import 'dart:async';
import 'package:app_links/app_links.dart'; import 'package:app_links/app_links.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:spotube/collections/routes.dart'; import 'package:spotube/collections/routes.dart';
import 'package:spotube/collections/routes.gr.dart';
import 'package:flutter_sharing_intent/flutter_sharing_intent.dart';
import 'package:flutter_sharing_intent/model/sharing_file.dart';
import 'package:spotube/services/logger/logger.dart';
import 'package:spotube/utils/platform.dart';
final appLinks = AppLinks(); final appLinks = AppLinks();
final linkStream = appLinks.stringLinkStream.asBroadcastStream(); final linkStream = appLinks.stringLinkStream.asBroadcastStream();

View File

@ -1,4 +1,3 @@
import 'package:flutter/services.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';

View File

@ -1,4 +1,3 @@
import 'package:flutter/services.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';

View File

@ -10,7 +10,14 @@ class BlurCard extends HookConsumerWidget {
return Container( return Container(
margin: const EdgeInsets.all(16.0), margin: const EdgeInsets.all(16.0),
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(24),
boxShadow: [
BoxShadow(
color: Colors.black.withOpacity(0.1),
blurRadius: 20,
offset: const Offset(0, 10),
),
],
), ),
constraints: const BoxConstraints(maxWidth: 400), constraints: const BoxConstraints(maxWidth: 400),
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
@ -18,7 +25,7 @@ class BlurCard extends HookConsumerWidget {
width: double.infinity, width: double.infinity,
child: SurfaceCard( child: SurfaceCard(
child: Padding( child: Padding(
padding: const EdgeInsets.all(16.0), padding: const EdgeInsets.all(24.0),
child: child, child: child,
), ),
), ),

View File

@ -1,10 +1,5 @@
import 'package:flutter_undraw/flutter_undraw.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:skeletonizer/skeletonizer.dart';
import 'package:spotube/components/horizontal_playbutton_card_view/horizontal_playbutton_card_view.dart';
import 'package:spotube/extensions/context.dart';
@Deprecated( @Deprecated(
"Later a featured playlists API will be added for metadata plugins.") "Later a featured playlists API will be added for metadata plugins.")

View File

@ -1,5 +1,4 @@
import 'package:auto_size_text/auto_size_text.dart'; import 'package:auto_size_text/auto_size_text.dart';
import 'package:flutter/foundation.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:shadcn_flutter/shadcn_flutter_extension.dart'; import 'package:shadcn_flutter/shadcn_flutter_extension.dart';
import 'package:spotube/collections/formatters.dart'; import 'package:spotube/collections/formatters.dart';

View File

@ -1,7 +1,6 @@
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shadcn_flutter/shadcn_flutter.dart'; import 'package:shadcn_flutter/shadcn_flutter.dart';
import 'package:spotube/collections/assets.gen.dart';
import 'package:spotube/components/titlebar/titlebar.dart'; import 'package:spotube/components/titlebar/titlebar.dart';
import 'package:spotube/extensions/context.dart'; import 'package:spotube/extensions/context.dart';
import 'package:spotube/pages/getting_started/sections/greeting.dart'; import 'package:spotube/pages/getting_started/sections/greeting.dart';
@ -70,9 +69,13 @@ class GettingStartedPage extends HookConsumerWidget {
floatingHeader: true, floatingHeader: true,
child: DecoratedBox( child: DecoratedBox(
decoration: BoxDecoration( decoration: BoxDecoration(
image: DecorationImage( gradient: LinearGradient(
image: Assets.images.bengaliPatternsBg.provider(), begin: Alignment.topLeft,
fit: BoxFit.cover, end: Alignment.bottomRight,
colors: [
Theme.of(context).colorScheme.primary.withOpacity(0.1),
Theme.of(context).colorScheme.background,
],
), ),
), ),
child: PageView( child: PageView(

View File

@ -17,7 +17,7 @@ class GettingStartedPageGreetingSection extends HookConsumerWidget {
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
Assets.branding.spotubeLogoPng.image(height: 200), Assets.branding.spotubeLogoPng.image(height: 220),
const Gap(24), const Gap(24),
const Text("Spotube").semiBold().h4(), const Text("Spotube").semiBold().h4(),
const Gap(4), const Gap(4),
@ -27,7 +27,7 @@ class GettingStartedPageGreetingSection extends HookConsumerWidget {
: context.l10n.freedom_of_music, : context.l10n.freedom_of_music,
textAlign: TextAlign.center, textAlign: TextAlign.center,
).light().large().italic(), ).light().large().italic(),
const Gap(84), const Gap(48),
Button.primary( Button.primary(
onPressed: onNext, onPressed: onNext,
trailing: const Icon(SpotubeIcons.angleRight), trailing: const Icon(SpotubeIcons.angleRight),

View File

@ -168,7 +168,7 @@ class MiniLyricsPage extends HookConsumerWidget {
child: Column( child: Column(
children: [ children: [
if (playlistQueue.activeTrack != null) if (playlistQueue.activeTrack != null)
Text(playlistQueue.activeTrack!.name!).semiBold(), Text(playlistQueue.activeTrack!.name).semiBold(),
if (showLyrics.value) if (showLyrics.value)
Expanded( Expanded(
child: IndexedStack( child: IndexedStack(

View File

@ -7,7 +7,7 @@ class MetadataPluginRepositoriesNotifier
extends PaginatedAsyncNotifier<MetadataPluginRepository> { extends PaginatedAsyncNotifier<MetadataPluginRepository> {
MetadataPluginRepositoriesNotifier() : super(); MetadataPluginRepositoriesNotifier() : super();
Map<String, bool> _hasMore = {}; final Map<String, bool> _hasMore = {};
@override @override
fetch(int offset, int limit) async { fetch(int offset, int limit) async {

View File

@ -84,8 +84,8 @@ class WindowsAudioService {
title: track.name, title: track.name,
albumArtist: track.artists.firstOrNull?.name ?? "Unknown", albumArtist: track.artists.firstOrNull?.name ?? "Unknown",
artist: track.artists.asString(), artist: track.artists.asString(),
album: track.album?.name ?? "Unknown", album: track.album.name ?? "Unknown",
thumbnail: (track.album?.images).asUrlString( thumbnail: (track.album.images).asUrlString(
placeholder: ImagePlaceholder.albumArt, placeholder: ImagePlaceholder.albumArt,
), ),
), ),

View File

@ -2376,26 +2376,26 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: test name: test
sha256: "65e29d831719be0591f7b3b1a32a3cda258ec98c58c7b25f7b84241bc31215bb" sha256: "75906bf273541b676716d1ca7627a17e4c4070a3a16272b7a3dc7da3b9f3f6b7"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.26.2" version: "1.26.3"
test_api: test_api:
dependency: transitive dependency: transitive
description: description:
name: test_api name: test_api
sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.7.6" version: "0.7.7"
test_core: test_core:
dependency: transitive dependency: transitive
description: description:
name: test_core name: test_core
sha256: "80bf5a02b60af04b09e14f6fe68b921aad119493e26e490deaca5993fef1b05a" sha256: "0cc24b5ff94b38d2ae73e1eb43cc302b77964fbf67abad1e296025b78deb53d0"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.6.11" version: "0.6.12"
time: time:
dependency: transitive dependency: transitive
description: description:

View File

@ -270,7 +270,6 @@ flutter_gen:
output: lib/collections output: lib/collections
flutter_native_splash: flutter_native_splash:
background_image: assets/bengali-patterns-bg.jpg
image: assets/spotube-logo.png image: assets/spotube-logo.png
branding: assets/branding.png branding: assets/branding.png
android_12: android_12: