diff --git a/lib/collections/routes.dart b/lib/collections/routes.dart index c2e36333..47b28403 100644 --- a/lib/collections/routes.dart +++ b/lib/collections/routes.dart @@ -1,6 +1,7 @@ import 'package:flutter/widgets.dart'; import 'package:go_router/go_router.dart'; import 'package:spotify/spotify.dart' hide Search; +import 'package:spotube/pages/settings/blacklist.dart'; import 'package:spotube/pages/settings/about.dart'; import 'package:spotube/utils/platform.dart'; import 'package:spotube/components/shared/spotube_page_route.dart'; @@ -56,6 +57,12 @@ final router = GoRouter( child: const SettingsPage(), ), routes: [ + GoRoute( + path: "blacklist", + pageBuilder: (context, state) => SpotubePage( + child: const BlackListPage(), + ), + ), GoRoute( path: "about", pageBuilder: (context, state) => SpotubePage( diff --git a/lib/components/shared/page_window_title_bar.dart b/lib/components/shared/page_window_title_bar.dart index 55a35f99..66fd10c5 100644 --- a/lib/components/shared/page_window_title_bar.dart +++ b/lib/components/shared/page_window_title_bar.dart @@ -7,7 +7,6 @@ import 'package:spotube/utils/platform.dart'; class PageWindowTitleBar extends StatefulHookWidget with PreferredSizeWidget { final Widget? leading; final bool automaticallyImplyLeading; - final Widget? title; final List? actions; final Color? backgroundColor; final Color? foregroundColor; @@ -24,7 +23,6 @@ class PageWindowTitleBar extends StatefulHookWidget with PreferredSizeWidget { PageWindowTitleBar({ Key? key, - this.title, this.actions, this.center, this.toolbarOpacity = 1, diff --git a/lib/components/shared/shimmers/shimmer_track_tile.dart b/lib/components/shared/shimmers/shimmer_track_tile.dart index f53a5e43..7f483750 100644 --- a/lib/components/shared/shimmers/shimmer_track_tile.dart +++ b/lib/components/shared/shimmers/shimmer_track_tile.dart @@ -100,10 +100,10 @@ class ShimmerTrackTile extends StatelessWidget { child: CustomPaint( size: const Size(double.infinity, 50), painter: ShimmerTrackTilePainter( - background: shimmerTheme?.shimmerBackgroundColor ?? + background: shimmerTheme.shimmerBackgroundColor ?? Theme.of(context).scaffoldBackgroundColor, foreground: - shimmerTheme?.shimmerColor ?? Theme.of(context).cardColor, + shimmerTheme.shimmerColor ?? Theme.of(context).cardColor, ), ), ), diff --git a/lib/pages/settings/about.dart b/lib/pages/settings/about.dart index 6c67fe8c..7f5354ca 100644 --- a/lib/pages/settings/about.dart +++ b/lib/pages/settings/about.dart @@ -18,7 +18,7 @@ class AboutSpotube extends HookConsumerWidget { return PlatformScaffold( appBar: PageWindowTitleBar( leading: const PlatformBackButton(), - title: const PlatformText("About Wives"), + center: const PlatformText("About Spotube"), ), body: SingleChildScrollView( child: Padding( diff --git a/lib/components/settings/blacklist_dialog.dart b/lib/pages/settings/blacklist.dart similarity index 77% rename from lib/components/settings/blacklist_dialog.dart rename to lib/pages/settings/blacklist.dart index a1afdf5e..ed97d8eb 100644 --- a/lib/components/settings/blacklist_dialog.dart +++ b/lib/pages/settings/blacklist.dart @@ -4,11 +4,12 @@ import 'package:collection/collection.dart'; import 'package:fuzzywuzzy/fuzzywuzzy.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; +import 'package:spotube/components/shared/page_window_title_bar.dart'; import 'package:spotube/provider/blacklist_provider.dart'; import 'package:tuple/tuple.dart'; -class BlackListDialog extends HookConsumerWidget { - const BlackListDialog({Key? key}) : super(key: key); +class BlackListPage extends HookConsumerWidget { + const BlackListPage({Key? key}) : super(key: key); @override Widget build(BuildContext context, ref) { @@ -33,13 +34,19 @@ class BlackListDialog extends HookConsumerWidget { [blacklist, searchText.value], ); - return PlatformAlertDialog( - title: const PlatformText("Blacklist"), - content: Column( + return PlatformScaffold( + appBar: PageWindowTitleBar( + center: const PlatformText("Blacklist"), + centerTitle: true, + leading: const PlatformBackButton(), + ), + body: Column( mainAxisSize: MainAxisSize.min, children: [ Padding( - padding: const EdgeInsets.all(8.0), + padding: platform == TargetPlatform.windows + ? const EdgeInsets.all(8.0).copyWith(left: 45) + : const EdgeInsets.all(8.0), child: PlatformTextField( onChanged: (value) => searchText.value = value, placeholder: "Search", @@ -51,12 +58,11 @@ class BlackListDialog extends HookConsumerWidget { itemCount: filteredBlacklist.length, itemBuilder: (context, index) { final item = filteredBlacklist.elementAt(index); - return ListTile( + return PlatformListTile( leading: PlatformText("${index + 1}."), - minLeadingWidth: 20, title: PlatformText("${item.name} (${item.type.name})"), subtitle: PlatformText.caption(item.id), - trailing: IconButton( + trailing: PlatformIconButton( icon: Icon(Icons.delete_forever_rounded, color: Colors.red[400]), onPressed: () { diff --git a/lib/pages/settings/settings.dart b/lib/pages/settings/settings.dart index 8a403147..c5d4ad21 100644 --- a/lib/pages/settings/settings.dart +++ b/lib/pages/settings/settings.dart @@ -5,7 +5,6 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; -import 'package:spotube/components/settings/blacklist_dialog.dart'; import 'package:spotube/components/settings/color_scheme_picker_dialog.dart'; import 'package:spotube/components/shared/adaptive/adaptive_list_tile.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart'; @@ -339,19 +338,14 @@ class SettingsPage extends HookConsumerWidget { ), PlatformListTile( leading: const Icon(Icons.playlist_remove_rounded), - title: const PlatformText( - "Track/Artist Blacklist", + title: const PlatformText("Blacklist"), + subtitle: const PlatformText( + "Blacklisted tracks and artists", ), onTap: () { - showPlatformAlertDialog( - context, - barrierDismissible: true, - builder: (context) { - return const BlackListDialog(); - }, - ); + GoRouter.of(context).push("/settings/blacklist"); }, - trailing: const Icon(Icons.open_in_new_rounded), + trailing: const Icon(Icons.chevron_right_rounded), ), PlatformText( " Search",