diff --git a/.idea/misc.xml b/.idea/misc.xml
index f8c5fc9..3d7fadd 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,4 +3,5 @@
+
\ No newline at end of file
diff --git a/lib/flutter_openim_sdk.dart b/lib/flutter_openim_sdk.dart
index acaf84e..88c381f 100644
--- a/lib/flutter_openim_sdk.dart
+++ b/lib/flutter_openim_sdk.dart
@@ -10,6 +10,12 @@ export 'src/listener/advanced_msg_listener.dart';
export 'src/listener/conversation_listener.dart';
export 'src/listener/friendship_listener.dart';
export 'src/listener/group_listener.dart';
+export 'src/listener/impl/advanced_msg_listener.dart';
+export 'src/listener/impl/conversation_listener.dart';
+export 'src/listener/impl/friendship_listener.dart';
+export 'src/listener/impl/group_listener.dart';
+export 'src/listener/impl/init_sdk_listener.dart';
+export 'src/listener/impl/msg_send_progress_listener.dart';
export 'src/listener/init_sdk_listener.dart';
export 'src/listener/msg_send_progress_listener.dart';
export 'src/manager/im_conversation_manager.dart';
diff --git a/lib/src/listener/impl/advanced_msg_listener.dart b/lib/src/listener/impl/advanced_msg_listener.dart
new file mode 100644
index 0000000..5ab436a
--- /dev/null
+++ b/lib/src/listener/impl/advanced_msg_listener.dart
@@ -0,0 +1,28 @@
+import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
+
+class OnAdvancedMsgListener extends AdvancedMsgListener {
+ Function(List list)? recvC2CReadReceipt;
+ Function(String msgId)? recvMessageRevoked;
+ Function(Message msg)? recvNewMessage;
+
+ OnAdvancedMsgListener({
+ this.recvC2CReadReceipt,
+ this.recvMessageRevoked,
+ this.recvNewMessage,
+ });
+
+ @override
+ void onRecvC2CReadReceipt(List list) {
+ if (null != recvC2CReadReceipt) recvC2CReadReceipt!(list);
+ }
+
+ @override
+ void onRecvMessageRevoked(String msgId) {
+ if (null != recvMessageRevoked) recvMessageRevoked!(msgId);
+ }
+
+ @override
+ void onRecvNewMessage(Message msg) {
+ if (null != recvNewMessage) recvNewMessage!(msg);
+ }
+}
diff --git a/lib/src/listener/impl/conversation_listener.dart b/lib/src/listener/impl/conversation_listener.dart
new file mode 100644
index 0000000..db550e0
--- /dev/null
+++ b/lib/src/listener/impl/conversation_listener.dart
@@ -0,0 +1,49 @@
+import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
+
+class OnConversationListener implements ConversationListener {
+ Function(List list)? conversationChanged;
+ Function(List list)? newConversation;
+ Function(int count)? totalUnreadMsgCountChanged;
+ Function()? syncServerFailed;
+ Function()? syncServerFinish;
+ Function()? syncServerStart;
+
+ OnConversationListener({
+ this.conversationChanged,
+ this.newConversation,
+ this.totalUnreadMsgCountChanged,
+ this.syncServerFailed,
+ this.syncServerFinish,
+ this.syncServerStart,
+ });
+
+ @override
+ void onConversationChanged(List list) {
+ if (conversationChanged != null) conversationChanged!(list);
+ }
+
+ @override
+ void onNewConversation(List list) {
+ if (newConversation != null) newConversation!(list);
+ }
+
+ @override
+ void onSyncServerFailed() {
+ if (syncServerFailed != null) syncServerFailed!();
+ }
+
+ @override
+ void onSyncServerFinish() {
+ if (syncServerFinish != null) syncServerFinish!();
+ }
+
+ @override
+ void onSyncServerStart() {
+ if (syncServerStart != null) syncServerStart!();
+ }
+
+ @override
+ void onTotalUnreadMessageCountChanged(int i) {
+ if (totalUnreadMsgCountChanged != null) totalUnreadMsgCountChanged!(i);
+ }
+}
diff --git a/lib/src/listener/impl/friendship_listener.dart b/lib/src/listener/impl/friendship_listener.dart
new file mode 100644
index 0000000..53315ed
--- /dev/null
+++ b/lib/src/listener/impl/friendship_listener.dart
@@ -0,0 +1,70 @@
+import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
+
+class OnFriendshipListener implements FriendshipListener {
+ Function(UserInfo u)? blackListAdd;
+ Function(UserInfo u)? blackListDeleted;
+ Function(UserInfo u)? friendApplicationListAccept;
+ Function(UserInfo u)? friendApplicationListAdded;
+ Function(UserInfo u)? friendApplicationListDeleted;
+ Function(UserInfo u)? friendApplicationListReject;
+ Function(UserInfo u)? friendInfoChanged;
+ Function(UserInfo u)? friendListAdded;
+ Function(UserInfo u)? friendListDeleted;
+
+ OnFriendshipListener({
+ this.blackListAdd,
+ this.blackListDeleted,
+ this.friendApplicationListAccept,
+ this.friendApplicationListAdded,
+ this.friendApplicationListDeleted,
+ this.friendApplicationListReject,
+ this.friendInfoChanged,
+ this.friendListAdded,
+ this.friendListDeleted,
+ });
+
+ @override
+ void onBlackListAdd(UserInfo u) {
+ if (null != blackListAdd) blackListAdd!(u);
+ }
+
+ @override
+ void onBlackListDeleted(UserInfo u) {
+ if (null != blackListDeleted) blackListDeleted!(u);
+ }
+
+ @override
+ void onFriendApplicationListAccept(UserInfo u) {
+ if (null != friendApplicationListAccept) friendApplicationListAccept!(u);
+ }
+
+ @override
+ void onFriendApplicationListAdded(UserInfo u) {
+ if (null != friendApplicationListAdded) friendApplicationListAdded!(u);
+ }
+
+ @override
+ void onFriendApplicationListDeleted(UserInfo u) {
+ if (null != friendApplicationListDeleted) friendApplicationListDeleted!(u);
+ }
+
+ @override
+ void onFriendApplicationListReject(UserInfo u) {
+ if (null != friendApplicationListReject) friendApplicationListReject!(u);
+ }
+
+ @override
+ void onFriendInfoChanged(UserInfo u) {
+ if (null != friendInfoChanged) friendInfoChanged!(u);
+ }
+
+ @override
+ void onFriendListAdded(UserInfo u) {
+ if (null != friendListAdded) friendListAdded!(u);
+ }
+
+ @override
+ void onFriendListDeleted(UserInfo u) {
+ if (null != friendListDeleted) friendListDeleted!(u);
+ }
+}
diff --git a/lib/src/listener/impl/group_listener.dart b/lib/src/listener/impl/group_listener.dart
new file mode 100644
index 0000000..24323ed
--- /dev/null
+++ b/lib/src/listener/impl/group_listener.dart
@@ -0,0 +1,75 @@
+import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
+
+class OnGroupListener implements GroupListener {
+ Function(String groupId, GroupMembersInfo opUser, int agreeOrReject,
+ String opReason)? applicationProcessed;
+ Function(String groupId)? groupCreated;
+ Function(String groupId, GroupInfo info)? groupInfoChanged;
+ Function(String groupId, List list)? memberEnter;
+ Function(
+ String groupId, GroupMembersInfo opUser, List list)?
+ memberInvited;
+ Function(
+ String groupId, GroupMembersInfo opUser, List list)?
+ memberKicked;
+ Function(String groupId, GroupMembersInfo info)? memberLeave;
+ Function(String groupId, GroupMembersInfo info, String opReason)?
+ receiveJoinApplication;
+
+ OnGroupListener({
+ this.applicationProcessed,
+ this.groupCreated,
+ this.groupInfoChanged,
+ this.memberEnter,
+ this.memberInvited,
+ this.memberKicked,
+ this.memberLeave,
+ this.receiveJoinApplication,
+ });
+
+ @override
+ void onApplicationProcessed(String groupId, GroupMembersInfo opUser,
+ int agreeOrReject, String opReason) {
+ if (null != applicationProcessed)
+ applicationProcessed!(groupId, opUser, agreeOrReject, opReason);
+ }
+
+ @override
+ void onGroupCreated(String groupId) {
+ if (null != groupCreated) groupCreated!(groupId);
+ }
+
+ @override
+ void onGroupInfoChanged(String groupId, GroupInfo info) {
+ if (null != groupInfoChanged) groupInfoChanged!(groupId, info);
+ }
+
+ @override
+ void onMemberEnter(String groupId, List list) {
+ if (null != memberEnter) memberEnter!(groupId, list);
+ }
+
+ @override
+ void onMemberInvited(
+ String groupId, GroupMembersInfo opUser, List list) {
+ if (null != memberInvited) memberInvited!(groupId, opUser, list);
+ }
+
+ @override
+ void onMemberKicked(
+ String groupId, GroupMembersInfo opUser, List list) {
+ if (null != memberKicked) memberKicked!(groupId, opUser, list);
+ }
+
+ @override
+ void onMemberLeave(String groupId, GroupMembersInfo info) {
+ if (null != memberLeave) memberLeave!(groupId, info);
+ }
+
+ @override
+ void onReceiveJoinApplication(
+ String groupId, GroupMembersInfo info, String opReason) {
+ if (null != receiveJoinApplication)
+ receiveJoinApplication!(groupId, info, opReason);
+ }
+}
diff --git a/lib/src/listener/impl/init_sdk_listener.dart b/lib/src/listener/impl/init_sdk_listener.dart
new file mode 100644
index 0000000..2cfde7b
--- /dev/null
+++ b/lib/src/listener/impl/init_sdk_listener.dart
@@ -0,0 +1,49 @@
+import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
+
+class OnInitSDKListener implements InitSDKListener {
+ Function(int? code, String? errorMsg)? connectFailed;
+ Function()? connectSuccess;
+ Function()? connecting;
+ Function()? kickedOffline;
+ Function(UserInfo info)? selfInfoUpdated;
+ Function()? userSigExpired;
+
+ OnInitSDKListener({
+ this.connectFailed,
+ this.connectSuccess,
+ this.connecting,
+ this.kickedOffline,
+ this.selfInfoUpdated,
+ this.userSigExpired,
+ });
+
+ @override
+ void onConnectFailed(int? code, String? errorMsg) {
+ if (null != connectFailed) connectFailed!(code, errorMsg);
+ }
+
+ @override
+ void onConnectSuccess() {
+ if (null != connectSuccess) connectSuccess!();
+ }
+
+ @override
+ void onConnecting() {
+ if (null != connecting) connecting!.call();
+ }
+
+ @override
+ void onKickedOffline() {
+ if (null != kickedOffline) kickedOffline!();
+ }
+
+ @override
+ void onSelfInfoUpdated(UserInfo info) {
+ if (null != selfInfoUpdated) selfInfoUpdated!(info);
+ }
+
+ @override
+ void onUserSigExpired() {
+ if (null != userSigExpired) userSigExpired!();
+ }
+}
diff --git a/lib/src/listener/impl/msg_send_progress_listener.dart b/lib/src/listener/impl/msg_send_progress_listener.dart
new file mode 100644
index 0000000..20f6ef4
--- /dev/null
+++ b/lib/src/listener/impl/msg_send_progress_listener.dart
@@ -0,0 +1,11 @@
+import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
+
+class OnMsgSendProgressListener implements MsgSendProgressListener {
+ Function(String msgID, int progress)? progressCallback;
+
+ OnMsgSendProgressListener({this.progressCallback});
+
+ void onProgress(String msgID, int progress) {
+ if (null != progressCallback) progressCallback!(msgID, progress);
+ }
+}