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

View File

@ -1,5 +1,3 @@
import 'dart:async';
import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
@ -35,29 +33,6 @@ class HomeGenresSection extends HookConsumerWidget {
[categoriesQuery.asData?.value], [categoriesQuery.asData?.value],
); );
final controller = useMemoized(() => CarouselController(), []); 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( return SliverList.list(
children: [ children: [
@ -123,7 +98,6 @@ class HomeGenresSection extends HookConsumerWidget {
controller.animatePrevious( controller.animatePrevious(
const Duration(seconds: 1), const Duration(seconds: 1),
); );
interactedRef.value = true;
}, },
), ),
), ),
@ -144,7 +118,6 @@ class HomeGenresSection extends HookConsumerWidget {
controller.animateNext( controller.animateNext(
const Duration(seconds: 1), const Duration(seconds: 1),
); );
interactedRef.value = true;
}, },
), ),
), ),

View File

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

View File

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