Pin a channel
Pin channels to the top of the channel list using the pin / unpin methods on BaseChannel instances. The pinned state is reflected in the isPinned property.
Pin a channel
Pin a channel to the top of the list. The pinned state syncs to the server and persists across devices. This is a BaseChannel instance method.
Method
Dart
Future\<int\> pin(PinParams params, ErrorHandler handler);
Parameters
| Parameter | Type | Description |
|---|---|---|
| params | PinParams | Pin parameters |
| handler | ErrorHandler | Result callback |
PinParams properties
| Property | Type | Description |
|---|---|---|
updateOperationTime | bool | Whether to update the channel's operation timestamp |
Code example
Dart
BaseChannel channel = ...;
int? ret = await channel.pin(
PinParams(updateOperationTime: true),
(NCError? error) {
if (error == null || error.isSuccess) {
print('Channel pinned');
}
},
);
Unpin a channel
Method
Dart
Future\<int\> unpin(ErrorHandler handler);
Code example
Dart
int? ret = await channel.unpin((NCError? error) {
if (error == null || error.isSuccess) {
print('Channel unpinned');
}
});
Get pinned channels
Method
Dart
static Future\<int\> getPinnedChannels(List\<ChannelType\> types, OprationHandler\<List\<BaseChannel\\>> handler);
Code example
Dart
final types = [ChannelType.direct, ChannelType.group];
int? ret = await BaseChannel.getPinnedChannels(types, (List\<BaseChannel\>? channels, NCError? error) {
if (error == null || error.isSuccess) {
print('Pinned channels: ${channels?.length}');
}
});
Listen for pin state sync
The SDK syncs pin state changes across devices. Register a ChannelHandler to receive real-time notifications.
Register listener
Dart
NCEngine.addChannelHandler(
'my_pin_listener',
ChannelHandler(
onChannelPinnedSync: (ChannelIdentifier channel, bool? top) {
print('Channel ${channel.channelId} pin state changed: $top');
},
),
);
Remove listener
Dart
NCEngine.removeChannelHandler('my_pin_listener');