IM修改
This commit is contained in:
parent
26a9982e9b
commit
9255edfe38
@ -2,6 +2,10 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>NSLocationWhenInUseUsageDescription</key>
|
||||||
|
<string>应用想要访问您的位置,用于设置个人资料</string>
|
||||||
|
<key>NSLocationAlwaysUsageDescription</key>
|
||||||
|
<string>应用想要访问您的位置,用于设置个人资料</string>
|
||||||
<key>NSMicrophoneUsageDescription</key>
|
<key>NSMicrophoneUsageDescription</key>
|
||||||
<string>应用想要访问您的麦克风,用于发送语音</string>
|
<string>应用想要访问您的麦克风,用于发送语音</string>
|
||||||
<key>NSCameraUsageDescription</key>
|
<key>NSCameraUsageDescription</key>
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
|
import 'package:circle_app/app/chat/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_chat_text_elem.dart';
|
||||||
import 'package:circle_app/app/chat/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_merger_message_elem.dart';
|
import 'package:circle_app/app/chat/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_merger_message_elem.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
@ -175,7 +176,7 @@ class TIMToolTipsConfig {
|
|||||||
this.additionalItemBuilder});
|
this.additionalItemBuilder});
|
||||||
}
|
}
|
||||||
|
|
||||||
class TIMUIKitHistoryMessageListItem extends StatefulWidget {
|
class TIMHistoryMessageListItem extends StatefulWidget {
|
||||||
/// message instance
|
/// message instance
|
||||||
final V2TimMessage message;
|
final V2TimMessage message;
|
||||||
|
|
||||||
@ -261,7 +262,7 @@ class TIMUIKitHistoryMessageListItem extends StatefulWidget {
|
|||||||
|
|
||||||
final List customEmojiStickerList;
|
final List customEmojiStickerList;
|
||||||
|
|
||||||
const TIMUIKitHistoryMessageListItem(
|
const TIMHistoryMessageListItem(
|
||||||
{Key? key,
|
{Key? key,
|
||||||
required this.message,
|
required this.message,
|
||||||
@Deprecated("Nickname will not show in one-to-one chat, if you tend to control it in group chat, please use `isShowSelfNameInGroup` and `isShowOthersNameInGroup` from `config: TIMUIKitChatConfig` instead")
|
@Deprecated("Nickname will not show in one-to-one chat, if you tend to control it in group chat, please use `isShowSelfNameInGroup` and `isShowOthersNameInGroup` from `config: TIMUIKitChatConfig` instead")
|
||||||
@ -332,7 +333,7 @@ class TipsActionItem extends TIMUIKitStatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _TIMUIKItHistoryMessageListItemState
|
class _TIMUIKItHistoryMessageListItemState
|
||||||
extends TIMUIKitState<TIMUIKitHistoryMessageListItem>
|
extends TIMUIKitState<TIMHistoryMessageListItem>
|
||||||
with TickerProviderStateMixin {
|
with TickerProviderStateMixin {
|
||||||
SuperTooltip? tooltip;
|
SuperTooltip? tooltip;
|
||||||
|
|
||||||
@ -459,7 +460,7 @@ class _TIMUIKItHistoryMessageListItemState
|
|||||||
clearJump,
|
clearJump,
|
||||||
)!;
|
)!;
|
||||||
}
|
}
|
||||||
return TIMUIKitTextElem(
|
return TIMTextElem(
|
||||||
chatModel: model,
|
chatModel: model,
|
||||||
message: messageItem,
|
message: messageItem,
|
||||||
isFromSelf: messageItem.isSelf ?? true,
|
isFromSelf: messageItem.isSelf ?? true,
|
||||||
|
|||||||
@ -17,6 +17,8 @@ import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKItMessageLi
|
|||||||
import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/tim_uikit_chat_config.dart';
|
import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/tim_uikit_chat_config.dart';
|
||||||
import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_base.dart';
|
import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_base.dart';
|
||||||
|
|
||||||
|
import 'tim_uikit_chat_history_message_list_item.dart';
|
||||||
|
|
||||||
enum LoadingPlace {
|
enum LoadingPlace {
|
||||||
none,
|
none,
|
||||||
top,
|
top,
|
||||||
@ -154,7 +156,7 @@ class _TIMUIKitHistoryMessageListContainerState
|
|||||||
groupAtInfoList: widget.groupAtInfoList,
|
groupAtInfoList: widget.groupAtInfoList,
|
||||||
mainHistoryListConfig: widget.mainHistoryListConfig,
|
mainHistoryListConfig: widget.mainHistoryListConfig,
|
||||||
itemBuilder: (context, message) {
|
itemBuilder: (context, message) {
|
||||||
return TIMUIKitHistoryMessageListItem(
|
return TIMHistoryMessageListItem(
|
||||||
textFieldController: widget.textFieldController,
|
textFieldController: widget.textFieldController,
|
||||||
userAvatarBuilder: widget.userAvatarBuilder,
|
userAvatarBuilder: widget.userAvatarBuilder,
|
||||||
customEmojiStickerList: widget.customEmojiStickerList,
|
customEmojiStickerList: widget.customEmojiStickerList,
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import 'package:tencent_cloud_chat_uikit/ui/widgets/link_preview/link_preview_en
|
|||||||
import 'package:tencent_cloud_chat_uikit/ui/widgets/link_preview/widgets/link_preview.dart';
|
import 'package:tencent_cloud_chat_uikit/ui/widgets/link_preview/widgets/link_preview.dart';
|
||||||
import 'TIMUIKitMessageReaction/tim_uikit_message_reaction_show_panel.dart';
|
import 'TIMUIKitMessageReaction/tim_uikit_message_reaction_show_panel.dart';
|
||||||
|
|
||||||
class TIMUIKitTextElem extends StatefulWidget {
|
class TIMTextElem extends StatefulWidget {
|
||||||
final V2TimMessage message;
|
final V2TimMessage message;
|
||||||
final bool isFromSelf;
|
final bool isFromSelf;
|
||||||
final bool isShowJump;
|
final bool isShowJump;
|
||||||
@ -27,7 +27,7 @@ class TIMUIKitTextElem extends StatefulWidget {
|
|||||||
final bool isUseDefaultEmoji;
|
final bool isUseDefaultEmoji;
|
||||||
final List customEmojiStickerList;
|
final List customEmojiStickerList;
|
||||||
|
|
||||||
const TIMUIKitTextElem(
|
const TIMTextElem(
|
||||||
{Key? key,
|
{Key? key,
|
||||||
required this.message,
|
required this.message,
|
||||||
required this.isFromSelf,
|
required this.isFromSelf,
|
||||||
@ -44,10 +44,10 @@ class TIMUIKitTextElem extends StatefulWidget {
|
|||||||
: super(key: key);
|
: super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() => _TIMUIKitTextElemState();
|
State<StatefulWidget> createState() => _TIMTextElemState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _TIMUIKitTextElemState extends TIMUIKitState<TIMUIKitTextElem> {
|
class _TIMTextElemState extends TIMUIKitState<TIMTextElem> {
|
||||||
bool isShowJumpState = false;
|
bool isShowJumpState = false;
|
||||||
bool isShining = false;
|
bool isShining = false;
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ class _TIMUIKitTextElemState extends TIMUIKitState<TIMUIKitTextElem> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void didUpdateWidget(TIMUIKitTextElem oldWidget) {
|
void didUpdateWidget(TIMTextElem oldWidget) {
|
||||||
super.didUpdateWidget(oldWidget);
|
super.didUpdateWidget(oldWidget);
|
||||||
if (oldWidget.message.msgID == null && widget.message.msgID != null) {
|
if (oldWidget.message.msgID == null && widget.message.msgID != null) {
|
||||||
_getLinkPreview();
|
_getLinkPreview();
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:circle_app/app/chat/TIMUIKitChat/tim_uikit_chat.dart';
|
import 'package:circle_app/app/chat/TIMUIKitChat/tim_uikit_chat.dart';
|
||||||
import 'package:circle_app/components/my_app_bar.dart';
|
import 'package:circle_app/components/my_app_bar.dart';
|
||||||
|
import 'package:circle_app/util/util.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@ -60,12 +62,7 @@ class ChatPage extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return TIMChat(
|
return TIMChat(
|
||||||
conversation: logic.selectedConversation ??
|
conversation: logic.selectedConversation!,
|
||||||
V2TimConversation(
|
|
||||||
conversationID: "c2c_10040818",
|
|
||||||
userID: "10040818",
|
|
||||||
showName: "Test Chat",
|
|
||||||
type: 1),
|
|
||||||
customStickerPanel: renderCustomStickerPanel,
|
customStickerPanel: renderCustomStickerPanel,
|
||||||
config: const TIMUIKitChatConfig(
|
config: const TIMUIKitChatConfig(
|
||||||
// 仅供演示,非全部配置项,实际使用中,可只传和默认项不同的参数,无需传入所有开关
|
// 仅供演示,非全部配置项,实际使用中,可只传和默认项不同的参数,无需传入所有开关
|
||||||
@ -83,12 +80,36 @@ class ChatPage extends StatelessWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
customAppBar: MyAppBar(
|
customAppBar: MyAppBar(
|
||||||
centerTitle: '1111',
|
centerTitle: logic.selectedConversation!.showName!,
|
||||||
actionWdiget: GestureDetector(
|
actionWdiget: GestureDetector(
|
||||||
child: Text('TA的主页',style: TextStyle(color: Color(0xFF00FFF4),fontSize:12.sp,fontWeight: FontWeight.w500),),
|
child: Text('TA的主页',style: TextStyle(color: Color(0xFF00FFF4),fontSize:12.sp,fontWeight: FontWeight.w500),),
|
||||||
),
|
),
|
||||||
onPressed: () {},
|
onPressed: () {},
|
||||||
),
|
),
|
||||||
|
userAvatarBuilder: (BuildContext context, V2TimMessage message) {
|
||||||
|
return avatarWidget(message.faceUrl ?? 'http://qiniuyun.ikuayou.com/avatar/default/default_header.png');
|
||||||
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
avatarWidget(String url, {double width = 34}) {
|
||||||
|
return GestureDetector(
|
||||||
|
child: Stack(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
children: [
|
||||||
|
Image.asset(
|
||||||
|
getCircleImage('avatar_bg'),
|
||||||
|
width: width.sp,
|
||||||
|
),
|
||||||
|
url.contains("http") ? ClipOval(
|
||||||
|
child: CachedNetworkImage(
|
||||||
|
imageUrl:url,
|
||||||
|
width: (width - 2).sp,
|
||||||
|
height: (width - 2).sp,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
),
|
||||||
|
) : Text(url,style: TextStyle(color: Color(0xffF756FF),fontSize: 12.sp),)
|
||||||
|
],
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
import 'package:circle_app/app/circle/logic.dart';
|
import 'package:circle_app/app/circle/logic.dart';
|
||||||
import 'package:circle_app/app/minefragment/logic.dart';
|
import 'package:circle_app/app/minefragment/logic.dart';
|
||||||
|
import 'package:circle_app/main.dart';
|
||||||
|
import 'package:circle_app/network/api.dart';
|
||||||
|
import 'package:circle_app/network/dio_manager.dart';
|
||||||
import 'package:circle_app/util/util.dart';
|
import 'package:circle_app/util/util.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@ -24,12 +27,26 @@ class HomeLogic extends GetxController {
|
|||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
super.onInit();
|
super.onInit();
|
||||||
|
getIMData();
|
||||||
|
|
||||||
tabs.add(MsgPage());
|
tabs.add(MsgPage());
|
||||||
tabs.add(CirclePage());
|
tabs.add(CirclePage());
|
||||||
tabs.add(MinefragmentPage());
|
tabs.add(MinefragmentPage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void getIMData() async {
|
||||||
|
// _coreInstance.;
|
||||||
|
if (!coreInstance.isLoginSuccess) {
|
||||||
|
var data = await DioManager.instance
|
||||||
|
.get(url: Api.getIMInfo);
|
||||||
|
if (data['code'] == 200) {
|
||||||
|
loginIM(data['data']['account_id'].toString(), data['data']['user_sig']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
String getInfo () {
|
String getInfo () {
|
||||||
return getBaseImage('image');
|
return getBaseImage('image');
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import 'package:circle_app/app/circle/logic.dart';
|
||||||
import 'package:circle_app/router/app_routers.dart';
|
import 'package:circle_app/router/app_routers.dart';
|
||||||
import 'package:circle_app/util/util.dart';
|
import 'package:circle_app/util/util.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
@ -30,9 +31,9 @@ class MsgPage extends StatelessWidget {
|
|||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
navigatorItem(),
|
navigatorItem(),
|
||||||
tipWidget(),
|
// tipWidget(),
|
||||||
reconmandWidget(),
|
// reconmandWidget(),
|
||||||
Text(controller.state.msg),
|
// Text(controller.state.msg),
|
||||||
Expanded(child: msgWdiget(context))
|
Expanded(child: msgWdiget(context))
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@ -42,6 +43,11 @@ class MsgPage extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
navigatorItem() {
|
navigatorItem() {
|
||||||
|
var logic = Get.find<CircleLogic>();
|
||||||
|
String count = '0';
|
||||||
|
if (logic != null) {
|
||||||
|
count = (logic.statistics?['like_me_count'] ?? 0).toString();
|
||||||
|
}
|
||||||
return Container(
|
return Container(
|
||||||
width: Get.width,
|
width: Get.width,
|
||||||
padding: EdgeInsets.only(left: 18.sp, right: 18.sp),
|
padding: EdgeInsets.only(left: 18.sp, right: 18.sp),
|
||||||
@ -52,11 +58,39 @@ class MsgPage extends StatelessWidget {
|
|||||||
Positioned(
|
Positioned(
|
||||||
left: 0,
|
left: 0,
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
child: Image.asset(
|
onTap: () {
|
||||||
|
Get.toNamed(AppRoutes.FriendsActivity,arguments: '1');
|
||||||
|
},
|
||||||
|
child: Stack(
|
||||||
|
children: [
|
||||||
|
Container(width: count .length > 2 ? 45.sp : count .length > 1 ? 38.sp : 35.sp,height: 30.sp,),
|
||||||
|
Image.asset(
|
||||||
getMsgImage('msg_love'),
|
getMsgImage('msg_love'),
|
||||||
width: 30.sp,
|
width: 30.sp,
|
||||||
),
|
),
|
||||||
)),
|
|
||||||
|
int.parse(count) > 0 ? Positioned(
|
||||||
|
right:0,
|
||||||
|
child: Container(
|
||||||
|
padding: EdgeInsets.only(left: 5.sp,right: 5.sp),
|
||||||
|
height: 14.sp,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: BorderRadius.circular(7.sp),
|
||||||
|
gradient:const LinearGradient(colors: [
|
||||||
|
Color(0xFFC343F9),
|
||||||
|
Color(0xFFFB34B2),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
),
|
||||||
|
alignment: Alignment.center,
|
||||||
|
child: Text(
|
||||||
|
int.parse(count) > 99 ? '99+' : count,
|
||||||
|
style: TextStyle(color: Colors.white,fontSize: 10.sp,fontWeight: FontWeight.w500),
|
||||||
|
),
|
||||||
|
)) : Container(),
|
||||||
|
],
|
||||||
|
))),
|
||||||
ShaderMask(
|
ShaderMask(
|
||||||
shaderCallback: (Rect bounds) {
|
shaderCallback: (Rect bounds) {
|
||||||
return const LinearGradient(
|
return const LinearGradient(
|
||||||
|
|||||||
@ -17,6 +17,7 @@ class UserinfoLogic extends GetxController {
|
|||||||
final UserinfoState state = UserinfoState();
|
final UserinfoState state = UserinfoState();
|
||||||
final ImagePicker _picker = ImagePicker();
|
final ImagePicker _picker = ImagePicker();
|
||||||
UserBean? userInfoBean = null;
|
UserBean? userInfoBean = null;
|
||||||
|
String imId = '';
|
||||||
String ageMsg = "";
|
String ageMsg = "";
|
||||||
var isVip = 0;
|
var isVip = 0;
|
||||||
var onLineCity = "";
|
var onLineCity = "";
|
||||||
@ -45,15 +46,14 @@ class UserinfoLogic extends GetxController {
|
|||||||
}
|
}
|
||||||
state.imaglist.clear();
|
state.imaglist.clear();
|
||||||
if (userId == '') {
|
if (userId == '') {
|
||||||
|
|
||||||
isMe = true;
|
isMe = true;
|
||||||
var data = await DioManager.instance.get(url: Api.getUserInfo);
|
var data = await DioManager.instance.get(url: Api.getUserInfo);
|
||||||
var bean = BaseResponse<ResponseBean>.fromJson(
|
var bean = BaseResponse<ResponseBean>.fromJson(
|
||||||
data, (data) => ResponseBean.fromJson(data));
|
data, (data) => ResponseBean.fromJson(data));
|
||||||
if (bean.isSuccess()) {
|
if (bean.isSuccess()) {
|
||||||
|
|
||||||
isLikeFoMsg =
|
isLikeFoMsg =
|
||||||
"${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新";
|
"${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新";
|
||||||
|
|
||||||
userInfoBean = bean.data.user;
|
userInfoBean = bean.data.user;
|
||||||
isVip = userInfoBean!.vip;
|
isVip = userInfoBean!.vip;
|
||||||
//访问自己强制在线
|
//访问自己强制在线
|
||||||
@ -79,8 +79,6 @@ class UserinfoLogic extends GetxController {
|
|||||||
state.imaglist.add(element);
|
state.imaglist.add(element);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
isMe = false;
|
isMe = false;
|
||||||
var data = await DioManager.instance
|
var data = await DioManager.instance
|
||||||
@ -93,7 +91,7 @@ class UserinfoLogic extends GetxController {
|
|||||||
"${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新";
|
"${bean.data.imageUrgeCount}位圈友感兴趣,其中${bean.data.likeMeCount}位已催您更新";
|
||||||
userInfoBean = bean.data!.user;
|
userInfoBean = bean.data!.user;
|
||||||
isVip = userInfoBean!.vip;
|
isVip = userInfoBean!.vip;
|
||||||
|
imId = bean.data.account_id;
|
||||||
onLineCity = userInfoBean!.isOnline == true ? "在线" : "离线";
|
onLineCity = userInfoBean!.isOnline == true ? "在线" : "离线";
|
||||||
if (userInfoBean!.city != null) {
|
if (userInfoBean!.city != null) {
|
||||||
onLineCity = "$onLineCity·${userInfoBean!.city}";
|
onLineCity = "$onLineCity·${userInfoBean!.city}";
|
||||||
@ -126,8 +124,6 @@ class UserinfoLogic extends GetxController {
|
|||||||
}
|
}
|
||||||
update();
|
update();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var data =
|
var data =
|
||||||
await DioManager.instance.get(url: Api.getqiniuToken, params: {});
|
await DioManager.instance.get(url: Api.getqiniuToken, params: {});
|
||||||
var bean = BaseResponse<QnTokenData>.fromJson(
|
var bean = BaseResponse<QnTokenData>.fromJson(
|
||||||
@ -305,15 +301,18 @@ class ResponseBean {
|
|||||||
int likeMeCount;
|
int likeMeCount;
|
||||||
int imageUrgeCount;
|
int imageUrgeCount;
|
||||||
bool is_follow;
|
bool is_follow;
|
||||||
|
String account_id;
|
||||||
|
|
||||||
ResponseBean(
|
ResponseBean(
|
||||||
{required this.user,
|
{required this.user,
|
||||||
required this.likeMeCount,
|
required this.likeMeCount,
|
||||||
required this.imageUrgeCount,
|
required this.imageUrgeCount,
|
||||||
|
required this.account_id,
|
||||||
required this.is_follow});
|
required this.is_follow});
|
||||||
|
|
||||||
factory ResponseBean.fromJson(Map<String, dynamic> json) {
|
factory ResponseBean.fromJson(Map<String, dynamic> json) {
|
||||||
return ResponseBean(
|
return ResponseBean(
|
||||||
|
account_id: json['account_id'],
|
||||||
user: UserBean.fromJson(json['user']),
|
user: UserBean.fromJson(json['user']),
|
||||||
likeMeCount: json['like_me_count'],
|
likeMeCount: json['like_me_count'],
|
||||||
imageUrgeCount: json['image_urge_count'],
|
imageUrgeCount: json['image_urge_count'],
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
|
|
||||||
import 'package:cached_network_image/cached_network_image.dart';
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import 'package:circle_app/app/userinfo/widgets/home_call_out.dart';
|
import 'package:circle_app/app/userinfo/widgets/home_call_out.dart';
|
||||||
|
import 'package:circle_app/main.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@ -137,7 +138,10 @@ class _MyTabbedScreenState extends State<UserinfoPage>
|
|||||||
),
|
),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
showToast("私聊");
|
if (logic.userInfoBean != null) {
|
||||||
|
pushChatPage(logic.imId, logic.userInfoBean!.nickname);
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 130.sp,
|
width: 130.sp,
|
||||||
|
|||||||
@ -13,10 +13,35 @@ import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart';
|
|||||||
import 'app/splash/view.dart';
|
import 'app/splash/view.dart';
|
||||||
|
|
||||||
|
|
||||||
|
final CoreServicesImpl coreInstance = TIMUIKitCore.getInstance();
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
runApp(const MyApp());
|
runApp(const MyApp());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//登录IM
|
||||||
|
loginIM(String userId,String sig) async {
|
||||||
|
var info = await coreInstance.login(
|
||||||
|
userID: userId,
|
||||||
|
userSig:sig,);
|
||||||
|
}
|
||||||
|
|
||||||
|
//退出IM
|
||||||
|
logoutIM() async {
|
||||||
|
await coreInstance.logout();
|
||||||
|
}
|
||||||
|
|
||||||
|
//跳转发消息页面
|
||||||
|
pushChatPage(String imId,String userName) {
|
||||||
|
var con = V2TimConversation(
|
||||||
|
conversationID: "c2c_$imId",
|
||||||
|
userID: imId,
|
||||||
|
showName: userName,
|
||||||
|
type: 1);
|
||||||
|
Get.toNamed(AppRoutes.Chat,arguments: con);
|
||||||
|
}
|
||||||
|
|
||||||
class MyApp extends StatefulWidget {
|
class MyApp extends StatefulWidget {
|
||||||
const MyApp({super.key});
|
const MyApp({super.key});
|
||||||
|
|
||||||
@ -24,12 +49,14 @@ class MyApp extends StatefulWidget {
|
|||||||
State<MyApp> createState() => _MyAppState();
|
State<MyApp> createState() => _MyAppState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class _MyAppState extends State<MyApp> {
|
class _MyAppState extends State<MyApp> {
|
||||||
// This widget is the root of your application.
|
// This widget is the root of your application.
|
||||||
|
|
||||||
final List<String> _guideList = ['bg', 'home_back'];
|
final List<String> _guideList = ['bg', 'home_back'];
|
||||||
|
|
||||||
final CoreServicesImpl _coreInstance = TIMUIKitCore.getInstance();
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
initIM();
|
initIM();
|
||||||
@ -38,9 +65,9 @@ class _MyAppState extends State<MyApp> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
initIM() {
|
initIM() {
|
||||||
_coreInstance.init(
|
coreInstance.init(
|
||||||
sdkAppID:
|
sdkAppID:
|
||||||
1400793496, // Replace 0 with the SDKAppID of your IM application when integrating
|
1400799631, // Replace 0 with the SDKAppID of your IM application when integrating
|
||||||
// language: LanguageEnum.en, // 界面语言配置,若不配置,则跟随系统语言
|
// language: LanguageEnum.en, // 界面语言配置,若不配置,则跟随系统语言
|
||||||
loglevel: LogLevelEnum.V2TIM_LOG_DEBUG,
|
loglevel: LogLevelEnum.V2TIM_LOG_DEBUG,
|
||||||
onTUIKitCallbackListener: (TIMCallback callbackValue) {
|
onTUIKitCallbackListener: (TIMCallback callbackValue) {
|
||||||
@ -73,7 +100,8 @@ class _MyAppState extends State<MyApp> {
|
|||||||
}
|
}
|
||||||
}, // [建议配置,详见此部分](https://cloud.tencent.com/document/product/269/70746#callback)
|
}, // [建议配置,详见此部分](https://cloud.tencent.com/document/product/269/70746#callback)
|
||||||
listener: V2TimSDKListener(onConnectSuccess: () {
|
listener: V2TimSDKListener(onConnectSuccess: () {
|
||||||
loginIM();
|
print('IM登录成功');
|
||||||
|
// loginIM();
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,13 +114,6 @@ class _MyAppState extends State<MyApp> {
|
|||||||
return AssetImage(getBaseImage(image));
|
return AssetImage(getBaseImage(image));
|
||||||
}
|
}
|
||||||
|
|
||||||
loginIM() async {
|
|
||||||
var info = await _coreInstance.login(
|
|
||||||
userID: '123456',
|
|
||||||
userSig:
|
|
||||||
'eJwtzEELgjAYxvHvsmshc25rCl40OlRIYaVX0RUvrTFsDFn03TP1*Pwe*H-Q5VgGTvYoQSTAaD1t6KS2cIeJQxJRxpfn3T0bY6BDSUgx3sQRjfn8yMFAL0dnjBGM8awWXn-jggtBY0qXCjzGcJ7tT4eVrHa6aG9FWfsms*rqK3cW2hulHKkHtzU2L9sUfX-YTTG5');
|
|
||||||
print(info);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|||||||
@ -165,8 +165,8 @@ class Api {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//获取IM配置信息
|
||||||
|
static const getIMInfo = 'msg-service/im/token';
|
||||||
|
|
||||||
//发现页统计
|
//发现页统计
|
||||||
static const getInterestsCount = 'user-service/my/statistics';
|
static const getInterestsCount = 'user-service/my/statistics';
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user