import 'package:fl_query/fl_query.dart'; import 'package:spotify/spotify.dart'; extension FetchAllTracks on InfiniteQuery, dynamic, int> { Future> fetchAllTracks({ required Future> Function() getAllTracks, }) async { if (pages.isNotEmpty && !hasNextPage) { return pages.expand((page) => page).toList(); } final tracks = await getAllTracks(); final pagedTracks = tracks.fold( >{}, (acc, element) { final index = acc.length; final groupIndex = index ~/ 20; final group = acc[groupIndex] ?? []; group.add(element); acc[groupIndex] = group; return acc; }, ); for (final group in pagedTracks.entries) { setPageData(group.key, group.value); } return tracks.toList(); } }