fetchNextPage method
Implementation
Future<void> fetchNextPage() async {
if (_isLoadingMore || !_hasMore || state.isLoading) return;
_isLoadingMore = true;
final repository = ref.read(sceneRepositoryProvider);
final query = ref.read(sceneSearchQueryProvider);
final sortConfig = ref.read(sceneSortProvider);
final filter = ref.read(sceneFilterStateProvider);
final organizedOnly = ref.read(sceneOrganizedOnlyProvider);
try {
final nextPage = _currentPage + 1;
final nextScenes = await repository.findScenes(
page: nextPage,
perPage: _perPage,
filter: query.isEmpty ? null : query,
sort: sortConfig.sort,
descending: sortConfig.descending,
organized: organizedOnly ? true : null,
sceneFilter: filter,
);
if (nextScenes.isEmpty) {
_hasMore = false;
} else {
_currentPage = nextPage;
state = AsyncData([...state.value ?? [], ...nextScenes]);
}
} catch (e) {
// In a real app, you might want to show a snackbar for error during pagination
} finally {
_isLoadingMore = false;
}
}