mirror of
https://github.com/WuKongIM/WuKongIMFlutterSDK
synced 2025-05-30 15:37:25 +00:00
fix:Modify the import SDK method
This commit is contained in:
parent
33880c1b47
commit
53e7be54fc
@ -7,9 +7,11 @@
|
|||||||
## 快速入门
|
## 快速入门
|
||||||
|
|
||||||
#### 安装
|
#### 安装
|
||||||
|
[](https://pub.dartlang.org/packages/wukongimfluttersdk)
|
||||||
|
|
||||||
```
|
```
|
||||||
dependencies:
|
dependencies:
|
||||||
wukongimfluttersdk: ^1.4.1
|
wukongimfluttersdk: ^version // 版本号看上面
|
||||||
```
|
```
|
||||||
#### 引入
|
#### 引入
|
||||||
```dart
|
```dart
|
||||||
@ -84,4 +86,7 @@ WKIM.shared.cmdManager.addOnCmdListener('chat', (cmdMsg) {
|
|||||||
// todo 按需处理cmd消息
|
// todo 按需处理cmd消息
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
- 包含`key`的事件监听均有移除监听的方法,为了避免重复收到事件回掉,在退出或销毁页面时通过传入的`key`移除事件
|
- 包含`key`的事件监听均有移除监听的方法,为了避免重复收到事件回掉,在退出或销毁页面时通过传入的`key`移除事件
|
||||||
|
|
||||||
|
### 许可证
|
||||||
|
悟空IM 使用 Apache 2.0 许可证。有关详情,请参阅 LICENSE 文件。
|
@ -45,11 +45,18 @@ class ChatListDataState extends State<ChatList> {
|
|||||||
final ScrollController _scrollController = ScrollController();
|
final ScrollController _scrollController = ScrollController();
|
||||||
|
|
||||||
ChatListDataState(this.channelID, this.channelType) {
|
ChatListDataState(this.channelID, this.channelType) {
|
||||||
if (channelType == WKChannelType.group) {
|
WKIM.shared.channelManager
|
||||||
title = '群聊【$channelID】';
|
.getChannel(channelID, channelType)
|
||||||
} else {
|
.then((channel) {
|
||||||
title = '单聊【$channelID】';
|
print(channel?.localExtra);
|
||||||
}
|
print(channel?.remoteExtraMap);
|
||||||
|
WKIM.shared.channelManager.fetchChannelInfo(channelID, channelType);
|
||||||
|
if (channelType == WKChannelType.group) {
|
||||||
|
title = '${channel?.channelName}';
|
||||||
|
} else {
|
||||||
|
title = '${channel?.channelName}';
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
List<UIMsg> msgList = [];
|
List<UIMsg> msgList = [];
|
||||||
String title = '';
|
String title = '';
|
||||||
@ -151,7 +158,6 @@ class ChatListDataState extends State<ChatList> {
|
|||||||
oldestOrderSeq, oldestOrderSeq == 0, pullMode, 10, 0, (list) {
|
oldestOrderSeq, oldestOrderSeq == 0, pullMode, 10, 0, (list) {
|
||||||
List<UIMsg> uiList = [];
|
List<UIMsg> uiList = [];
|
||||||
for (int i = 0; i < list.length; i++) {
|
for (int i = 0; i < list.length; i++) {
|
||||||
print(list[i].content);
|
|
||||||
if (pullMode == 0 && !isReset) {
|
if (pullMode == 0 && !isReset) {
|
||||||
uiList.add(UIMsg(list[i]));
|
uiList.add(UIMsg(list[i]));
|
||||||
// msgList.insert(0, UIMsg(list[i]));
|
// msgList.insert(0, UIMsg(list[i]));
|
||||||
|
@ -37,7 +37,7 @@ class IMUtils {
|
|||||||
"https://lmg.jj20.com/up/allimg/tx28/430423183653303.jpg",
|
"https://lmg.jj20.com/up/allimg/tx28/430423183653303.jpg",
|
||||||
"https://lmg.jj20.com/up/allimg/tx23/520420024834916.jpg",
|
"https://lmg.jj20.com/up/allimg/tx23/520420024834916.jpg",
|
||||||
"https://himg.bdimg.com/sys/portraitn/item/public.1.a535a65d.tJe8MgWmP8zJ456B73Kzfg",
|
"https://himg.bdimg.com/sys/portraitn/item/public.1.a535a65d.tJe8MgWmP8zJ456B73Kzfg",
|
||||||
"https://images.liqucn.com/img/h23/h07/img_localize_cb7b78b88d5b33e2ce8921221bf3deae_400x400.png",
|
"https://img2.baidu.com/it/u=3324164588,1070151830&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500",
|
||||||
"https://img1.baidu.com/it/u=3916753633,2634890492&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400",
|
"https://img1.baidu.com/it/u=3916753633,2634890492&fm=253&fmt=auto&app=138&f=JPEG?w=400&h=400",
|
||||||
"https://img0.baidu.com/it/u=4210586523,443489101&fm=253&fmt=auto&app=138&f=JPEG?w=304&h=304",
|
"https://img0.baidu.com/it/u=4210586523,443489101&fm=253&fmt=auto&app=138&f=JPEG?w=304&h=304",
|
||||||
"https://img2.baidu.com/it/u=2559320899,1546883787&fm=253&fmt=auto&app=138&f=JPEG?w=441&h=499",
|
"https://img2.baidu.com/it/u=2559320899,1546883787&fm=253&fmt=auto&app=138&f=JPEG?w=441&h=499",
|
||||||
@ -54,6 +54,7 @@ class IMUtils {
|
|||||||
// 获取channel资料
|
// 获取channel资料
|
||||||
WKIM.shared.channelManager
|
WKIM.shared.channelManager
|
||||||
.addOnGetChannelListener((channelId, channelType, back) {
|
.addOnGetChannelListener((channelId, channelType, back) {
|
||||||
|
print('获取频道资料');
|
||||||
if (channelType == WKChannelType.personal) {
|
if (channelType == WKChannelType.personal) {
|
||||||
// 获取个人资料
|
// 获取个人资料
|
||||||
// 这里直接返回了
|
// 这里直接返回了
|
||||||
@ -62,6 +63,8 @@ class IMUtils {
|
|||||||
channel.channelName = "【单聊】${channel.channelID}";
|
channel.channelName = "【单聊】${channel.channelID}";
|
||||||
var index = channel.channelID.hashCode % imgs.length;
|
var index = channel.channelID.hashCode % imgs.length;
|
||||||
channel.avatar = imgs[index];
|
channel.avatar = imgs[index];
|
||||||
|
channel.remoteExtraMap = {'status': 1, 'notice': 'xx'};
|
||||||
|
channel.localExtra = {'localStatus': 1, 'localNotice': 'nxx'};
|
||||||
back(channel);
|
back(channel);
|
||||||
} else if (channelType == WKChannelType.group) {
|
} else if (channelType == WKChannelType.group) {
|
||||||
// 获取群资料
|
// 获取群资料
|
||||||
@ -69,6 +72,8 @@ class IMUtils {
|
|||||||
channel.channelName = "【群聊】${channel.channelID}";
|
channel.channelName = "【群聊】${channel.channelID}";
|
||||||
var index = channel.channelID.hashCode % imgs.length;
|
var index = channel.channelID.hashCode % imgs.length;
|
||||||
channel.avatar = imgs[index];
|
channel.avatar = imgs[index];
|
||||||
|
channel.remoteExtraMap = {'status': 2, 'notice': 'ss'};
|
||||||
|
channel.localExtra = {'localStatus': 2, 'localNotice': 'nss'};
|
||||||
back(channel);
|
back(channel);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -26,27 +26,17 @@ class ChannelDB {
|
|||||||
|
|
||||||
insertOrUpdateList(List<WKChannel> list) async {
|
insertOrUpdateList(List<WKChannel> list) async {
|
||||||
List<Map<String, dynamic>> addList = [];
|
List<Map<String, dynamic>> addList = [];
|
||||||
List<Map<String, dynamic>> updateList = [];
|
|
||||||
for (WKChannel channel in list) {
|
for (WKChannel channel in list) {
|
||||||
bool bl = await isExist(channel.channelID, channel.channelType);
|
if (channel.channelID != '') {
|
||||||
if (bl) {
|
|
||||||
updateList.add(getMap(channel));
|
|
||||||
} else {
|
|
||||||
addList.add(getMap(channel));
|
addList.add(getMap(channel));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (addList.isNotEmpty || updateList.isNotEmpty) {
|
if (addList.isNotEmpty) {
|
||||||
WKDBHelper.shared.getDB().transaction((txn) async {
|
WKDBHelper.shared.getDB().transaction((txn) async {
|
||||||
if (addList.isNotEmpty) {
|
if (addList.isNotEmpty) {
|
||||||
for (Map<String, dynamic> value in addList) {
|
for (Map<String, dynamic> value in addList) {
|
||||||
txn.insert(WKDBConst.tableChannel, value);
|
txn.insert(WKDBConst.tableChannel, value,
|
||||||
}
|
conflictAlgorithm: ConflictAlgorithm.replace);
|
||||||
}
|
|
||||||
if (updateList.isNotEmpty) {
|
|
||||||
for (Map<String, dynamic> value in updateList) {
|
|
||||||
txn.update(WKDBConst.tableChannel, value,
|
|
||||||
where: "channel_id=? and channel_type=?",
|
|
||||||
whereArgs: [value['channel_id'], value['channel_type']]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -54,12 +44,7 @@ class ChannelDB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
saveOrUpdate(WKChannel channel) async {
|
saveOrUpdate(WKChannel channel) async {
|
||||||
bool bl = await isExist(channel.channelID, channel.channelType);
|
insert(channel);
|
||||||
if (!bl) {
|
|
||||||
insert(channel);
|
|
||||||
} else {
|
|
||||||
update(channel);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
insert(WKChannel channel) {
|
insert(WKChannel channel) {
|
||||||
|
@ -96,24 +96,12 @@ class ChannelMemberDB {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
insertOrUpdateList(
|
insertList(List<WKChannelMember> allMemberList) {
|
||||||
List<WKChannelMember> allMemberList, List<WKChannelMember> existList) {
|
|
||||||
List<Map<String, Object>> insertCVList = [];
|
List<Map<String, Object>> insertCVList = [];
|
||||||
List<Map<String, Object>> updateCVList = [];
|
|
||||||
for (WKChannelMember channelMember in allMemberList) {
|
for (WKChannelMember channelMember in allMemberList) {
|
||||||
bool isAdd = true;
|
insertCVList.add(getMap(channelMember));
|
||||||
for (WKChannelMember cm in existList) {
|
|
||||||
if (channelMember.memberUID == cm.memberUID) {
|
|
||||||
isAdd = false;
|
|
||||||
updateCVList.add(getMap(channelMember));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (isAdd) {
|
|
||||||
insertCVList.add(getMap(channelMember));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (insertCVList.isNotEmpty || updateCVList.isNotEmpty) {
|
if (insertCVList.isNotEmpty) {
|
||||||
WKDBHelper.shared.getDB().transaction((txn) async {
|
WKDBHelper.shared.getDB().transaction((txn) async {
|
||||||
if (insertCVList.isNotEmpty) {
|
if (insertCVList.isNotEmpty) {
|
||||||
for (Map<String, dynamic> value in insertCVList) {
|
for (Map<String, dynamic> value in insertCVList) {
|
||||||
@ -121,18 +109,6 @@ class ChannelMemberDB {
|
|||||||
conflictAlgorithm: ConflictAlgorithm.replace);
|
conflictAlgorithm: ConflictAlgorithm.replace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (updateCVList.isNotEmpty) {
|
|
||||||
for (Map<String, dynamic> value in updateCVList) {
|
|
||||||
txn.update(WKDBConst.tableChannelMember, value,
|
|
||||||
where: "channel_id=? and channel_type=? and member_uid=?",
|
|
||||||
whereArgs: [
|
|
||||||
value['channel_id'],
|
|
||||||
value['channel_type'],
|
|
||||||
value['member_uid']
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ class WKChannelMemberManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 先保存或修改成员
|
// 先保存或修改成员
|
||||||
ChannelMemberDB.shared.insertOrUpdateList(list, existList);
|
ChannelMemberDB.shared.insertList(list);
|
||||||
|
|
||||||
if (addList.isNotEmpty) {
|
if (addList.isNotEmpty) {
|
||||||
setOnNewChannelMember(addList);
|
setOnNewChannelMember(addList);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user