AgoraRtmChannel constructor

AgoraRtmChannel(
  1. int _clientIndex,
  2. String _channelId
)

Implementation

AgoraRtmChannel(this._clientIndex, this._channelId) {
  _eventSubscription =
      _addEventChannel().receiveBroadcastStream().listen((dynamic event) {
    final map = Map.from(event['data']);
    switch (event['event']) {
      case 'onMemberCountUpdated':
        int memberCount = map['memberCount'];
        onMemberCountUpdated?.call(memberCount);
        break;
      case 'onAttributesUpdated':
        List<RtmChannelAttribute> attributeList =
            List<Map>.from(map['attributeList'])
                .map((e) => RtmChannelAttribute.fromJson(e))
                .toList();
        onAttributesUpdated?.call(attributeList);
        break;
      case 'onMessageReceived':
        RtmMessage message = RtmMessage.fromJson(map['message']);
        RtmChannelMember fromMember =
            RtmChannelMember.fromJson(map['fromMember']);
        onMessageReceived?.call(message, fromMember);
        break;
      case 'onMemberJoined':
        RtmChannelMember member = RtmChannelMember.fromJson(map['member']);
        onMemberJoined?.call(member);
        break;
      case 'onMemberLeft':
        RtmChannelMember member = RtmChannelMember.fromJson(map['member']);
        onMemberLeft?.call(member);
        break;
    }
  }, onError: onError);
}