chore: fix where loading images not working

This commit is contained in:
Kingkor Roy Tirtho 2025-01-28 21:07:02 +06:00
parent 4c3718467d
commit 5c6cb770a8
4 changed files with 39 additions and 50 deletions

View File

@ -34,12 +34,24 @@ class PresentationStateNotifier
extends AutoDisposeFamilyNotifier<PresentationState, Object> {
@override
PresentationState build(collection) {
final isPlaylist = arg is PlaylistSimple;
if ((isPlaylist && (arg as PlaylistSimple).id != "user-liked-tracks") ||
arg is AlbumSimple) {
if (arg case PlaylistSimple() || AlbumSimple()) {
if (isSavedTrackPlaylist) {
ref.listen(
isPlaylist
likedTracksProvider,
(previous, next) {
next.whenData((value) {
state = state.copyWith(
presentationTracks: ServiceUtils.sortTracks(
value,
state.sortBy,
),
);
});
},
);
} else {
ref.listen(
arg is PlaylistSimple
? playlistTracksProvider((arg as PlaylistSimple).id!)
: albumTracksProvider((arg as AlbumSimple)),
(previous, next) {
@ -54,6 +66,7 @@ class PresentationStateNotifier
},
);
}
}
return PresentationState(
selectedTracks: [],
@ -62,6 +75,10 @@ class PresentationStateNotifier
);
}
bool get isSavedTrackPlaylist =>
arg is PlaylistSimple &&
(arg as PlaylistSimple).id == "user-liked-tracks";
List<Track> get tracks {
assert(
arg is PlaylistSimple || arg is AlbumSimple,
@ -69,8 +86,7 @@ class PresentationStateNotifier
);
final isPlaylist = arg is PlaylistSimple;
final isSavedTrackPlaylist =
isPlaylist && (arg as PlaylistSimple).id == "user-liked-tracks";
final tracks = switch ((isPlaylist, isSavedTrackPlaylist)) {
(true, true) => ref.read(likedTracksProvider).asData?.value,
(true, false) => ref

View File

@ -1,5 +1,3 @@
import 'dart:async';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
@ -35,29 +33,6 @@ class HomeGenresSection extends HookConsumerWidget {
[categoriesQuery.asData?.value],
);
final controller = useMemoized(() => CarouselController(), []);
final interactedRef = useRef(false);
useEffect(() {
int times = 0;
final timer = Timer.periodic(
const Duration(seconds: 5),
(timer) {
if (times > 5 || interactedRef.value) {
timer.cancel();
return;
}
controller.animateNext(
const Duration(seconds: 2),
);
times++;
},
);
return () {
timer.cancel();
controller.dispose();
};
}, []);
return SliverList.list(
children: [
@ -123,7 +98,6 @@ class HomeGenresSection extends HookConsumerWidget {
controller.animatePrevious(
const Duration(seconds: 1),
);
interactedRef.value = true;
},
),
),
@ -144,7 +118,6 @@ class HomeGenresSection extends HookConsumerWidget {
controller.animateNext(
const Duration(seconds: 1),
);
interactedRef.value = true;
},
),
),

View File

@ -82,7 +82,7 @@ class UserArtistsPage extends HookConsumerWidget {
),
),
const SliverGap(10),
if (filteredArtists.isNotEmpty)
if (filteredArtists.isNotEmpty || artistQuery.isLoading)
SliverLayoutBuilder(builder: (context, constrains) {
return SliverGrid.builder(
itemCount: filteredArtists.length + 1,

View File

@ -26,7 +26,7 @@ class LikedPlaylistPage extends HookConsumerWidget {
image: "assets/liked-tracks.jpg",
pagination: PaginationProps(
hasNextPage: false,
isLoading: false,
isLoading: likedTracks.isLoading,
onFetchMore: () {},
onFetchAll: () async {
return tracks.toList();