loadMore method
Load more data from the server using nextPageKey
.
Implementation
@override
Future<void> loadMore(int nextPageKey) async {
final previousValue = value.asSuccess;
try {
final memberResponse = await channel.queryMembers(
filter: _activeFilter,
sort: _activeSort,
pagination: PaginationParams(limit: limit, offset: nextPageKey),
);
final members = memberResponse.members;
final previousItems = previousValue.items;
final newItems = previousItems + members;
final nextKey = members.length < limit ? null : newItems.length;
value = PagedValue(
items: newItems.where((it) => it.user != null).toList(),
nextPageKey: nextKey,
);
} on StreamChatError catch (error) {
value = previousValue.copyWith(error: error);
} catch (error) {
final chatError = StreamChatError(error.toString());
value = previousValue.copyWith(error: chatError);
}
}