diff --git a/lib/collections/side_bar_tiles.dart b/lib/collections/side_bar_tiles.dart index 9de32755..80541dab 100644 --- a/lib/collections/side_bar_tiles.dart +++ b/lib/collections/side_bar_tiles.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:spotube/collections/spotube_icons.dart'; class SideBarTiles { final IconData icon; @@ -7,8 +8,8 @@ class SideBarTiles { } List sidebarTileList = [ - SideBarTiles(icon: Icons.home_rounded, title: "Browse"), - SideBarTiles(icon: Icons.search_rounded, title: "Search"), - SideBarTiles(icon: Icons.library_books_rounded, title: "Library"), - SideBarTiles(icon: Icons.music_note_rounded, title: "Lyrics") + SideBarTiles(icon: SpotubeIcons.home, title: "Browse"), + SideBarTiles(icon: SpotubeIcons.search, title: "Search"), + SideBarTiles(icon: SpotubeIcons.library, title: "Library"), + SideBarTiles(icon: SpotubeIcons.music, title: "Lyrics") ]; diff --git a/lib/collections/spotube_icons.dart b/lib/collections/spotube_icons.dart new file mode 100644 index 00000000..21110c88 --- /dev/null +++ b/lib/collections/spotube_icons.dart @@ -0,0 +1,61 @@ +import 'package:fluent_ui/fluent_ui.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_feather_icons/flutter_feather_icons.dart'; + +abstract class SpotubeIcons { + static const home = FluentIcons.home; + static const search = FeatherIcons.search; + static const library = FluentIcons.library; + static const music = FeatherIcons.music; + static const play = FluentIcons.play; + static const pause = FeatherIcons.pause; + static const skipForward = FeatherIcons.skipForward; + static const skipBack = FeatherIcons.skipBack; + static const stop = FeatherIcons.square; + static const filter = FeatherIcons.filter; + static const refresh = FeatherIcons.refreshCw; + static const settings = FeatherIcons.settings; + static const shuffle = FeatherIcons.shuffle; + static const repeat = FluentIcons.repeat_all; + static const repeatOne = FluentIcons.repeat_one; + static const remove = FeatherIcons.minus; + static const removeFilled = FeatherIcons.minusCircle; + static const add = FeatherIcons.plus; + static const addFilled = FeatherIcons.plusSquare; + static const heart = FeatherIcons.heart; + static const heartFilled = Icons.favorite_rounded; + static const queue = Icons.queue_music_rounded; + static const download = FeatherIcons.download; + static const done = FeatherIcons.checkCircle; + static const alternativeRoute = Icons.alt_route_rounded; + static const sort = Icons.sort_rounded; + static const moreVertical = FeatherIcons.moreVertical; + static const moreHorizontal = FeatherIcons.moreHorizontal; + static const share = FeatherIcons.share2; + static const playlistAdd = Icons.playlist_add_rounded; + static const playlistRemove = Icons.playlist_remove_rounded; + static const trash = FeatherIcons.trash2; + static const clock = FeatherIcons.clock; + static const lyrics = Icons.lyrics_rounded; + static const logout = FeatherIcons.logOut; + static const login = FeatherIcons.logIn; + static const dashboard = FeatherIcons.grid; + static const darkMode = FeatherIcons.moon; + static const platform = FeatherIcons.smartphone; + static const palette = Icons.palette_outlined; + static const colorBucket = Icons.format_color_fill_rounded; + static const album = FeatherIcons.disc; + static const artist = FeatherIcons.user; + static const audioQuality = Icons.multitrack_audio_rounded; + static const fastForward = FeatherIcons.fastForward; + static const angleRight = FeatherIcons.chevronRight; + static const angleLeft = FeatherIcons.chevronLeft; + static const shoppingBag = FeatherIcons.shoppingBag; + static const screenSearch = Icons.screen_search_desktop_outlined; + static const save = FeatherIcons.save; + static const barChart = FeatherIcons.barChart2; + static const folder = FeatherIcons.folder; + static const update = FeatherIcons.refreshCcw; + static const info = FeatherIcons.info; + static const userRemove = FeatherIcons.userX; +} diff --git a/lib/components/library/user_albums.dart b/lib/components/library/user_albums.dart index 76d0f550..4f661282 100644 --- a/lib/components/library/user_albums.dart +++ b/lib/components/library/user_albums.dart @@ -5,6 +5,7 @@ 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/collections/spotube_icons.dart'; import 'package:spotube/components/album/album_card.dart'; import 'package:spotube/components/shared/playbutton_card.dart'; import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart'; @@ -72,7 +73,7 @@ class UserAlbums extends HookConsumerWidget { children: [ PlatformTextField( onChanged: (value) => searchText.value = value, - prefixIcon: Icons.filter_alt_outlined, + prefixIcon: SpotubeIcons.filter, placeholder: 'Filter Albums...', ), const SizedBox(height: 20), diff --git a/lib/components/library/user_artists.dart b/lib/components/library/user_artists.dart index c0edd0dd..f2af67fb 100644 --- a/lib/components/library/user_artists.dart +++ b/lib/components/library/user_artists.dart @@ -6,6 +6,7 @@ import 'package:fuzzywuzzy/fuzzywuzzy.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotify/spotify.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart'; import 'package:spotube/components/shared/waypoint.dart'; import 'package:spotube/components/artist/artist_card.dart'; @@ -63,7 +64,7 @@ class UserArtists extends HookConsumerWidget { color: PlatformTheme.of(context).scaffoldBackgroundColor!, child: PlatformTextField( onChanged: (value) => searchText.value = value, - prefixIcon: Icons.filter_alt_outlined, + prefixIcon: SpotubeIcons.filter, placeholder: 'Filter artists...', ), ), diff --git a/lib/components/library/user_local_tracks.dart b/lib/components/library/user_local_tracks.dart index 0ddb0e81..a855502d 100644 --- a/lib/components/library/user_local_tracks.dart +++ b/lib/components/library/user_local_tracks.dart @@ -13,6 +13,7 @@ import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotify/spotify.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/shared/compact_search.dart'; import 'package:spotube/components/shared/shimmers/shimmer_track_tile.dart'; import 'package:spotube/components/shared/sort_tracks_dropdown.dart'; @@ -208,9 +209,7 @@ class UserLocalTracks extends HookConsumerWidget { children: [ const Text("Play"), Icon( - isPlaylistPlaying - ? Icons.stop_rounded - : Icons.play_arrow_rounded, + isPlaylistPlaying ? SpotubeIcons.stop : SpotubeIcons.play, ) ], ), @@ -226,7 +225,7 @@ class UserLocalTracks extends HookConsumerWidget { ), const SizedBox(width: 10), PlatformFilledButton( - child: const Icon(Icons.refresh_rounded), + child: const Icon(SpotubeIcons.refresh), onPressed: () { ref.refresh(localTracksProvider); }, diff --git a/lib/components/library/user_playlists.dart b/lib/components/library/user_playlists.dart index fb7f3efe..439f7d63 100644 --- a/lib/components/library/user_playlists.dart +++ b/lib/components/library/user_playlists.dart @@ -6,6 +6,7 @@ import 'package:collection/collection.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotify/spotify.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/playlist/playlist_create_dialog.dart'; import 'package:spotube/components/shared/playbutton_card.dart'; import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart'; @@ -99,7 +100,7 @@ class UserPlaylists extends HookConsumerWidget { PlatformTextField( onChanged: (value) => searchText.value = value, placeholder: "Filter your playlists...", - prefixIcon: Icons.filter_alt_outlined, + prefixIcon: SpotubeIcons.filter, ), const SizedBox(height: 20), if (playlistsQuery.isLoading || !playlistsQuery.hasData) diff --git a/lib/components/lyrics/lyric_delay_adjust_dialog.dart b/lib/components/lyrics/lyric_delay_adjust_dialog.dart index e565bb46..47fd1609 100644 --- a/lib/components/lyrics/lyric_delay_adjust_dialog.dart +++ b/lib/components/lyrics/lyric_delay_adjust_dialog.dart @@ -1,8 +1,8 @@ import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/root/sidebar.dart'; import 'package:spotube/pages/lyrics/synced_lyrics.dart'; @@ -80,7 +80,7 @@ class LyricDelayAdjustDialog extends HookConsumerWidget { mainAxisSize: MainAxisSize.min, children: [ PlatformIconButton( - icon: const Icon(Icons.remove_rounded), + icon: const Icon(SpotubeIcons.remove), onPressed: () { controller.text = "${getValue() - 25}ms"; }, @@ -100,7 +100,7 @@ class LyricDelayAdjustDialog extends HookConsumerWidget { ), ), PlatformIconButton( - icon: const Icon(Icons.add_rounded), + icon: const Icon(SpotubeIcons.add), onPressed: () { controller.text = "${getValue() + 25}ms"; }, diff --git a/lib/components/player/player_actions.dart b/lib/components/player/player_actions.dart index 07c39fdf..f6771418 100644 --- a/lib/components/player/player_actions.dart +++ b/lib/components/player/player_actions.dart @@ -4,6 +4,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotify/spotify.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/library/user_local_tracks.dart'; import 'package:spotube/components/player/player_queue.dart'; import 'package:spotube/components/player/sibling_tracks_sheet.dart'; @@ -53,7 +54,7 @@ class PlayerActions extends HookConsumerWidget { mainAxisAlignment: mainAxisAlignment, children: [ PlatformIconButton( - icon: const Icon(Icons.queue_music_rounded), + icon: const Icon(SpotubeIcons.queue), tooltip: 'Queue', onPressed: playback.playlist != null ? () { @@ -79,7 +80,7 @@ class PlayerActions extends HookConsumerWidget { ), if (!isLocalTrack) PlatformIconButton( - icon: const Icon(Icons.alt_route_rounded), + icon: const Icon(SpotubeIcons.alternativeRoute), tooltip: "Alternative Track Sources", onPressed: playback.track != null ? () { @@ -116,9 +117,7 @@ class PlayerActions extends HookConsumerWidget { PlatformIconButton( tooltip: 'Download track', icon: Icon( - isDownloaded - ? Icons.download_done_rounded - : Icons.download_rounded, + isDownloaded ? SpotubeIcons.done : SpotubeIcons.download, ), onPressed: playback.track != null ? () => downloader.addToQueue(playback.track!) diff --git a/lib/components/player/player_controls.dart b/lib/components/player/player_controls.dart index 643cda82..9ee6df1b 100644 --- a/lib/components/player/player_controls.dart +++ b/lib/components/player/player_controls.dart @@ -3,6 +3,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/hooks/playback_hooks.dart'; import 'package:spotube/collections/intents.dart'; import 'package:spotube/models/logger.dart'; @@ -143,7 +144,7 @@ class PlayerControls extends HookConsumerWidget { ? "Unshuffle playlist" : "Shuffle playlist", icon: Icon( - Icons.shuffle_rounded, + SpotubeIcons.shuffle, color: playback.isShuffled ? PlatformTheme.of(context).primaryColor : null, @@ -157,7 +158,7 @@ class PlayerControls extends HookConsumerWidget { PlatformIconButton( tooltip: "Previous track", icon: Icon( - Icons.skip_previous_rounded, + SpotubeIcons.skipBack, color: iconColor, ), onPressed: () { @@ -175,8 +176,8 @@ class PlayerControls extends HookConsumerWidget { ) : Icon( playback.isPlaying - ? Icons.pause_rounded - : Icons.play_arrow_rounded, + ? SpotubeIcons.pause + : SpotubeIcons.play, color: iconColor, ), onPressed: Actions.handler( @@ -187,7 +188,7 @@ class PlayerControls extends HookConsumerWidget { PlatformIconButton( tooltip: "Next track", icon: Icon( - Icons.skip_next_rounded, + SpotubeIcons.skipForward, color: iconColor, ), onPressed: () => onNext(), @@ -195,7 +196,7 @@ class PlayerControls extends HookConsumerWidget { PlatformIconButton( tooltip: "Stop playback", icon: Icon( - Icons.stop_rounded, + SpotubeIcons.stop, color: iconColor, ), onPressed: playback.track != null @@ -213,8 +214,8 @@ class PlayerControls extends HookConsumerWidget { !playback.isLoop ? "Loop Track" : "Repeat playlist", icon: Icon( playback.isLoop - ? Icons.repeat_one_rounded - : Icons.repeat_rounded, + ? SpotubeIcons.repeatOne + : SpotubeIcons.repeat, ), onPressed: playback.track == null || playback.playlist == null diff --git a/lib/components/player/player_overlay.dart b/lib/components/player/player_overlay.dart index c93b6448..8c9fa3e3 100644 --- a/lib/components/player/player_overlay.dart +++ b/lib/components/player/player_overlay.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.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/collections/spotube_icons.dart'; import 'package:spotube/components/player/player_track_details.dart'; import 'package:spotube/hooks/playback_hooks.dart'; import 'package:spotube/hooks/use_palette_color.dart'; @@ -83,7 +84,7 @@ class PlayerOverlay extends HookConsumerWidget { children: [ IconButton( icon: Icon( - Icons.skip_previous_rounded, + SpotubeIcons.skipBack, color: paletteColor.bodyTextColor, ), onPressed: () { @@ -94,8 +95,8 @@ class PlayerOverlay extends HookConsumerWidget { return IconButton( icon: Icon( ref.read(playbackProvider).isPlaying - ? Icons.pause_rounded - : Icons.play_arrow_rounded, + ? SpotubeIcons.pause + : SpotubeIcons.play, color: paletteColor.bodyTextColor, ), onPressed: Actions.handler( @@ -107,7 +108,7 @@ class PlayerOverlay extends HookConsumerWidget { ), IconButton( icon: Icon( - Icons.skip_next_rounded, + SpotubeIcons.skipForward, color: paletteColor.bodyTextColor, ), onPressed: () => onNext(), diff --git a/lib/components/playlist/playlist_create_dialog.dart b/lib/components/playlist/playlist_create_dialog.dart index 3a54309a..c12bb5e6 100644 --- a/lib/components/playlist/playlist_create_dialog.dart +++ b/lib/components/playlist/playlist_create_dialog.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/root/sidebar.dart'; import 'package:spotube/provider/spotify_provider.dart'; import 'package:spotube/services/queries/queries.dart'; @@ -138,7 +139,7 @@ class PlaylistCreateDialog extends HookConsumerWidget { mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.center, children: const [ - Icon(Icons.add_box_rounded, size: 40), + Icon(SpotubeIcons.addFilled, size: 40), PlatformText("Create Playlist", style: TextStyle(fontSize: 20)), ], ), diff --git a/lib/components/root/sidebar.dart b/lib/components/root/sidebar.dart index 763fd5f6..90f80bce 100644 --- a/lib/components/root/sidebar.dart +++ b/lib/components/root/sidebar.dart @@ -6,6 +6,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:flutter/material.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotube/collections/side_bar_tiles.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/shared/image/universal_image.dart'; import 'package:spotube/hooks/use_breakpoints.dart'; import 'package:spotube/provider/auth_provider.dart'; @@ -175,7 +176,7 @@ class Sidebar extends HookConsumerWidget { ), windowsFooterItems: [ fluent_ui.PaneItemAction( - icon: const fluent_ui.Icon(fluent_ui.FluentIcons.settings), + icon: const Icon(SpotubeIcons.settings), onTap: () => goToSettings(context), ), ], @@ -192,8 +193,6 @@ class SidebarFooter extends HookConsumerWidget { @override Widget build(BuildContext context, ref) { - final auth = ref.watch(authProvider); - return SizedBox( width: 256, child: HookBuilder( @@ -268,7 +267,7 @@ class SidebarFooter extends HookConsumerWidget { ), ), PlatformIconButton( - icon: const Icon(Icons.settings_outlined), + icon: const Icon(SpotubeIcons.settings), onPressed: () => Sidebar.goToSettings(context)), ], )); diff --git a/lib/components/root/spotube_navigation_bar.dart b/lib/components/root/spotube_navigation_bar.dart index 4ab6bd4b..7ca5dd85 100644 --- a/lib/components/root/spotube_navigation_bar.dart +++ b/lib/components/root/spotube_navigation_bar.dart @@ -3,6 +3,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotube/collections/side_bar_tiles.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/root/sidebar.dart'; import 'package:spotube/hooks/use_breakpoints.dart'; import 'package:spotube/provider/downloader_provider.dart'; @@ -48,7 +49,7 @@ class SpotubeNavigationBar extends HookConsumerWidget { }, ), const PlatformBottomNavigationBarItem( - icon: Icons.settings_rounded, + icon: SpotubeIcons.settings, label: "Settings", ) ], diff --git a/lib/components/shared/adaptive/adaptive_popup_menu_button.dart b/lib/components/shared/adaptive/adaptive_popup_menu_button.dart index f194ded5..71425a4b 100644 --- a/lib/components/shared/adaptive/adaptive_popup_menu_button.dart +++ b/lib/components/shared/adaptive/adaptive_popup_menu_button.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:popover/popover.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/hooks/use_breakpoints.dart'; class Action extends StatelessWidget { @@ -90,7 +91,7 @@ class AdaptiveActions extends HookWidget { if (breakpoint.isLessThan(breakOn)) { return PlatformIconButton( - icon: const Icon(Icons.more_horiz), + icon: const Icon(SpotubeIcons.moreHorizontal), onPressed: () { showPopover( context: context, diff --git a/lib/components/shared/compact_search.dart b/lib/components/shared/compact_search.dart index 9327463f..ec2e9686 100644 --- a/lib/components/shared/compact_search.dart +++ b/lib/components/shared/compact_search.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:popover/popover.dart'; +import 'package:spotube/collections/spotube_icons.dart'; class CompactSearch extends HookWidget { final ValueChanged? onChanged; @@ -13,7 +14,7 @@ class CompactSearch extends HookWidget { Key? key, this.onChanged, this.placeholder = "Search...", - this.icon = Icons.search, + this.icon = SpotubeIcons.search, this.iconColor, }) : super(key: key); diff --git a/lib/components/shared/heart_button.dart b/lib/components/shared/heart_button.dart index 4c294967..72973077 100644 --- a/lib/components/shared/heart_button.dart +++ b/lib/components/shared/heart_button.dart @@ -5,6 +5,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotify/spotify.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/hooks/use_palette_color.dart'; import 'package:spotube/provider/auth_provider.dart'; import 'package:spotube/provider/spotify_provider.dart'; @@ -38,10 +39,7 @@ class HeartButton extends ConsumerWidget { return PlatformIconButton( tooltip: tooltip, icon: Icon( - icon ?? - (!isLiked - ? Icons.favorite_outline_rounded - : Icons.favorite_rounded), + icon ?? (!isLiked ? SpotubeIcons.heart : SpotubeIcons.heartFilled), color: isLiked ? Colors.pink : color, ), onPressed: onPressed, diff --git a/lib/components/shared/playbutton_card.dart b/lib/components/shared/playbutton_card.dart index 2469af12..c67447d5 100644 --- a/lib/components/shared/playbutton_card.dart +++ b/lib/components/shared/playbutton_card.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:platform_ui/platform_ui.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/shared/hover_builder.dart'; import 'package:spotube/components/shared/spotube_marquee_text.dart'; import 'package:spotube/components/shared/image/universal_image.dart'; @@ -95,9 +96,7 @@ class PlaybuttonCard extends HookWidget { ), ) : Icon( - isPlaying - ? Icons.pause_rounded - : Icons.play_arrow_rounded, + isPlaying ? SpotubeIcons.pause : SpotubeIcons.play, color: Colors.white, ), ); diff --git a/lib/components/shared/sort_tracks_dropdown.dart b/lib/components/shared/sort_tracks_dropdown.dart index 2279a44e..135b7b7d 100644 --- a/lib/components/shared/sort_tracks_dropdown.dart +++ b/lib/components/shared/sort_tracks_dropdown.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:platform_ui/platform_ui.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/library/user_local_tracks.dart'; class SortTracksDropdown extends StatelessWidget { @@ -48,7 +49,7 @@ class SortTracksDropdown extends StatelessWidget { ], onSelected: onChanged, tooltip: "Sort tracks", - child: const Icon(Icons.sort_rounded), + child: const Icon(SpotubeIcons.sort), ); } } diff --git a/lib/components/shared/track_table/track_collection_view.dart b/lib/components/shared/track_table/track_collection_view.dart index 88befe94..1db5bd5d 100644 --- a/lib/components/shared/track_table/track_collection_view.dart +++ b/lib/components/shared/track_table/track_collection_view.dart @@ -5,6 +5,7 @@ import 'package:fuzzywuzzy/fuzzywuzzy.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/collections/spotube_icons.dart'; import 'package:spotube/components/shared/compact_search.dart'; import 'package:spotube/components/shared/shimmers/shimmer_track_tile.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart'; @@ -70,7 +71,7 @@ class TrackCollectionView extends HookConsumerWidget { if (showShare) PlatformIconButton( icon: Icon( - Icons.share_rounded, + SpotubeIcons.share, color: color?.titleTextColor, ), onPressed: onShare, @@ -79,7 +80,7 @@ class TrackCollectionView extends HookConsumerWidget { PlatformIconButton( tooltip: "Shuffle", icon: Icon( - Icons.shuffle, + SpotubeIcons.shuffle, color: color?.titleTextColor, ), onPressed: onShuffledPlay, @@ -90,7 +91,7 @@ class TrackCollectionView extends HookConsumerWidget { backgroundColor: PlatformTheme.of(context).primaryColor, onPressed: tracksSnapshot.data != null ? onPlay : null, icon: Icon( - isPlaying ? Icons.stop_rounded : Icons.play_arrow_rounded, + isPlaying ? SpotubeIcons.stop : SpotubeIcons.play, color: PlatformTextTheme.of(context).body?.color, ), ), @@ -167,7 +168,7 @@ class TrackCollectionView extends HookConsumerWidget { borderColor: color?.titleTextColor, prefixIconColor: color?.titleTextColor, cursorColor: color?.titleTextColor, - prefixIcon: Icons.search_rounded, + prefixIcon: SpotubeIcons.search, ), ); diff --git a/lib/components/shared/track_table/track_tile.dart b/lib/components/shared/track_table/track_tile.dart index ab9c8b42..51ed247d 100644 --- a/lib/components/shared/track_table/track_tile.dart +++ b/lib/components/shared/track_table/track_tile.dart @@ -7,6 +7,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotify/spotify.dart' hide Image; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/shared/adaptive/adaptive_popup_menu_button.dart'; import 'package:spotube/components/shared/heart_button.dart'; import 'package:spotube/components/shared/links/link_text.dart'; @@ -236,13 +237,13 @@ class TrackTile extends HookConsumerWidget { ), ), Padding( - padding: const EdgeInsets.all(8.0).copyWith(left: 0), + padding: const EdgeInsets.all(8.0), child: PlatformIconButton( icon: Icon( playback.track?.id != null && playback.track?.id == track.value.id - ? Icons.pause_rounded - : Icons.play_arrow_rounded, + ? SpotubeIcons.pause + : SpotubeIcons.play, color: Colors.white, ), backgroundColor: PlatformTheme.of(context).primaryColor, @@ -323,10 +324,10 @@ class TrackTile extends HookConsumerWidget { Action( icon: toggler.item1 ? const Icon( - Icons.favorite_rounded, + SpotubeIcons.heartFilled, color: Colors.pink, ) - : const Icon(Icons.favorite_border_rounded), + : const Icon(SpotubeIcons.heart), text: const PlatformText("Save as favorite"), onPressed: () { toggler.item2.mutate(Tuple2(spotify, toggler.item1)); @@ -334,7 +335,7 @@ class TrackTile extends HookConsumerWidget { ), if (auth.isLoggedIn) Action( - icon: const Icon(Icons.add_box_rounded), + icon: const Icon(SpotubeIcons.addFilled), text: const PlatformText("Add To playlist"), onPressed: actionAddToPlaylist, ), @@ -345,7 +346,7 @@ class TrackTile extends HookConsumerWidget { ? const Center( child: PlatformCircularProgressIndicator(), ) - : const Icon(Icons.remove_circle_outline_rounded), + : const Icon(SpotubeIcons.removeFilled), text: const PlatformText("Remove from playlist"), onPressed: () { removingTrack.value = track.value.uri; @@ -353,7 +354,7 @@ class TrackTile extends HookConsumerWidget { }, ), Action( - icon: const Icon(Icons.share_rounded), + icon: const Icon(SpotubeIcons.share), text: const PlatformText("Share"), onPressed: () { actionShare(track.value); @@ -361,7 +362,7 @@ class TrackTile extends HookConsumerWidget { ), Action( icon: Icon( - Icons.playlist_remove_rounded, + SpotubeIcons.playlistRemove, color: isBlackListed ? Colors.white : Colors.red[400], ), backgroundColor: isBlackListed ? Colors.red[400] : null, diff --git a/lib/components/shared/track_table/tracks_table_view.dart b/lib/components/shared/track_table/tracks_table_view.dart index 56afce78..b76ea1b0 100644 --- a/lib/components/shared/track_table/tracks_table_view.dart +++ b/lib/components/shared/track_table/tracks_table_view.dart @@ -3,6 +3,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotify/spotify.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/shared/dialogs/confirm_download_dialog.dart'; import 'package:spotube/components/shared/dialogs/playlist_add_track_dialog.dart'; import 'package:spotube/components/shared/fallbacks/not_found.dart'; @@ -139,7 +140,8 @@ class TracksTableView extends HookConsumerWidget { value: "download", child: Row( children: [ - const Icon(Icons.file_download_outlined), + const Icon(SpotubeIcons.download), + const SizedBox(width: 5), PlatformText( "Download ${selectedTracks.isNotEmpty ? "(${selectedTracks.length})" : ""}", ), @@ -152,7 +154,8 @@ class TracksTableView extends HookConsumerWidget { value: "add-to-playlist", child: Row( children: [ - const Icon(Icons.playlist_add_rounded), + const Icon(SpotubeIcons.playlistAdd), + const SizedBox(width: 5), PlatformText( "Add (${selectedTracks.length}) to Playlist", ), @@ -193,7 +196,7 @@ class TracksTableView extends HookConsumerWidget { default: } }, - child: const Icon(Icons.more_vert), + child: const Icon(SpotubeIcons.moreVertical), ), const SizedBox(width: 10), ], diff --git a/lib/pages/artist/artist.dart b/lib/pages/artist/artist.dart index a97337c9..9287e594 100644 --- a/lib/pages/artist/artist.dart +++ b/lib/pages/artist/artist.dart @@ -6,6 +6,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotify/spotify.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/shared/shimmers/shimmer_artist_profile.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart'; import 'package:spotube/components/shared/track_table/track_tile.dart'; @@ -229,7 +230,7 @@ class ArtistPage extends HookConsumerWidget { PlatformIconButton( tooltip: "Add to blacklisted artists", icon: Icon( - Icons.person_remove_rounded, + SpotubeIcons.userRemove, color: !isBlackListed ? Colors.red[400] : Colors.white, @@ -257,7 +258,7 @@ class ArtistPage extends HookConsumerWidget { }, ), PlatformIconButton( - icon: const Icon(Icons.share_rounded), + icon: const Icon(SpotubeIcons.share), onPressed: () async { await Clipboard.setData( ClipboardData( @@ -343,8 +344,8 @@ class ArtistPage extends HookConsumerWidget { child: PlatformIconButton( icon: Icon( isPlaylistPlaying - ? Icons.stop_rounded - : Icons.play_arrow_rounded, + ? SpotubeIcons.stop + : SpotubeIcons.play, color: Colors.white, ), onPressed: () => diff --git a/lib/pages/lyrics/synced_lyrics.dart b/lib/pages/lyrics/synced_lyrics.dart index 1cc114aa..add22554 100644 --- a/lib/pages/lyrics/synced_lyrics.dart +++ b/lib/pages/lyrics/synced_lyrics.dart @@ -5,6 +5,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:palette_generator/palette_generator.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotify/spotify.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/shared/shimmers/shimmer_lyrics.dart'; import 'package:spotube/components/shared/spotube_marquee_text.dart'; import 'package:spotube/components/lyrics/lyric_delay_adjust_dialog.dart'; @@ -92,7 +93,7 @@ class SyncedLyrics extends HookConsumerWidget { alignment: Alignment.centerRight, child: PlatformFilledButton( child: const Icon( - Icons.av_timer_rounded, + SpotubeIcons.clock, size: 16, ), onPressed: () async { diff --git a/lib/pages/player/player.dart b/lib/pages/player/player.dart index f4025783..3c9f2fd9 100644 --- a/lib/pages/player/player.dart +++ b/lib/pages/player/player.dart @@ -7,6 +7,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:palette_generator/palette_generator.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotify/spotify.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/player/player_actions.dart'; import 'package:spotube/components/player/player_controls.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart'; @@ -192,7 +193,7 @@ class PlayerView extends HookConsumerWidget { extraActions: [ PlatformIconButton( tooltip: "Open Lyrics", - icon: const Icon(Icons.lyrics_rounded), + icon: const Icon(SpotubeIcons.lyrics), onPressed: () { GoRouter.of(context).pop(); GoRouter.of(context).go('/lyrics'); diff --git a/lib/pages/search/search.dart b/lib/pages/search/search.dart index 6f3ff966..ac637e36 100644 --- a/lib/pages/search/search.dart +++ b/lib/pages/search/search.dart @@ -5,6 +5,7 @@ import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:platform_ui/platform_ui.dart'; import 'package:spotify/spotify.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/components/album/album_card.dart'; import 'package:spotube/components/shared/shimmers/shimmer_playbutton_card.dart'; import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart'; @@ -92,7 +93,7 @@ class SearchPage extends HookConsumerWidget { ref.read(searchTermStateProvider.notifier).state = value; }, - prefixIcon: Icons.search_rounded, + prefixIcon: SpotubeIcons.search, prefixIconColor: PlatformProperty.only( ios: PlatformTheme.of(context).textTheme?.caption?.color, diff --git a/lib/pages/settings/blacklist.dart b/lib/pages/settings/blacklist.dart index ed97d8eb..7297b024 100644 --- a/lib/pages/settings/blacklist.dart +++ b/lib/pages/settings/blacklist.dart @@ -4,6 +4,7 @@ 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/collections/spotube_icons.dart'; import 'package:spotube/components/shared/page_window_title_bar.dart'; import 'package:spotube/provider/blacklist_provider.dart'; import 'package:tuple/tuple.dart'; @@ -50,7 +51,7 @@ class BlackListPage extends HookConsumerWidget { child: PlatformTextField( onChanged: (value) => searchText.value = value, placeholder: "Search", - prefixIcon: Icons.search_rounded, + prefixIcon: SpotubeIcons.search, ), ), ListView.builder( @@ -63,8 +64,7 @@ class BlackListPage extends HookConsumerWidget { title: PlatformText("${item.name} (${item.type.name})"), subtitle: PlatformText.caption(item.id), trailing: PlatformIconButton( - icon: Icon(Icons.delete_forever_rounded, - color: Colors.red[400]), + icon: Icon(SpotubeIcons.trash, color: Colors.red[400]), onPressed: () { ref .read(BlackListNotifier.provider.notifier) diff --git a/lib/pages/settings/settings.dart b/lib/pages/settings/settings.dart index c5d4ad21..0e8a6672 100644 --- a/lib/pages/settings/settings.dart +++ b/lib/pages/settings/settings.dart @@ -5,6 +5,7 @@ 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/collections/spotube_icons.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'; @@ -69,7 +70,7 @@ class SettingsPage extends HookConsumerWidget { if (auth.isAnonymous) AdaptiveListTile( leading: Icon( - Icons.login_rounded, + SpotubeIcons.login, color: PlatformTheme.of(context).primaryColor, ), title: SizedBox( @@ -105,7 +106,7 @@ class SettingsPage extends HookConsumerWidget { Builder(builder: (context) { Auth auth = ref.watch(authProvider); return PlatformListTile( - leading: const Icon(Icons.logout_rounded), + leading: const Icon(SpotubeIcons.logout), title: SizedBox( height: 50, width: 180, @@ -140,7 +141,7 @@ class SettingsPage extends HookConsumerWidget { ?.copyWith(fontWeight: FontWeight.bold), ), AdaptiveListTile( - leading: const Icon(Icons.dashboard_rounded), + leading: const Icon(SpotubeIcons.dashboard), title: const PlatformText("Layout Mode"), subtitle: const PlatformText( "Override responsive layout mode settings", @@ -175,7 +176,7 @@ class SettingsPage extends HookConsumerWidget { ), ), AdaptiveListTile( - leading: const Icon(Icons.dark_mode_outlined), + leading: const Icon(SpotubeIcons.darkMode), title: const PlatformText("Theme"), trailing: (context, update) => PlatformDropDownMenu( @@ -203,7 +204,7 @@ class SettingsPage extends HookConsumerWidget { ), ), AdaptiveListTile( - leading: const Icon(Icons.ad_units_rounded), + leading: const Icon(SpotubeIcons.platform), title: const PlatformText("Mimic Platform"), trailing: (context, update) => DropdownButton( @@ -239,7 +240,7 @@ class SettingsPage extends HookConsumerWidget { ), ), PlatformListTile( - leading: const Icon(Icons.palette_outlined), + leading: const Icon(SpotubeIcons.palette), title: const PlatformText("Accent Color Scheme"), contentPadding: const EdgeInsets.symmetric( horizontal: 15, @@ -253,7 +254,7 @@ class SettingsPage extends HookConsumerWidget { onTap: pickColorScheme(ColorSchemeType.accent), ), PlatformListTile( - leading: const Icon(Icons.format_color_fill_rounded), + leading: const Icon(SpotubeIcons.colorBucket), title: const PlatformText("Background Color Scheme"), contentPadding: const EdgeInsets.symmetric( horizontal: 15, @@ -267,7 +268,7 @@ class SettingsPage extends HookConsumerWidget { onTap: pickColorScheme(ColorSchemeType.background), ), PlatformListTile( - leading: const Icon(Icons.album_rounded), + leading: const Icon(SpotubeIcons.album), title: const PlatformText("Rotating Album Art"), trailing: PlatformSwitch( value: preferences.rotatingAlbumArt, @@ -283,7 +284,7 @@ class SettingsPage extends HookConsumerWidget { ?.copyWith(fontWeight: FontWeight.bold), ), AdaptiveListTile( - leading: const Icon(Icons.multitrack_audio_rounded), + leading: const Icon(SpotubeIcons.audioQuality), title: const PlatformText("Audio Quality"), trailing: (context, update) => PlatformDropDownMenu( @@ -310,7 +311,7 @@ class SettingsPage extends HookConsumerWidget { ), if (kIsMobile) PlatformListTile( - leading: const Icon(Icons.download_for_offline_rounded), + leading: const Icon(SpotubeIcons.download), title: const PlatformText( "Pre download and play", ), @@ -325,7 +326,7 @@ class SettingsPage extends HookConsumerWidget { ), ), PlatformListTile( - leading: const Icon(Icons.fast_forward_rounded), + leading: const Icon(SpotubeIcons.fastForward), title: const PlatformText( "Skip non-music segments (SponsorBlock)", ), @@ -337,7 +338,7 @@ class SettingsPage extends HookConsumerWidget { ), ), PlatformListTile( - leading: const Icon(Icons.playlist_remove_rounded), + leading: const Icon(SpotubeIcons.playlistRemove), title: const PlatformText("Blacklist"), subtitle: const PlatformText( "Blacklisted tracks and artists", @@ -345,7 +346,7 @@ class SettingsPage extends HookConsumerWidget { onTap: () { GoRouter.of(context).push("/settings/blacklist"); }, - trailing: const Icon(Icons.chevron_right_rounded), + trailing: const Icon(SpotubeIcons.angleRight), ), PlatformText( " Search", @@ -354,7 +355,7 @@ class SettingsPage extends HookConsumerWidget { ?.copyWith(fontWeight: FontWeight.bold), ), AdaptiveListTile( - leading: const Icon(Icons.shopping_bag_rounded), + leading: const Icon(SpotubeIcons.shoppingBag), title: const PlatformText("Market Place"), subtitle: PlatformText.caption( "Recommendation Country", @@ -382,7 +383,7 @@ class SettingsPage extends HookConsumerWidget { ), ), AdaptiveListTile( - leading: const Icon(Icons.screen_search_desktop_rounded), + leading: const Icon(SpotubeIcons.screenSearch), title: const SizedBox( height: 50, width: 200, @@ -401,7 +402,7 @@ class SettingsPage extends HookConsumerWidget { child: PlatformTextField( controller: ytSearchFormatController, suffix: PlatformFilledButton( - child: const Icon(Icons.save_rounded), + child: const Icon(SpotubeIcons.save), onPressed: () { preferences.setYtSearchFormat( ytSearchFormatController.value.text, @@ -416,7 +417,7 @@ class SettingsPage extends HookConsumerWidget { ), ), AdaptiveListTile( - leading: const Icon(Icons.low_priority_rounded), + leading: const Icon(SpotubeIcons.barChart), title: SizedBox( height: 50, width: 180, @@ -465,17 +466,17 @@ class SettingsPage extends HookConsumerWidget { ?.copyWith(fontWeight: FontWeight.bold), ), PlatformListTile( - leading: const Icon(Icons.file_download_outlined), + leading: const Icon(SpotubeIcons.download), title: const PlatformText("Download Location"), subtitle: PlatformText(preferences.downloadLocation), trailing: PlatformFilledButton( onPressed: pickDownloadLocation, - child: const Icon(Icons.folder_rounded), + child: const Icon(SpotubeIcons.folder), ), onTap: pickDownloadLocation, ), PlatformListTile( - leading: const Icon(Icons.lyrics_rounded), + leading: const Icon(SpotubeIcons.lyrics), title: const PlatformText( "Download lyrics along with the Track"), trailing: PlatformSwitch( @@ -493,7 +494,7 @@ class SettingsPage extends HookConsumerWidget { ), AdaptiveListTile( leading: const Icon( - Icons.favorite_border_rounded, + SpotubeIcons.heart, color: Colors.pink, ), title: const SizedBox( @@ -529,7 +530,7 @@ class SettingsPage extends HookConsumerWidget { child: Row( mainAxisSize: MainAxisSize.min, children: const [ - Icon(Icons.favorite_outline_rounded), + Icon(SpotubeIcons.heart), SizedBox(width: 5), PlatformText("Please Sponsor/Donate"), ], @@ -537,7 +538,7 @@ class SettingsPage extends HookConsumerWidget { ), ), PlatformListTile( - leading: const Icon(Icons.update_rounded), + leading: const Icon(SpotubeIcons.update), title: const PlatformText("Check for Update"), trailing: PlatformSwitch( value: preferences.checkUpdate, @@ -546,9 +547,9 @@ class SettingsPage extends HookConsumerWidget { ), ), PlatformListTile( - leading: const Icon(Icons.info_outline_rounded), + leading: const Icon(SpotubeIcons.info), title: const PlatformText("About Spotube"), - trailing: const Icon(Icons.arrow_forward_ios_rounded), + trailing: const Icon(SpotubeIcons.angleRight), onTap: () { GoRouter.of(context).push("/settings/about"); }, diff --git a/lib/themes/dark_theme.dart b/lib/themes/dark_theme.dart index df180479..03e152fc 100644 --- a/lib/themes/dark_theme.dart +++ b/lib/themes/dark_theme.dart @@ -24,14 +24,17 @@ ThemeData darkTheme({ buttonTheme: ButtonThemeData( buttonColor: accentMaterialColor, ), + iconTheme: IconThemeData(size: 16, color: Colors.grey[50]), inputDecorationTheme: InputDecorationTheme( focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(20), borderSide: BorderSide( color: accentMaterialColor[400]!, width: 2.0, ), ), enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(20), borderSide: BorderSide( color: backgroundMaterialColor[800]!, ), @@ -39,8 +42,15 @@ ThemeData darkTheme({ ), navigationRailTheme: NavigationRailThemeData( backgroundColor: backgroundMaterialColor[800], - unselectedIconTheme: IconThemeData(color: Colors.grey[300], opacity: 1), - selectedIconTheme: IconThemeData(color: backgroundMaterialColor[850]), + unselectedIconTheme: IconThemeData( + color: Colors.grey[300], + opacity: 1, + size: 18, + ), + selectedIconTheme: IconThemeData( + color: backgroundMaterialColor[850], + size: 18, + ), selectedLabelTextStyle: TextStyle(color: accentMaterialColor[300]), unselectedLabelTextStyle: TextStyle(color: Colors.grey[300]), indicatorColor: accentMaterialColor[300], @@ -49,6 +59,19 @@ ThemeData darkTheme({ backgroundColor: backgroundMaterialColor[800], height: 55, indicatorColor: accentMaterialColor[300], + labelBehavior: NavigationDestinationLabelBehavior.alwaysHide, + iconTheme: MaterialStateProperty.resolveWith((states) { + if (states.contains(MaterialState.selected)) { + return IconThemeData( + color: Colors.grey[900], + size: 18, + ); + } + return IconThemeData( + color: Colors.grey[300], + size: 18, + ); + }), ), cardTheme: CardTheme( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), @@ -79,6 +102,7 @@ ThemeData darkTheme({ if (states.contains(MaterialState.selected)) { return accentMaterialColor[500]; } + return null; }), ), tabBarTheme: TabBarTheme( diff --git a/lib/themes/light_theme.dart b/lib/themes/light_theme.dart index 8160e773..6c3bd203 100644 --- a/lib/themes/light_theme.dart +++ b/lib/themes/light_theme.dart @@ -50,24 +50,35 @@ ThemeData lightTheme({ iconColor: Colors.grey[850], horizontalTitleGap: 0, ), + iconTheme: const IconThemeData(size: 16), inputDecorationTheme: InputDecorationTheme( + isDense: true, focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(20), borderSide: BorderSide( color: accentMaterialColor[400]!, width: 2.0, ), ), enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(20), borderSide: BorderSide( - color: Colors.grey[800]!, + color: Colors.grey[600]!, ), ), ), navigationRailTheme: NavigationRailThemeData( backgroundColor: backgroundMaterialColor[100], indicatorColor: accentMaterialColor[300], - selectedIconTheme: IconThemeData(color: accentMaterialColor[850]), - unselectedIconTheme: IconThemeData(color: Colors.grey[850], opacity: 1), + selectedIconTheme: IconThemeData( + color: accentMaterialColor[850], + size: 18, + ), + unselectedIconTheme: IconThemeData( + color: Colors.grey[850], + opacity: 1, + size: 18, + ), unselectedLabelTextStyle: TextStyle( color: Colors.grey[850], ), @@ -77,8 +88,9 @@ ThemeData lightTheme({ height: 55, indicatorColor: accentMaterialColor[300], iconTheme: MaterialStateProperty.all( - IconThemeData(color: Colors.grey[850]), + IconThemeData(color: Colors.grey[850], size: 18), ), + labelBehavior: NavigationDestinationLabelBehavior.alwaysHide, ), cardTheme: CardTheme( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), @@ -122,6 +134,7 @@ ThemeData lightTheme({ } final windowsTheme = fluent_ui.ThemeData.light().copyWith( + iconTheme: const IconThemeData(size: 16), buttonTheme: fluent_ui.ButtonThemeData( iconButtonStyle: fluent_ui.ButtonStyle( iconSize: fluent_ui.ButtonState.all(20), @@ -129,6 +142,7 @@ final windowsTheme = fluent_ui.ThemeData.light().copyWith( ), ); final windowsDarkTheme = fluent_ui.ThemeData.dark().copyWith( + iconTheme: const IconThemeData(size: 16), buttonTheme: fluent_ui.ButtonThemeData( iconButtonStyle: fluent_ui.ButtonStyle( iconSize: fluent_ui.ButtonState.all(20), @@ -139,14 +153,14 @@ final macosTheme = MacosThemeData.light().copyWith( pushButtonTheme: const PushButtonThemeData( secondaryColor: Colors.white, ), - iconTheme: const MacosIconThemeData(size: 14), + iconTheme: const MacosIconThemeData(size: 16), typography: MacosTypography(color: Colors.grey[900]!), ); final macosDarkTheme = MacosThemeData.dark().copyWith( pushButtonTheme: const PushButtonThemeData( secondaryColor: Colors.white, ), - iconTheme: const MacosIconThemeData(size: 14), + iconTheme: const MacosIconThemeData(size: 16), typography: MacosTypography(color: MacosColors.textColor), ); const iosTheme = CupertinoThemeData(brightness: Brightness.light); @@ -156,6 +170,7 @@ const iosDarkTheme = CupertinoThemeData( final linuxTheme = AdwaitaThemeData.light().copyWith( primaryColor: const Color(0xFF3582e5), + iconTheme: const IconThemeData(size: 16), extensions: [ ShimmerColorTheme( shimmerBackgroundColor: Colors.grey[300], @@ -182,6 +197,7 @@ final linuxTheme = AdwaitaThemeData.light().copyWith( ), ); final linuxDarkTheme = AdwaitaThemeData.dark().copyWith( + iconTheme: IconThemeData(size: 16, color: Colors.grey[50]), extensions: [ ShimmerColorTheme( shimmerBackgroundColor: Colors.grey[800], diff --git a/pubspec.lock b/pubspec.lock index d870ec78..23eae2ee 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -484,6 +484,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.3" + fluentui_system_icons: + dependency: "direct main" + description: + name: fluentui_system_icons + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.189" flutter: dependency: "direct main" description: flutter @@ -524,6 +531,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.0.2" + flutter_feather_icons: + dependency: "direct main" + description: + name: flutter_feather_icons + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0+1" flutter_hooks: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 8893a03d..133b169b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -70,6 +70,8 @@ dependencies: url: https://github.com/google/flutter-desktop-embedding.git ref: a738913c8ce2c9f47515382d40827e794a334274 path: plugins/window_size + flutter_feather_icons: ^2.0.0+1 + fluentui_system_icons: ^1.1.189 dev_dependencies: flutter_test: diff --git a/test/widget_test.dart b/test/widget_test.dart index 46ff535e..9ad0195a 100644 --- a/test/widget_test.dart +++ b/test/widget_test.dart @@ -5,8 +5,8 @@ // gestures. You can also use WidgetTester to find child widgets in the widget // tree, read text, and verify that the values of widget properties are correct. -import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; +import 'package:spotube/collections/spotube_icons.dart'; import 'package:spotube/main.dart'; @@ -20,7 +20,7 @@ void main() { expect(find.text('1'), findsNothing); // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); + await tester.tap(find.byIcon(SpotubeIcons.add)); await tester.pump(); // Verify that our counter has incremented.