mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 07:55:18 +00:00
chore: add not found for empty lists
This commit is contained in:
parent
24a2294512
commit
581b241f99
@ -9,6 +9,7 @@ import 'package:spotube/collections/fake.dart';
|
|||||||
|
|
||||||
import 'package:spotube/collections/spotube_icons.dart';
|
import 'package:spotube/collections/spotube_icons.dart';
|
||||||
import 'package:spotube/components/album/album_card.dart';
|
import 'package:spotube/components/album/album_card.dart';
|
||||||
|
import 'package:spotube/components/shared/fallbacks/not_found.dart';
|
||||||
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
||||||
import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart';
|
import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart';
|
||||||
import 'package:spotube/components/shared/waypoint.dart';
|
import 'package:spotube/components/shared/waypoint.dart';
|
||||||
@ -84,30 +85,37 @@ class UserAlbums extends HookConsumerWidget {
|
|||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
controller: controller,
|
controller: controller,
|
||||||
child: Skeletonizer(
|
child: Skeletonizer(
|
||||||
enabled: albums.isEmpty,
|
enabled: albums.isEmpty && albumsQuery.isLoadingNextPage,
|
||||||
child: Wrap(
|
child: Center(
|
||||||
runSpacing: 20,
|
child: Wrap(
|
||||||
alignment: WrapAlignment.center,
|
runSpacing: 20,
|
||||||
runAlignment: WrapAlignment.center,
|
alignment: WrapAlignment.center,
|
||||||
crossAxisAlignment: WrapCrossAlignment.center,
|
runAlignment: WrapAlignment.center,
|
||||||
children: [
|
crossAxisAlignment: WrapCrossAlignment.center,
|
||||||
if (albums.isEmpty)
|
children: [
|
||||||
...List.generate(
|
if (albums.isEmpty && albumsQuery.isLoadingNextPage)
|
||||||
10,
|
...List.generate(
|
||||||
(index) => AlbumCard(FakeData.album),
|
10,
|
||||||
),
|
(index) => AlbumCard(FakeData.album),
|
||||||
for (final album in albums)
|
)
|
||||||
AlbumCard(
|
else if (albums.isEmpty)
|
||||||
TypeConversionUtils.simpleAlbum_X_Album(album),
|
const Row(
|
||||||
),
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
if (albums.isNotEmpty && albumsQuery.hasNextPage)
|
children: [NotFound()],
|
||||||
Waypoint(
|
),
|
||||||
controller: controller,
|
for (final album in albums)
|
||||||
isGrid: true,
|
AlbumCard(
|
||||||
onTouchEdge: albumsQuery.fetchNext,
|
TypeConversionUtils.simpleAlbum_X_Album(album),
|
||||||
child: AlbumCard(FakeData.album),
|
),
|
||||||
)
|
if (albums.isNotEmpty && albumsQuery.hasNextPage)
|
||||||
],
|
Waypoint(
|
||||||
|
controller: controller,
|
||||||
|
isGrid: true,
|
||||||
|
onTouchEdge: albumsQuery.fetchNext,
|
||||||
|
child: AlbumCard(FakeData.album),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -9,6 +9,7 @@ import 'package:spotube/collections/fake.dart';
|
|||||||
import 'package:spotube/collections/spotube_icons.dart';
|
import 'package:spotube/collections/spotube_icons.dart';
|
||||||
import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart';
|
import 'package:spotube/components/shared/fallbacks/anonymous_fallback.dart';
|
||||||
import 'package:spotube/components/artist/artist_card.dart';
|
import 'package:spotube/components/artist/artist_card.dart';
|
||||||
|
import 'package:spotube/components/shared/fallbacks/not_found.dart';
|
||||||
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
||||||
import 'package:spotube/extensions/context.dart';
|
import 'package:spotube/extensions/context.dart';
|
||||||
import 'package:spotube/provider/authentication_provider.dart';
|
import 'package:spotube/provider/authentication_provider.dart';
|
||||||
@ -97,10 +98,20 @@ class UserArtists extends HookConsumerWidget {
|
|||||||
children: artistQuery.isLoading
|
children: artistQuery.isLoading
|
||||||
? List.generate(
|
? List.generate(
|
||||||
10, (index) => ArtistCard(FakeData.artist))
|
10, (index) => ArtistCard(FakeData.artist))
|
||||||
: filteredArtists
|
: filteredArtists.isEmpty
|
||||||
.mapIndexed(
|
? [
|
||||||
(index, artist) => ArtistCard(artist))
|
const Row(
|
||||||
.toList(),
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
NotFound(),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
]
|
||||||
|
: filteredArtists
|
||||||
|
.mapIndexed((index, artist) =>
|
||||||
|
ArtistCard(artist))
|
||||||
|
.toList(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -17,6 +17,7 @@ import 'package:spotify/spotify.dart';
|
|||||||
import 'package:spotube/collections/fake.dart';
|
import 'package:spotube/collections/fake.dart';
|
||||||
import 'package:spotube/collections/spotube_icons.dart';
|
import 'package:spotube/collections/spotube_icons.dart';
|
||||||
import 'package:spotube/components/shared/expandable_search/expandable_search.dart';
|
import 'package:spotube/components/shared/expandable_search/expandable_search.dart';
|
||||||
|
import 'package:spotube/components/shared/fallbacks/not_found.dart';
|
||||||
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
import 'package:spotube/components/shared/inter_scrollbar/inter_scrollbar.dart';
|
||||||
import 'package:spotube/components/shared/sort_tracks_dropdown.dart';
|
import 'package:spotube/components/shared/sort_tracks_dropdown.dart';
|
||||||
import 'package:spotube/components/shared/track_tile/track_tile.dart';
|
import 'package:spotube/components/shared/track_tile/track_tile.dart';
|
||||||
@ -255,6 +256,15 @@ class UserLocalTracks extends HookConsumerWidget {
|
|||||||
.toList();
|
.toList();
|
||||||
}, [searchController.text, sortedTracks]);
|
}, [searchController.text, sortedTracks]);
|
||||||
|
|
||||||
|
if (!trackSnapshot.isLoading && filteredTracks.isEmpty) {
|
||||||
|
return const Expanded(
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
children: [NotFound()],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return Expanded(
|
return Expanded(
|
||||||
child: RefreshIndicator(
|
child: RefreshIndicator(
|
||||||
onRefresh: () async {
|
onRefresh: () async {
|
||||||
|
@ -8,6 +8,7 @@ import 'package:skeletonizer/skeletonizer.dart';
|
|||||||
import 'package:spotify/spotify.dart';
|
import 'package:spotify/spotify.dart';
|
||||||
import 'package:spotube/collections/fake.dart';
|
import 'package:spotube/collections/fake.dart';
|
||||||
import 'package:spotube/components/shared/expandable_search/expandable_search.dart';
|
import 'package:spotube/components/shared/expandable_search/expandable_search.dart';
|
||||||
|
import 'package:spotube/components/shared/fallbacks/not_found.dart';
|
||||||
import 'package:spotube/components/shared/track_tile/track_tile.dart';
|
import 'package:spotube/components/shared/track_tile/track_tile.dart';
|
||||||
import 'package:spotube/components/shared/tracks_view/sections/body/track_view_body_headers.dart';
|
import 'package:spotube/components/shared/tracks_view/sections/body/track_view_body_headers.dart';
|
||||||
import 'package:spotube/components/shared/tracks_view/sections/body/use_is_user_playlist.dart';
|
import 'package:spotube/components/shared/tracks_view/sections/body/use_is_user_playlist.dart';
|
||||||
@ -92,14 +93,9 @@ class TrackViewBodySection extends HookConsumerWidget {
|
|||||||
index: 0,
|
index: 0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
emptyBuilder: (context) => Skeletonizer(
|
emptyBuilder: (context) => const Row(
|
||||||
enabled: true,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
child: Column(
|
children: [NotFound()],
|
||||||
children: List.generate(
|
|
||||||
10,
|
|
||||||
(index) => TrackTile(track: FakeData.track, index: index),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
final track = tracks[index];
|
final track = tracks[index];
|
||||||
|
@ -52,6 +52,7 @@ ThemeData theme(Color seed, Brightness brightness, bool isAmoled) {
|
|||||||
),
|
),
|
||||||
sliderTheme: SliderThemeData(overlayShape: SliderComponentShape.noOverlay),
|
sliderTheme: SliderThemeData(overlayShape: SliderComponentShape.noOverlay),
|
||||||
searchBarTheme: SearchBarThemeData(
|
searchBarTheme: SearchBarThemeData(
|
||||||
|
textStyle: const MaterialStatePropertyAll(TextStyle(fontSize: 15)),
|
||||||
constraints: const BoxConstraints(maxWidth: double.infinity),
|
constraints: const BoxConstraints(maxWidth: double.infinity),
|
||||||
padding: const MaterialStatePropertyAll(EdgeInsets.all(8)),
|
padding: const MaterialStatePropertyAll(EdgeInsets.all(8)),
|
||||||
backgroundColor: MaterialStatePropertyAll(
|
backgroundColor: MaterialStatePropertyAll(
|
||||||
|
Loading…
Reference in New Issue
Block a user