TencentImPluginListener constructor
TencentImPluginListener(
- MethodChannel channel
Implementation
TencentImPluginListener(MethodChannel channel) {
// 绑定监听器
channel.setMethodCallHandler((methodCall) async {
// 解析参数
Map<String, dynamic> arguments = jsonDecode(methodCall.arguments);
switch (methodCall.method) {
case 'onListener':
// 获得原始类型和参数
TencentImListenerTypeEnum type = EnumUtil.nameOf(
TencentImListenerTypeEnum.values, arguments['type'])!;
var originalParams = arguments['params'];
// 封装回调类型和参数
var params = originalParams;
try {
switch (type) {
case TencentImListenerTypeEnum.NewMessage:
params = MessageEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.C2CReadReceipt:
params = ListUtil.generateOBJList<MessageReceiptEntity>(
originalParams);
break;
case TencentImListenerTypeEnum.MessageRevoked:
params = originalParams;
break;
case TencentImListenerTypeEnum.SyncServerStart:
break;
case TencentImListenerTypeEnum.SyncServerFinish:
break;
case TencentImListenerTypeEnum.SyncServerFailed:
break;
case TencentImListenerTypeEnum.NewConversation:
params = ListUtil.generateOBJList<ConversationEntity>(
originalParams);
break;
case TencentImListenerTypeEnum.ConversationChanged:
params = ListUtil.generateOBJList<ConversationEntity>(
originalParams);
break;
case TencentImListenerTypeEnum.FriendApplicationListAdded:
params = ListUtil.generateOBJList<FriendApplicationEntity>(
originalParams);
break;
case TencentImListenerTypeEnum.FriendApplicationListDeleted:
break;
case TencentImListenerTypeEnum.FriendApplicationListRead:
break;
case TencentImListenerTypeEnum.FriendListAdded:
params =
ListUtil.generateOBJList<FriendInfoEntity>(originalParams);
break;
case TencentImListenerTypeEnum.FriendListDeleted:
break;
case TencentImListenerTypeEnum.BlackListAdd:
params =
ListUtil.generateOBJList<FriendInfoEntity>(originalParams);
break;
case TencentImListenerTypeEnum.BlackListDeleted:
break;
case TencentImListenerTypeEnum.FriendInfoChanged:
params =
ListUtil.generateOBJList<FriendInfoEntity>(originalParams);
break;
case TencentImListenerTypeEnum.MemberEnter:
params = GroupMemberEnterEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.MemberLeave:
params = GroupMemberLeaveEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.MemberInvited:
params =
GroupMemberInvitedOrKickedEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.MemberKicked:
params =
GroupMemberInvitedOrKickedEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.MemberInfoChanged:
params = GroupMemberChangedEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.GroupCreated:
break;
case TencentImListenerTypeEnum.GroupDismissed:
params =
GroupDismissedOrRecycledEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.GroupRecycled:
params =
GroupDismissedOrRecycledEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.GroupInfoChanged:
params = GroupChangedEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.ReceiveJoinApplication:
params =
GroupReceiveJoinApplicationEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.ApplicationProcessed:
params =
GroupApplicationProcessedEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.GrantAdministrator:
params = GroupAdministratorOpEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.RevokeAdministrator:
params = GroupAdministratorOpEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.QuitFromGroup:
break;
case TencentImListenerTypeEnum.ReceiveRESTCustomData:
params = GroupReceiveRESTEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.GroupAttributeChanged:
params = GroupAttributeChangedEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.Connecting:
break;
case TencentImListenerTypeEnum.ConnectSuccess:
break;
case TencentImListenerTypeEnum.ConnectFailed:
params = ErrorEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.KickedOffline:
break;
case TencentImListenerTypeEnum.SelfInfoUpdated:
params = UserEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.UserSigExpired:
break;
case TencentImListenerTypeEnum.ReceiveNewInvitation:
params = SignalingCommonEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.InviteeAccepted:
params = SignalingCommonEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.InviteeRejected:
params = SignalingCommonEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.InvitationCancelled:
params = SignalingCommonEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.InvitationTimeout:
params = SignalingCommonEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.DownloadProgress:
params = DownloadProgressEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.MessageSendSucc:
params = MessageEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.MessageSendFail:
params = MessageSendFailEntity.fromJson(originalParams);
break;
case TencentImListenerTypeEnum.MessageSendProgress:
params = MessageSendProgressEntity.fromJson(originalParams);
break;
}
} catch (err) {
_logger.e(err,
"$type 监听器错误:$err,请联系开发者进行处理!Github Issues: https://github.com/JiangJuHong/FlutterTencentImPlugin/issues");
}
// 回调触发
for (var item in listeners) {
item(type, params);
}
break;
default:
throw MissingPluginException();
}
});
}