diff --git a/lib/components/CategoryCard.dart b/lib/components/Catergory/CategoryCard.dart similarity index 95% rename from lib/components/CategoryCard.dart rename to lib/components/Catergory/CategoryCard.dart index 61a8ad53..1788fffc 100644 --- a/lib/components/CategoryCard.dart +++ b/lib/components/Catergory/CategoryCard.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart' hide Page; import 'package:provider/provider.dart'; import 'package:spotify/spotify.dart'; -import 'package:spotube/components/PlaylistCard.dart'; -import 'package:spotube/components/PlaylistGenreView.dart'; +import 'package:spotube/components/Playlist/PlaylistCard.dart'; +import 'package:spotube/components/Playlist/PlaylistGenreView.dart'; import 'package:spotube/provider/SpotifyDI.dart'; class CategoryCard extends StatefulWidget { diff --git a/lib/components/Home.dart b/lib/components/Home.dart index cdaf7f32..85c05727 100644 --- a/lib/components/Home.dart +++ b/lib/components/Home.dart @@ -5,14 +5,14 @@ import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:oauth2/oauth2.dart' show AuthorizationException; -import 'package:spotify/spotify.dart' hide Image; -import 'package:spotube/components/CategoryCard.dart'; +import 'package:spotify/spotify.dart' hide Image, Player; +import 'package:spotube/components/Catergory/CategoryCard.dart'; import 'package:spotube/components/Login.dart'; import 'package:spotube/components/Lyrics.dart'; -import 'package:spotube/components/PageWindowTitleBar.dart'; -import 'package:spotube/components/Player.dart' as player; +import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; +import 'package:spotube/components/Player/Player.dart'; import 'package:spotube/components/Settings.dart'; -import 'package:spotube/components/UserLibrary.dart'; +import 'package:spotube/components/Library/UserLibrary.dart'; import 'package:spotube/helpers/oauth-login.dart'; import 'package:spotube/models/LocalStorageKeys.dart'; import 'package:spotube/models/sideBarTiles.dart'; @@ -132,7 +132,7 @@ class _HomeState extends State { Widget build(BuildContext context) { Auth authProvider = Provider.of(context); if (!authProvider.isLoggedIn) { - return Login(); + return const Login(); } return Scaffold( @@ -261,7 +261,7 @@ class _HomeState extends State { ), ), // player itself - const player.Player() + const Player() ], ), ); diff --git a/lib/components/Library/UserArtists.dart b/lib/components/Library/UserArtists.dart new file mode 100644 index 00000000..75401d58 --- /dev/null +++ b/lib/components/Library/UserArtists.dart @@ -0,0 +1,10 @@ +import 'package:flutter/material.dart'; + +class UserArtists extends StatelessWidget { + const UserArtists({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Container(); + } +} diff --git a/lib/components/Library/UserLibrary.dart b/lib/components/Library/UserLibrary.dart new file mode 100644 index 00000000..5d2d6c98 --- /dev/null +++ b/lib/components/Library/UserLibrary.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart' hide Image; +import 'package:spotube/components/Library/UserPlaylists.dart'; + +class UserLibrary extends StatefulWidget { + const UserLibrary({Key? key}) : super(key: key); + + @override + _UserLibraryState createState() => _UserLibraryState(); +} + +class _UserLibraryState extends State { + @override + Widget build(BuildContext context) { + return Expanded( + child: DefaultTabController( + length: 3, + child: Scaffold( + appBar: TabBar( + indicator: const BoxDecoration(color: Colors.transparent), + labelColor: Theme.of(context).primaryColor, + unselectedLabelColor: Theme.of(context).textTheme.bodyText1?.color, + tabs: const [ + Tab(text: "Playlist"), + Tab(text: "Artists"), + Tab(text: "Album"), + ], + ), + body: const TabBarView(children: [ + UserPlaylists(), + Icon(Icons.ac_unit_outlined), + Icon(Icons.ac_unit_outlined), + ]), + ), + ), + ); + } +} diff --git a/lib/components/UserLibrary.dart b/lib/components/Library/UserPlaylists.dart similarity index 50% rename from lib/components/UserLibrary.dart rename to lib/components/Library/UserPlaylists.dart index 5279ea2f..dbe37fbe 100644 --- a/lib/components/UserLibrary.dart +++ b/lib/components/Library/UserPlaylists.dart @@ -1,17 +1,12 @@ import 'package:flutter/material.dart' hide Image; import 'package:provider/provider.dart'; import 'package:spotify/spotify.dart'; -import 'package:spotube/components/PlaylistCard.dart'; +import 'package:spotube/components/Playlist/PlaylistCard.dart'; import 'package:spotube/provider/SpotifyDI.dart'; -class UserLibrary extends StatefulWidget { - const UserLibrary({Key? key}) : super(key: key); +class UserPlaylists extends StatelessWidget { + const UserPlaylists({Key? key}) : super(key: key); - @override - _UserLibraryState createState() => _UserLibraryState(); -} - -class _UserLibraryState extends State { @override Widget build(BuildContext context) { SpotifyDI data = context.watch(); @@ -20,9 +15,7 @@ class _UserLibraryState extends State { future: data.spotifyApi.playlists.me.all(), builder: (context, snapshot) { if (!snapshot.hasData) { - return const Expanded( - child: Center(child: CircularProgressIndicator.adaptive()), - ); + return const Center(child: CircularProgressIndicator.adaptive()); } Image image = Image(); image.height = 300; @@ -36,23 +29,19 @@ class _UserLibraryState extends State { image.url = "https://t.scdn.co/images/3099b3803ad9496896c43f22fe9be8c4.png"; likedTracksPlaylist.images = [image]; - return Expanded( - child: Scrollbar( - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(8.0), - child: Wrap( - spacing: 20, // gap between adjacent chips - runSpacing: 20, // gap between lines - alignment: WrapAlignment.center, - children: [ - PlaylistCard(likedTracksPlaylist), - ...snapshot.data! - .map((playlist) => PlaylistCard(playlist)) - .toList(), - ], - ), - ), + return SingleChildScrollView( + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Wrap( + spacing: 20, // gap between adjacent chips + runSpacing: 20, // gap between lines + alignment: WrapAlignment.center, + children: [ + PlaylistCard(likedTracksPlaylist), + ...snapshot.data! + .map((playlist) => PlaylistCard(playlist)) + .toList(), + ], ), ), ); diff --git a/lib/components/Login.dart b/lib/components/Login.dart index d4b9add9..5c59bab9 100644 --- a/lib/components/Login.dart +++ b/lib/components/Login.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; -import 'package:spotube/components/PageWindowTitleBar.dart'; +import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/helpers/oauth-login.dart'; import 'package:spotube/provider/Auth.dart'; diff --git a/lib/components/Player.dart b/lib/components/Player/Player.dart similarity index 99% rename from lib/components/Player.dart rename to lib/components/Player/Player.dart index 9aec9fbb..87bc8fee 100644 --- a/lib/components/Player.dart +++ b/lib/components/Player/Player.dart @@ -5,8 +5,8 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:hotkey_manager/hotkey_manager.dart'; import 'package:just_audio/just_audio.dart'; import 'package:spotify/spotify.dart'; -import 'package:spotube/components/DownloadTrackButton.dart'; -import 'package:spotube/components/PlayerControls.dart'; +import 'package:spotube/components/Shared/DownloadTrackButton.dart'; +import 'package:spotube/components/Player/PlayerControls.dart'; import 'package:spotube/helpers/artist-to-string.dart'; import 'package:spotube/helpers/search-youtube.dart'; import 'package:spotube/models/GlobalKeyActions.dart'; diff --git a/lib/components/PlayerControls.dart b/lib/components/Player/PlayerControls.dart similarity index 100% rename from lib/components/PlayerControls.dart rename to lib/components/Player/PlayerControls.dart diff --git a/lib/components/PlaylistCard.dart b/lib/components/Playlist/PlaylistCard.dart similarity index 98% rename from lib/components/PlaylistCard.dart rename to lib/components/Playlist/PlaylistCard.dart index 82f0da96..c024da87 100644 --- a/lib/components/PlaylistCard.dart +++ b/lib/components/Playlist/PlaylistCard.dart @@ -2,7 +2,7 @@ import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:spotify/spotify.dart'; -import 'package:spotube/components/PlaylistView.dart'; +import 'package:spotube/components/Playlist/PlaylistView.dart'; import 'package:spotube/provider/Playback.dart'; import 'package:spotube/provider/SpotifyDI.dart'; diff --git a/lib/components/PlaylistGenreView.dart b/lib/components/Playlist/PlaylistGenreView.dart similarity index 94% rename from lib/components/PlaylistGenreView.dart rename to lib/components/Playlist/PlaylistGenreView.dart index 61f2facb..15879a9a 100644 --- a/lib/components/PlaylistGenreView.dart +++ b/lib/components/Playlist/PlaylistGenreView.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:spotify/spotify.dart'; -import 'package:spotube/components/PageWindowTitleBar.dart'; -import 'package:spotube/components/PlaylistCard.dart'; +import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; +import 'package:spotube/components/Playlist/PlaylistCard.dart'; import 'package:spotube/provider/SpotifyDI.dart'; class PlaylistGenreView extends StatefulWidget { diff --git a/lib/components/PlaylistView.dart b/lib/components/Playlist/PlaylistView.dart similarity index 99% rename from lib/components/PlaylistView.dart rename to lib/components/Playlist/PlaylistView.dart index 3fdd2e33..1314ab15 100644 --- a/lib/components/PlaylistView.dart +++ b/lib/components/Playlist/PlaylistView.dart @@ -1,5 +1,5 @@ import 'package:cached_network_image/cached_network_image.dart'; -import 'package:spotube/components/PageWindowTitleBar.dart'; +import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/helpers/zero-pad-num-str.dart'; import 'package:spotube/provider/Playback.dart'; import 'package:flutter/material.dart'; diff --git a/lib/components/Settings.dart b/lib/components/Settings.dart index 976ed5bb..348a4ebc 100644 --- a/lib/components/Settings.dart +++ b/lib/components/Settings.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import 'package:spotube/components/PageWindowTitleBar.dart'; +import 'package:spotube/components/Shared/PageWindowTitleBar.dart'; import 'package:spotube/main.dart'; import 'package:spotube/models/LocalStorageKeys.dart'; import 'package:spotube/provider/Auth.dart'; diff --git a/lib/components/DownloadTrackButton.dart b/lib/components/Shared/DownloadTrackButton.dart similarity index 100% rename from lib/components/DownloadTrackButton.dart rename to lib/components/Shared/DownloadTrackButton.dart diff --git a/lib/components/PageWindowTitleBar.dart b/lib/components/Shared/PageWindowTitleBar.dart similarity index 100% rename from lib/components/PageWindowTitleBar.dart rename to lib/components/Shared/PageWindowTitleBar.dart