loadNext method Null safety

  1. @override
Future<List<GroupChannel>> loadNext()
override

Load next items asynchronously

Implementation

@override
Future<List<GroupChannel>> loadNext() async {
  if (loading) throw QueryInProgressError();
  if (!hasNext) return [];

  loading = true;

  final options = <ChannelQueryIncludeOption>[
    if (includeFrozenChannel) ChannelQueryIncludeOption.frozenChannel,
    if (includeEmptyChannel) ChannelQueryIncludeOption.emptyChannel,
    if (includeMemberList) ChannelQueryIncludeOption.memberList,
    if (includeMetaData) ChannelQueryIncludeOption.metaData,
    ChannelQueryIncludeOption.readReceipt,
    ChannelQueryIncludeOption.deliveryReceipt,
  ];

  final filter = GroupChannelFilter()
    ..customTypeStartswith = customTypeStartWithFilter
    ..customTypes = customTypesFilter
    ..nameContains = channelNameContainsFilter
    ..superMode = superChannelFilter
    ..publicMembershipFilter = membershipFilter
    ..metadataOrderKey = metaDataOrderKeyFilter
    ..metaDataKey = metaDataKeyFilter
    ..metaDataValues = metaDataValuesFilter
    ..metaDataValueStartWithFilter = metaDataValueStartWithFilter
    ..publicMode = PublicChannelFilter.public;

  final sdk = SendbirdSdk().getInternal();
  final res = await sdk.api.send<ChannelListQueryResponse<GroupChannel>>(
    PublicGroupChannelListRequest(
      order: order,
      token: token,
      limit: limit,
      channelUrls: channelUrls,
      options: options,
      filter: filter,
    ),
  );

  loading = false;
  token = res.next;
  hasNext = res.next != '';
  return res.channels;
}