loadMore method

Future<void> loadMore()

Implementation

Future<void> loadMore() async {
  if (state.loading || state.loadingMore || state.endReached) {
    return;
  }

  await wrap(
    loading: false,
    callback: () async {
      emit(state.copyWith(loadingMore: true));

      final result = await config.filterApi.filter(
        NiceFilterModel(
          page: NiceFilterPageModel(
            number: state.values.length ~/ config.itemsPerPage,
            size: config.itemsPerPage,
          ),
          order: [state.order ?? config.defaultOrder],
          query: state.query,
          search: state.search,
        ),
      );

      emit(
        state.copyWith(
          result: NiceFilterResultModel(
            page: result.page,
            total: result.total,
            values: [...state.values, ...result.values],
          ),
          loadingMore: false,
          endReached: result.values.length < config.itemsPerPage,
        ),
      );
    },
  );
}