/ SDKs / Flutter
SDKs
Chat SDKs Flutter v4
Chat SDKs Flutter
Chat SDKs
Flutter
Version 4

Group channel collection

Copy link

A GroupChannelCollection instance allows you to swiftly create a channel list view that remains up to date on all channel-related events. This page explains how to draw a view using the collection.


Create a collection

Copy link

First, create a GroupChannelListQuery instance. This determines which channel to include in the channel list and how to list channels in order.

Once the collection is created, you should call loadMore().

// First, create a GroupChannelListQuery instance.
final query = GroupChannelListQuery()
  ..order = GroupChannelListQueryOrder.chronological;
  // Acceptable values are chronological, latestLastMessage(default), channelNameAlphabetical and metadataValueAlphabetical.
  // You can add other params setters.

// Second, create MyGroupChannelCollectionHandler instance.
final handler = MyGroupChannelCollectionHandler();
class MyGroupChannelCollectionHandler extends GroupChannelCollectionHandler {
  @override
  void onChannelsAdded(ChannelContext context, List<GroupChannel> channels) {
    // Update widgets with collection.channelList.
  }
  @override
  void onChannelsUpdated(ChannelContext context, List<GroupChannel> channels) {
    // Update widgets with collection.channelList.
  }
  @override
  void onChannelsDeleted(ChannelContext context, List<String> deletedChannelUrls) {
    // Update widgets with collection.channelList.
  }
}

// Create a GroupChannelCollection instance.
final collection = GroupChannelCollection(query: query, handler: handler);

Pagination

Copy link

A GroupChannelCollection instance retrieves more channels to display in the view through the loadMore() method.

Whenever a scroll reaches the bottom of the channel list view, the loadMore() method is called and hasMore first checks if there are more channels to load. If so, loadMore() fetches them.

The loadMore() method should also be called after you've created a GroupChannelCollection instance.

try {
  // Check whether there are more channels to load before calling loadMore().
  if (collection.hasMore) {
    await collection.loadMore();
  }
} catch (e) {
  // Handle error.
}

Channel events

Copy link

Use the handler property in GroupChannelCollection constructor to determine how the client app reacts to channel-related events.

This is called whenever a new channel is created as a real-time event when the client app is back online.

The following table shows possible cases where each event handler can be called.

EventCalled when

onChannelsAdded()

- A new group channel is created as a real-time event.
- New group channels are fetched through changelog sync.

onChannelsUpdated()

- The channel information that is included in the user's current chat view is updated as a real-time event.
- Updated channel information is fetched through changelog sync.

onChannelsDeleted()

- A group channel is deleted as a real-time event.
- A channel deletion event is fetched through changelog sync.


Dispose of the collection

Copy link

The dispose() method should be called when you need to clear the current channel list view and unsubscribe channel events.

collection.dispose();