1.4.0代码提交

This commit is contained in:
CYH 2023-12-04 11:40:07 +07:00
parent b9664e13a8
commit 07a4c42cde
33 changed files with 1753 additions and 768 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@ -382,7 +382,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.3.2;
PRODUCT_BUNDLE_IDENTIFIER = com.example.kyApp;
PRODUCT_BUNDLE_IDENTIFIER = com.example.circleapp;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
@ -531,7 +531,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.3.2;
PRODUCT_BUNDLE_IDENTIFIER = com.example.kyApp;
PRODUCT_BUNDLE_IDENTIFIER = com.example.circleapp;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;
@ -574,7 +574,7 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.3.2;
PRODUCT_BUNDLE_IDENTIFIER = com.example.kyApp;
PRODUCT_BUNDLE_IDENTIFIER = com.example.circleapp;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SUPPORTS_MACCATALYST = NO;

View File

@ -1,8 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
</dict>
<dict/>
</plist>

View File

@ -446,6 +446,35 @@ class _TIMUIKItHistoryMessageListItemState
if (messageItem.customElem?.extension?.contains('cardData') ?? false) {
Map info = jsonDecode(messageItem.customElem?.data ?? '');
String title = '';
if (info.containsKey('title')) {
var recommendCircleFriendData= info['title'];
if (recommendCircleFriendData['is_follow_me'] && isFromSelf) {
title = '对方喜欢了你';
} else if (recommendCircleFriendData['is_follow_to'] && !isFromSelf) {
title = '对方喜欢了你';
} else if (recommendCircleFriendData['is_follow_to']) {
title = '你喜欢了TA';
} else if (recommendCircleFriendData['has_both_friend']) {
title = '你们有共同喜欢的圈友';
} else if (recommendCircleFriendData['has_friend_follow_to'] && isFromSelf) {
title = '你喜欢的圈友也喜欢TA';
} else if (recommendCircleFriendData['is_wanna_meet'] && isFromSelf) {
title = '很多圈友都喜欢TA';
} else if (recommendCircleFriendData['is_wanna_meet'] && isFromSelf) {
title = 'TA是乐园优秀圈主哦~';
} else if (recommendCircleFriendData['is_wanna_meet'] && isFromSelf) {
title = '可能是你想认识的人';
}
}
return Column(
children: [
Container(
@ -464,6 +493,30 @@ class _TIMUIKItHistoryMessageListItemState
child: Column(
children: [
if (title.isNotEmpty)
Container(
margin: EdgeInsets.only(top: 10.sp),
child: Row(
children: [
Container(
margin: EdgeInsets.only(right: 5.sp),
width: 3.sp,
height: 3.sp,
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(1.5.sp),
color: Color(0xFF00FFF4)),
),
Text(
title,
style: TextStyle(
color: Colors.white,
fontSize: 14.sp,
fontWeight: FontWeight.w500),
)
],
),
),
if (info.containsKey('city'))
info['city'].toString().isNotEmpty
? Container(
@ -492,7 +545,7 @@ class _TIMUIKItHistoryMessageListItemState
: Container(),
if (info.containsKey('both_interests'))
Container(
margin: EdgeInsets.only(top: 16.sp, right: 16.sp),
margin: EdgeInsets.only(top: 10.sp, right: 16.sp),
child: Row(
children: [
Container(

View File

@ -31,6 +31,7 @@ import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKitTextField
import '../../../../common/Widgets/open_vip_tip/view.dart';
import '../../../../util/eventBus.dart';
import '../../widget/send_gift_dialog.dart';
enum MuteStatus { none, me, all }
@ -358,12 +359,18 @@ class _InputTextFieldState extends TIMUIKitState<TIMInputTextField> {
atUserIDList: getUserIdFromMemberInfoMap()),
context);
} else if (memberInfoMap.isNotEmpty) {
widget.model.sendTextAtMessage(
text: text,
convType: widget.conversationType,
convID: widget.conversationID,
atUserList: getUserIdFromMemberInfoMap());
} else {
bool isOK = await loadIsShowSendGiftDialogData();
if (!isOK) {
return;
}
isSendLoging = true;
var data = await DioManager.instance
.post(url: Api.shieldWordCheck, params: {'text': text, 'type': 2});
@ -379,12 +386,14 @@ class _InputTextFieldState extends TIMUIKitState<TIMInputTextField> {
}
if (words.isEmpty) {
MessageUtils.handleMessageError(
var msgResult = await MessageUtils.handleMessageError(
widget.model.sendTextMessage(
text: text,
convID: widget.conversationID,
convType: convType),
context);
addChatRecord(text, msgResult!.data!.msgID! ?? '', msgResult!.data!.timestamp!.toString() ?? '');
} else {
textEditingController.text = text;
showOKToast('含违规词汇,无法发送');
@ -403,6 +412,19 @@ class _InputTextFieldState extends TIMUIKitState<TIMInputTextField> {
}
}
loadIsShowSendGiftDialogData() async {
V2TimConversation con = Get.arguments;
var data = await DioManager.instance.get(url: Api.isShow_give_gift + widget.conversationID.split('_').last);
if (data['code'] == 200) {
if (data['data']) {
Get.bottomSheet(SendGiftDialog(accid: widget.conversationID,title: data['msg'],), isScrollControlled: true,
enableDrag: false);
return false;
}
}
return true;
}
sendHiText() async {
Map info =
jsonDecode(widget.currentConversation.lastMessage!.customElem!.data!);
@ -417,13 +439,23 @@ class _InputTextFieldState extends TIMUIKitState<TIMInputTextField> {
}
sendHiTextMsg(String text) async {
var result = await widget.model.sendTextMessage(
widget.model.sendTextMessage(
text: text, convID: widget.conversationID, convType: ConvType.c2c);
hintText = '说些什么吧~';
setState(() {});
}
addChatRecord(String msgContent,String msgId,String sendTime) async {
String str = DateTime.now().toString().split('.').first;
var data =
await DioManager.instance.post(url: Api.chatRecord, params: {
"content": msgContent,
"msgId": msgId,
"sendTime": str,
"to": widget.conversationID.split('_').last
});
}
void goDownBottom() {
if (globalModel.getMessageListPosition(widget.conversationID) ==
HistoryMessagePosition.notShowLatest) {

View File

@ -921,6 +921,10 @@ class _TIMTextFieldLayoutNarrowState
}
Future checkImStatus() async {
imStatusOK = await loadIsShowSendGiftDialogData();
if (imStatusOK == false) {
return imStatusOK;
}
var data = await DioManager.instance.get(url: Api.imstate);
int code = data['code'];
@ -939,9 +943,23 @@ class _TIMTextFieldLayoutNarrowState
showOKToast(data['msg']);
imStatusOK = false;
}
return imStatusOK;
}
loadIsShowSendGiftDialogData() async {
var data = await DioManager.instance.get(url: Api.isShow_give_gift +widget.userId!.split('_').last);
if (data['code'] == 200) {
if (data['data']) {
Get.bottomSheet(SendGiftDialog(accid: widget.userId!,title: data['msg'],), isScrollControlled: true,
enableDrag: false);
return false;
}
}
return true;
}
Future checkVipStatus(int plate) async {
var data =
await DioManager.instance.get(url: Api.getIsVips + plate.toString());
@ -966,6 +984,20 @@ class _TIMTextFieldLayoutNarrowState
return isVip;
}
addChatRecord(String msgContent,String msgId,String sendTime) async {
String str = DateTime.now().toString().split('.').first;
var data =
await DioManager.instance.post(url: Api.chatRecord, params: {
"content": msgContent,
"msgId": msgId,
"sendTime": str,
"to": widget.conversationID.split('_').last
});
}
VideoPlayerController? videoPlayerController;
Future getVideoFile(ImageSource imageSource) async {
@ -1009,7 +1041,7 @@ class _TIMTextFieldLayoutNarrowState
final Duration videoDuration = videoPlayerController!.value.duration;
final double durationInSeconds = videoDuration.inSeconds.toDouble();
await widget.model.sendVideoMessage(
V2TimValueCallback<V2TimMessage>? msgresult = await widget.model.sendVideoMessage(
videoPath: pickedFile.path,
snapshotPath: thumbnailPath,
//
@ -1018,6 +1050,9 @@ class _TIMTextFieldLayoutNarrowState
duration: durationInSeconds.toInt(),
inputElement: context,
);
addChatRecord('[视频]', msgresult!.data!.msgID! ?? '', msgresult!.data!.timestamp!.toString() ?? '');
if (imageSource == ImageSource.camera) {
DioManager.instance.get(url: Api.getAddTrialCount + "2");
} else {
@ -1068,11 +1103,13 @@ class _TIMTextFieldLayoutNarrowState
final XFile? pickedFile = await _picker.pickImage(
source: ImageSource.gallery,
);
await widget.model.sendImageMessage(
var msgresult = await widget.model.sendImageMessage(
imagePath: pickedFile!.path,
convID: widget.conversationID,
convType: widget.conversationType,
inputElement: context);
addChatRecord('[图片]', msgresult!.data!.msgID! ?? '', msgresult!.data!.timestamp!.toString() ?? '');
var data = await DioManager.instance.get(url: Api.getAddTrialCount + "3");
} catch (e) {
print(e);
@ -1100,11 +1137,12 @@ class _TIMTextFieldLayoutNarrowState
if (null == pickedFile) {
return;
}
widget.model.sendImageMessage(
var msgresult = await widget.model.sendImageMessage(
imagePath: pickedFile.path,
convID: widget.conversationID,
convType: widget.conversationType,
inputElement: context);
addChatRecord('[图片]', msgresult!.data?.msgID! ?? '', msgresult!.data!.timestamp!.toString() ?? '');
DioManager.instance.get(url: Api.getAddTrialCount + "1");
} catch (e) {}
}

View File

@ -1,9 +1,11 @@
import 'package:circle_app/network/api.dart';
import 'package:circle_app/network/dio_manager.dart';
import 'package:get/get.dart';
import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart';
import '../../util/eventBus.dart';
import 'state.dart';
import 'widget/send_gift_dialog.dart';
class ChatLogic extends GetxController {
@ -14,12 +16,25 @@ class ChatLogic extends GetxController {
void onInit() {
// TODO: implement onInit
super.onInit();
// loadIsShowSendGiftDialogData();
selectedConversation = Get.arguments;
}
sendData() async {
var data = await DioManager.instance.get(url: 'url',params: {});
var data = await DioManager.instance.get(url: Api.isShow_give_gift,params: {});
}
Future<bool> loadIsShowSendGiftDialogData() async {
var data = await DioManager.instance.get(url: Api.isShow_give_gift + selectedConversation!.conversationID!.split('_').last);
if (data['code'] == 200) {
if (data['data']) {
Get.bottomSheet(SendGiftDialog(accid: selectedConversation!.conversationID!,title: data['msg'],), isScrollControlled: true,
enableDrag: false);
return false;
}
}
return true;
}
}

View File

@ -33,7 +33,7 @@ class _ChatPageState extends State<ChatPage> {
@override
void dispose() {
// TODO: implement dispose
EventBusManager.fire(RefreshUnread());
sub.cancel();
super.dispose();
}
@ -41,25 +41,42 @@ class _ChatPageState extends State<ChatPage> {
TIMUIKitChatController();
User? userInfoBean;
var sub;
@override
void initState() {
// TODO: implement initState
super.initState();
initEventBus();
loadMyInfo();
// loadIsShowSendGiftDialogData();
}
void loadIsShowSendGiftDialogData() async {
V2TimConversation con = Get.arguments;
var data = await DioManager.instance.get(url: Api.isShow_give_gift + con!.conversationID!.split('_').last);
if (data['code'] == 200) {
if (data['data']) {
Get.bottomSheet(SendGiftDialog(accid: con!.conversationID!,title: data['msg'],), isScrollControlled: true,
enableDrag: false);
}
}
}
initEventBus()async{
EventBusManager.on<SendCoustomMessage>().listen((event) async{
sub = EventBusManager.on<SendCoustomMessage>().listen((event) async{
V2TimValueCallback<V2TimMessage>? sendMessageRes =
await _timuiKitChatController.sendMessage(
messageInfo: event.createCustomMessageRes?.data?.messageInfo);
if (sendMessageRes!.code == 0) {
//
showOKToast('发送成功');
if (sendMessageRes.data?.customElem?.extension != 'cardData') {
showOKToast('发送成功');
}
//
sendMessageRes.data?.customElem?.data; //data
sendMessageRes.data?.customElem?.desc; //desc
sendMessageRes.data?.customElem?.extension; //extension

View File

@ -83,6 +83,7 @@ class _ChatCircleShareDialogState extends State<ChatCircleShareDialog> {
body: Column(
children: [
Expanded(child: Container()),
Container(
height:Get.height * 0.5,
color: Color(0xFF423055),
@ -99,7 +100,7 @@ class _ChatCircleShareDialogState extends State<ChatCircleShareDialog> {
var bean = circle.lists[index];
return circleInfoItemWidget(
circle.lists[index]);
circle.lists[index],index);
},
itemCount: circle.lists.length + 1,
),
@ -112,12 +113,20 @@ class _ChatCircleShareDialogState extends State<ChatCircleShareDialog> {
}
circleInfoItemWidget(Circle bean) {
circleInfoItemWidget(Circle bean,int index) {
return Container(
margin: EdgeInsets.only(top: 10.sp, left: 10.sp, right: 10.sp),
child: Column(
children: [
if (index == 0)
Container(
height: 28.sp,
margin: EdgeInsets.only(bottom: 10.sp),
alignment: Alignment.center,
child: Text('我的圈子',style: TextStyle(color: Colors.white,fontSize: 17.sp),),
),
ClipRRect(
borderRadius: BorderRadius.circular(10.sp),
child: Container(

View File

@ -74,7 +74,7 @@ class _ChatGiftPannelState extends State<ChatGiftPannel>
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 5.sp,),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
@ -90,13 +90,13 @@ class _ChatGiftPannelState extends State<ChatGiftPannel>
indicatorColor: AppColor.mainColor,
indicatorSize: TabBarIndicatorSize.label,
unselectedLabelStyle: TextStyle(
fontSize: 14.sp,
fontSize: 16.sp,
fontWeight: FontWeight.w500,
),
unselectedLabelColor: Color(0xB3FFFFFF),
labelColor: AppColor.mainColor,
labelStyle: TextStyle(
fontSize: 14.sp, fontWeight: FontWeight.w500),
fontSize: 16.sp, fontWeight: FontWeight.w500),
controller: tabController,
tabs: const <Widget>[
Tab(
@ -132,7 +132,7 @@ class _ChatGiftPannelState extends State<ChatGiftPannel>
color: Color(0xFF423055),
borderRadius: BorderRadius.circular(10.sp)
)),
Text('礼物',style: TextStyle(color: Colors.white,fontSize: 14.sp),)
Text('礼物',style: TextStyle(color: Colors.white,fontSize: 14.sp),)
],
),
)),

View File

@ -17,7 +17,7 @@ import '../../../common/Widgets/base_tip_widget.dart';
class Gift extends StatefulWidget {
String accid;
String giftId;
Gift(this.accid,this.giftId, {super.key});
Gift(this.accid, this.giftId, {super.key});
@override
_GiftState createState() => _GiftState();
}
@ -48,20 +48,22 @@ class _GiftState extends State<Gift> {
}
gelectThirdItem() async {
var data = await DioManager.getInstance().get(url: Api.walletRechargeSelectItem);
var data =
await DioManager.getInstance().get(url: Api.walletRechargeSelectItem);
if (data['code'] == 200) {
// "walletRechargeSelectItemBos" -> [_GrowableList]
List response =data['data']['priceConfs'];
List response = data['data']['priceConfs'];
incomeBalance = data['data']['balance'].toString();
// List<RechargeItem> walletRechargeSelectItemBos = [];
AssetsDataDataPriceConfs info = AssetsDataDataPriceConfs.fromJson(response.last);
balanceTipStr = info.remark!.isNotEmpty ? '首冲最高赠送' + info.remark!.split('').last + '>' : '充值>';
AssetsDataDataPriceConfs info =
AssetsDataDataPriceConfs.fromJson(response.last);
balanceTipStr = info.remark!.isNotEmpty
? '首冲最高赠送' + info.remark!.split('').last + '>'
: '充值>';
}
}
@override
Widget build(BuildContext context) {
return Stack(
@ -70,19 +72,20 @@ class _GiftState extends State<Gift> {
color: Colors.transparent,
child: Column(
children: [
widget.accid!.isNotEmpty ? Container(
margin: EdgeInsets.only(top: 10.sp, bottom: 10.sp),
width: Get.width,
alignment: Alignment.center,
child: Text(
tipStr.isNotEmpty ? '礼物送出后,获得$tipStr小时的消息置顶' : '',
style: TextStyle(
color: AppColor.mainColor,
fontSize: 12.sp,
fontWeight: FontWeight.w500),
),
) : Container(),
widget.accid!.isNotEmpty
? Container(
margin: EdgeInsets.only(top: 10.sp, bottom: 10.sp),
width: Get.width,
alignment: Alignment.center,
child: Text(
tipStr.isNotEmpty ? '礼物送出后,获得$tipStr小时的消息置顶' : '',
style: TextStyle(
color: AppColor.mainColor,
fontSize: 12.sp,
fontWeight: FontWeight.w500),
),
)
: Container(),
Expanded(
child: Container(
width: Get.width,
@ -99,35 +102,39 @@ class _GiftState extends State<Gift> {
width: Get.width,
child: Row(
children: [
Container(
margin: EdgeInsets.only(right: 4.sp),
child: Image.asset(
getMineImage('bi_icon1'),
width: 24.sp,
),
),
Text(
'${incomeBalance}',
style: TextStyle(
color: Color(0xFFF7FAFA),
fontSize: 12.sp,
fontWeight: FontWeight.w500),
),
SizedBox(
width: 16.sp,
),
GestureDetector(
onTap: () {
showRechargeScreenDialog().then((value) {
getAsset();
});
},
child: Text(
balanceTipStr,
style: TextStyle(
color: AppColor.mainColor,
fontSize: 12.sp,
fontWeight: FontWeight.w500),
child: Row(
children: [
Container(
margin: EdgeInsets.only(right: 4.sp),
child: Image.asset(
getMineImage('bi_icon1'),
width: 24.sp,
),
),
Text(
'${incomeBalance}',
style: TextStyle(
color: Color(0xFFF7FAFA),
fontSize: 12.sp,
fontWeight: FontWeight.w500),
),
SizedBox(
width: 16.sp,
),
Text(
balanceTipStr,
style: TextStyle(
color: AppColor.mainColor,
fontSize: 12.sp,
fontWeight: FontWeight.w500),
),
],
),
),
Expanded(child: Container()),
@ -153,7 +160,8 @@ class _GiftState extends State<Gift> {
height: 27.sp,
decoration: BoxDecoration(
gradient: AppColor.mainVerLinearGradient,
borderRadius: BorderRadius.circular(13.5.sp)),
borderRadius:
BorderRadius.circular(13.5.sp)),
alignment: Alignment.center,
child: Text(
'求送',
@ -164,13 +172,15 @@ class _GiftState extends State<Gift> {
),
),
),
SizedBox(width: 8,),
SizedBox(
width: 8,
),
GestureDetector(
onTap: () {
if (giftId.isEmpty) {
showOKToast('请选择您想赠送的礼物');
} else {
sendGiftData();
sendGiftData();
}
},
child: Container(
@ -178,7 +188,8 @@ class _GiftState extends State<Gift> {
height: 27.sp,
decoration: BoxDecoration(
gradient: AppColor.mainVerLinearGradient,
borderRadius: BorderRadius.circular(13.5.sp)),
borderRadius:
BorderRadius.circular(13.5.sp)),
alignment: Alignment.center,
child: Text(
'赠送',
@ -211,9 +222,13 @@ class _GiftState extends State<Gift> {
sendGetGiftCustomMsg(widget.accid, jsonEncode(info), '求您送我${info['name']}');
}
void sendGiftData() async {
var result = await DioManager.instance.post(url: Api.sendGift,params: {'accid':widget.accid,'giftId':giftId,'num':giftCount,'toUserId':widget.accid!.split('_').last});
var result = await DioManager.instance.post(url: Api.sendGift, params: {
'accid': widget.accid,
'giftId': giftId,
'num': giftCount,
'toUserId': widget.accid!.split('_').last
});
if (result['code'] == 200) {
showOKToast('赠送成功');
getAsset();
@ -223,12 +238,12 @@ class _GiftState extends State<Gift> {
}
}
void loadGiftData() async {
var result = await DioManager.instance.get(url: Api.giftList);
if (result['code'] == 200) {
List dataList = result['data'];
List giftItemData = [];
for (int i = 0; i < dataList.length; i++) {
var info = dataList[i];
if (info['id'] == giftId) {
@ -242,6 +257,15 @@ class _GiftState extends State<Gift> {
giftItemData.clear();
}
}
for (int i = 0; i < giftList[0].length; i++) {
var info = giftList[0][i];
if (info['name'] == '浪漫告白') {
selectedIndex = i;
giftId = info['id'].toString();
}
}
setState(() {});
}
}
@ -267,7 +291,7 @@ class _GiftState extends State<Gift> {
crossAxisCount: 4,
crossAxisSpacing: 0.0.sp,
mainAxisSpacing: 0.sp,
childAspectRatio: (Get.width - 32.sp) / 4 / 127.5.sp ,
childAspectRatio: (Get.width - 32.sp) / 4 / 127.5.sp,
),
itemCount: info.length,
// Replace with the actual item count
@ -275,13 +299,13 @@ class _GiftState extends State<Gift> {
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
// Replace the placeholders with the actual item widgets
return giftItemWidget(info[index],index);
return giftItemWidget(info[index], index);
},
),
);
}
giftItemWidget(Map info,int index) {
giftItemWidget(Map info, int index) {
bool isSelected = giftId.contains(info['id'].toString());
double price = info['price'];
@ -309,7 +333,11 @@ class _GiftState extends State<Gift> {
child: Stack(
fit: StackFit.expand,
children: [
isSelected ? Image.asset(getMsgImage('gift_bg'),) : Container(),
isSelected
? Image.asset(
getMsgImage('gift_bg'),
)
: Container(),
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
@ -359,9 +387,7 @@ class _GiftState extends State<Gift> {
onTap: () {
giftCount = count;
isShowCount = false;
setState(() {
});
setState(() {});
},
child: Container(
height: 30.sp,
@ -372,18 +398,20 @@ class _GiftState extends State<Gift> {
children: [
Expanded(
child: Container(
alignment: Alignment.center,
alignment: Alignment.center,
child: Text(
'${count}',
style: TextStyle(color: Color(0xFFE6E6E6), fontSize: 12.sp),
))),
'${count}',
style:
TextStyle(color: Color(0xFFE6E6E6), fontSize: 12.sp),
))),
Expanded(
child: Container(
alignment: Alignment.center,
child: Text(
desc,
style: TextStyle(color: Color(0xFFE6E6E6), fontSize: 12.sp),
))),
desc,
style:
TextStyle(color: Color(0xFFE6E6E6), fontSize: 12.sp),
))),
],
),
),

View File

@ -80,8 +80,8 @@ class _PartnerOptionState extends State<PartnerOption> {
setState(() {});
},
child: Container(
height: 60.sp,
padding: EdgeInsets.only(left: 15.sp, right: 15.sp),
// height: 60.sp,
padding: EdgeInsets.only(left: 15.sp, right: 15.sp,top: 10.sp,bottom: 10.sp),
// margin: EdgeInsets.only(right: 5.sp, bottom: 5.sp),
//height: 300,
decoration: BoxDecoration(
@ -96,8 +96,8 @@ class _PartnerOptionState extends State<PartnerOption> {
children: [
Image.asset(
getMsgImage(vipName[index]),
width: 48.sp,
height: 48.sp,
width: 60.sp,
height: 60.sp,
fit: BoxFit.cover,
),
SizedBox(width: 10.sp),
@ -109,7 +109,7 @@ class _PartnerOptionState extends State<PartnerOption> {
Text(
vipTitleName[index],
style: TextStyle(
color: Colors.white, fontSize: 14.sp),
color: Colors.white, fontSize: 17.sp),
),
SizedBox(height: 4.sp),
Text(
@ -120,7 +120,7 @@ class _PartnerOptionState extends State<PartnerOption> {
? '3个月'
: '1个月'),
style: TextStyle(
color: Colors.grey, fontSize: 10.sp),
color: Colors.grey, fontSize: 15.sp),
),
],
)),
@ -128,7 +128,7 @@ class _PartnerOptionState extends State<PartnerOption> {
Text(
item.amount.toInt().toString() + '',
style: TextStyle(
color: AppColor.mainColor, fontSize: 12.sp),
color: AppColor.mainColor, fontSize: 14.sp),
)
],
),

View File

@ -11,8 +11,8 @@ import '../../../util/util.dart';
class SendGiftDialog extends StatefulWidget {
String accid;
SendGiftDialog({super.key,required this.accid});
String title;
SendGiftDialog({super.key,required this.accid,required this.title});
@override
_SendGiftDialogState createState() => new _SendGiftDialogState();
@ -37,6 +37,15 @@ class _SendGiftDialogState extends State<SendGiftDialog> {
var result = await DioManager.instance.get(url: Api.giftList);
if (result['code'] == 200) {
giftList = result['data'];
for (int i= 0; i< giftList.length; i++) {
var info = giftList[i];
if (info['name'] == '浪漫告白') {
selectedIndex = i ;
giftId = info['id'].toString();
}
}
setState(() {});
}
}
@ -44,104 +53,112 @@ class _SendGiftDialogState extends State<SendGiftDialog> {
@override
Widget build(BuildContext context) {
// TODO: add widget build method
return Scaffold(
backgroundColor: Colors.transparent,
body: Center(
child: Container(
height: 255.sp,
margin: EdgeInsets.only(left: 15.sp,right: 15.sp),
padding: EdgeInsets.only(left: 15.sp,right: 15.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.sp),
gradient: LinearGradient(colors: [Color(0xFF4C3E5F),Color(0xFF324140)]),
border: GradientBoxBorder(
gradient:
AppColor.mainVerLinearGradient,
width: 1.sp,
),
),
child: Column(
children: [
Container(
margin: EdgeInsets.only(top: 18.sp),
child: Text(
'今天找TA聊天的人有点多哦为了避免打扰你需要赠送个礼物给TA才能继续聊天哈~',
style: TextStyle(color: Colors.white, fontSize: 15.sp),
),
),
Container(
height: 102.sp,
margin: EdgeInsets.only(top: 12.sp,),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.sp),
gradient: LinearGradient(
colors: [Color(0xFF132B40), Color(0xFF251240)])),
child: giftGridWidget(),
),
Container(
margin: EdgeInsets.only(top: 25.sp,),
padding: EdgeInsets.only(left: 15.sp, right: 15.sp),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
GestureDetector(
onTap: () {
Get.back();
},
child: Container(
height: 42.sp,
width: 136.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(21.sp),
color: Color(0x26FFFFFF)
),
alignment: Alignment.center,
child: Text(
'放弃',
style: TextStyle(
color: Colors.white,
fontSize: 16.sp,
fontWeight: FontWeight.w600),
),
),
),
GestureDetector(
onTap: () async {
if (selectedIndex < 0) {
showOKToast('请选择一个礼物');
return;
}
var result = await DioManager.instance.post(url: Api.sendGift,params: {'accid':widget.accid,'giftId':giftId,'num':1,'toUserId':widget.accid!.split('_').last});
if (result['code'] == 200) {
showOKToast('赠送成功');
Get.back();
} else if (result['code'] == 31201) {
showOKToast(result['msg']);
showRechargeScreenDialog();
}
return GestureDetector(
onTap: () {
},
child: Container(
height: 42.sp,
width: 136.sp,
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(21.sp),
gradient: AppColor.mainVerLinearGradient
),
child: Text(
'赠送',
style: TextStyle(
color: Colors.white,
fontSize: 16.sp,
fontWeight: FontWeight.w600),
},
child: Scaffold(
backgroundColor: Colors.transparent,
body: Center(
child: Container(
constraints: BoxConstraints(
maxHeight: 285.sp
),
margin: EdgeInsets.only(left: 15.sp,right: 15.sp),
padding: EdgeInsets.only(left: 15.sp,right: 15.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.sp),
gradient: LinearGradient(colors: [Color(0xFF4C3E5F),Color(0xFF324140)]),
border: GradientBoxBorder(
gradient:
AppColor.mainVerLinearGradient,
width: 1.sp,
),
),
child: Column(
children: [
Container(
margin: EdgeInsets.only(top: 18.sp),
child: Text(
widget.title,
style: TextStyle(color: Colors.white, fontSize: 15.sp),
),
),
Container(
height: 102.sp,
margin: EdgeInsets.only(top: 12.sp,),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.sp),
gradient: LinearGradient(
colors: [Color(0xFF132B40), Color(0xFF251240)])),
child: giftGridWidget(),
),
Container(
margin: EdgeInsets.only(top: 25.sp,),
padding: EdgeInsets.only(left: 15.sp, right: 15.sp),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
GestureDetector(
onTap: () {
Get.back();
Get.back();
},
child: Container(
height: 42.sp,
width: 136.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(21.sp),
color: Color(0x26FFFFFF)
),
alignment: Alignment.center,
child: Text(
'放弃',
style: TextStyle(
color: Colors.white,
fontSize: 16.sp,
fontWeight: FontWeight.w600),
),
),
),
),
],
),
)
],
GestureDetector(
onTap: () async {
if (selectedIndex < 0) {
showOKToast('请选择一个礼物');
return;
}
var result = await DioManager.instance.post(url: Api.sendGift,params: {'accid':widget.accid,'giftId':giftId,'num':1,'toUserId':widget.accid!.split('_').last});
if (result['code'] == 200) {
showOKToast('赠送成功');
Get.back();
} else if (result['code'] == 31201) {
showOKToast(result['msg']);
showRechargeScreenDialog();
}
},
child: Container(
height: 42.sp,
width: 136.sp,
alignment: Alignment.center,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(21.sp),
gradient: AppColor.mainVerLinearGradient
),
child: Text(
'赠送',
style: TextStyle(
color: Colors.white,
fontSize: 16.sp,
fontWeight: FontWeight.w600),
),
),
),
],
),
)
],
),
),
),
),

View File

@ -24,7 +24,7 @@ class _WishDialogState extends State<WishDialog> {
List giftList = [];
String giftId = '';
String withStr = '';
int selectedIndex = -1;
int selectedIndex = 1;
List<String> optionList = [
'分享一张本人照片',
@ -47,6 +47,13 @@ class _WishDialogState extends State<WishDialog> {
var result = await DioManager.instance.get(url: Api.giftList);
if (result['code'] == 200) {
giftList = result['data'];
for (int i= 0; i< giftList.length; i++) {
var info = giftList[i];
if (info['name'] == '浪漫告白') {
selectedIndex = i ;
giftId = info['id'].toString();
}
}
setState(() {});
}
}
@ -149,46 +156,45 @@ class _WishDialogState extends State<WishDialog> {
colors: [Color(0xFF132B40), Color(0xFF251240)])),
child: giftGridWidget(),
),
Container(
height: 30.sp,
padding: EdgeInsets.only(left: 10.sp, right: 10.sp),
margin: EdgeInsets.only(top: 12.sp),
decoration: BoxDecoration(
color: Color(0x1AFFFFFF),
borderRadius: BorderRadius.circular(15.sp)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'选择感恩方式',
style: TextStyle(
color: Color(0xB3FFFFFF), fontSize: 15.sp),
GestureDetector(
onTap: () {
showOptionPiker(withStr);
},
// behavior: HitTestBehavior.opaque,
child: Container(
height: 30.sp,
padding: EdgeInsets.only(left: 10.sp, right: 10.sp),
margin: EdgeInsets.only(top: 12.sp),
decoration: BoxDecoration(
color: Color(0x1AFFFFFF),
borderRadius: BorderRadius.circular(15.sp)),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'选择感恩方式',
style: TextStyle(
color: Color(0xB3FFFFFF), fontSize: 15.sp),
),
Row(
children: [
Text(
withStr.isNotEmpty ? withStr : '请选择',
style: TextStyle(
color: withStr.isNotEmpty
? AppColor.mainColor
: Colors.white,
fontSize: 15.sp),
),
Image.asset(
getHomeImage('icon_in'),
width: 24.sp,
)
],
),
],
),
GestureDetector(
onTap: () {
showOptionPiker(withStr);
},
behavior: HitTestBehavior.opaque,
child: Row(
children: [
Text(
withStr.isNotEmpty ? withStr : '请选择',
style: TextStyle(
color: withStr.isNotEmpty
? AppColor.mainColor
: Colors.white,
fontSize: 15.sp),
),
Image.asset(
getHomeImage('icon_in'),
width: 24.sp,
)
],
),
)
],
),
),
)),
Container(
margin: EdgeInsets.only(top: 12.sp, bottom: 15.sp),
padding: EdgeInsets.only(left: 30.sp, right: 30.sp),
@ -228,14 +234,14 @@ class _WishDialogState extends State<WishDialog> {
if (selectedIndex < 0) {
showOKToast('请选择一个礼物');
return;
} else if (withStr.isEmpty) {
} else if (withStr.isEmpty) {
showOKToast('请选择感恩方式');
return;
}
var info = giftList[selectedIndex];
info['option'] = withStr;
sendGetWishCustomMsg(
widget.accId, jsonEncode(info), '许愿:想要${info['name']}');
sendGetWishCustomMsg(widget.accId, jsonEncode(info),
'许愿:想要${info['name']}');
},
child: Container(
height: 42.sp,
@ -277,7 +283,7 @@ class _WishDialogState extends State<WishDialog> {
Pickers.showSinglePicker(context,
pickerStyle: DefaultPickerStyle.dark(),
data: optionList,
selectData: text.isNotEmpty ? text : optionList.first,
selectData: text.isNotEmpty ? text : optionList[2],
onConfirm: (p, position) {
withStr = p;
setState(() {});

View File

@ -562,11 +562,11 @@ class _DiscoverState extends State<Discover>
),
Container(
width: Get.width - 120.sp,
margin: EdgeInsets.only(top: 10.sp,bottom: 10.sp),
margin: EdgeInsets.only(top: 15.sp,bottom: 15.sp),
child: Text(
user.signature! ?? '',
overflow: TextOverflow.ellipsis,
maxLines: 2,
maxLines: (user.signature! ?? '').length > 15 ? 2 : 1,
style: TextStyle(
fontSize: 16.sp,
color: const Color(0XFFF7FAFA)),

View File

@ -67,6 +67,10 @@ class InfoListViewState extends State<InfoListView> with AutomaticKeepAliveClien
EventBusManager.cancelSubscription(scroToTop!);
}
if (cicleInfoRefresh != null) {
cicleInfoRefresh!.cancel();
}
scrollController.dispose();
super.dispose();
@ -74,6 +78,7 @@ class InfoListViewState extends State<InfoListView> with AutomaticKeepAliveClien
}
StreamSubscription? callRefreshCicle =null;
StreamSubscription? cicleInfoRefresh =null;
StreamSubscription? scroToTop =null;
@override
@ -99,10 +104,18 @@ class InfoListViewState extends State<InfoListView> with AutomaticKeepAliveClien
callRefreshCicle = EventBusManager.on<CallRefreshCircle>().listen((event) {
if(widget.bean.id.toString() == event.circleId){
callOutPage = 1;
loadCallOutListData();
}
});
cicleInfoRefresh = EventBusManager.on<CircleInfoRefresh>().listen((event) {
if(widget.bean.id.toString() == event.circleId){
refreshCircleData();
}
});
//
// scroToTop = EventBusManager.on<ScrollToTop>().listen((event) {
// if (widget.logic.state.index == widget.index) {
@ -219,6 +232,9 @@ class InfoListViewState extends State<InfoListView> with AutomaticKeepAliveClien
}
void pushMsgPage(Lists bean, String cicleId) async {
if (widget.bean.is_limit&&widget.bean.amount > 0) {
await refreshCircleData();
}
if (widget.bean.is_limit&&widget.bean.amount>0) {
showJoinCiclePiker(cicleId,widget.bean.amount.toString(),widget.bean.oldAmount.toString(),2,(payResult){
@ -770,6 +786,9 @@ class InfoListViewState extends State<InfoListView> with AutomaticKeepAliveClien
Get.toNamed(AppRoutes.UserInfoActivity);
return;
}
if (widget.bean.is_limit&&widget.bean.amount > 0) {
await refreshCircleData();
}
if (widget.bean.is_limit&&widget.bean.amount>0) {
showJoinCiclePiker(widget.bean.id.toString(),widget.bean.amount.toString(),widget.bean.oldAmount.toString(),1,(payResult){
widget.bean.is_limit = false;
@ -1075,6 +1094,10 @@ class InfoListViewState extends State<InfoListView> with AutomaticKeepAliveClien
Get.toNamed(AppRoutes.UserInfoActivity);
return;
}
if (widget.bean.is_limit&&widget.bean.amount > 0) {
await refreshCircleData();
}
if (widget.bean.is_limit&&widget.bean.amount > 0) {
showJoinCiclePiker(widget.bean.id.toString(),widget.bean.amount.toString(),widget.bean.oldAmount.toString(),1,(payResult){
widget.bean.is_limit = false;
@ -1588,9 +1611,9 @@ class InfoListViewState extends State<InfoListView> with AutomaticKeepAliveClien
content, 17.sp, FontWeight.w300, Get.currentRoute == AppRoutes.Home ? Get.width - 90.sp : Get.width - 64.sp, 100);
}
void refreshCircleData() async {
var routePath = Get.currentRoute;
if (routePath == AppRoutes.Signal_circle_list) return;
refreshCircleData() async {
// var routePath = Get.currentRoute;
// if (routePath == AppRoutes.Signal_circle_list) return;
var data = await DioManager.instance
.get(url: 'up-service/interest/${widget.bean.id}');

View File

@ -24,7 +24,7 @@ class Gift_shopPage extends StatelessWidget {
return Scaffold(
backgroundColor: Colors.black,
appBar: MyAppBar(
centerTitle: logic.userId.isNotEmpty ? 'Ta的礼物' : '我的礼物馆',
centerTitle: logic.userId.isNotEmpty ? 'Ta的礼物' : '我的礼物墙',
actionWdiget: logic.userId.isNotEmpty
? Container()
: GestureDetector(
@ -118,7 +118,7 @@ class Gift_shopPage extends StatelessWidget {
children: [
Image.network(
logic.toUser['avatar'] ??
'http://qiniuyun.ikuayou.com/avatar/default/default_header.png',
'https://qiniuyun.ikuayou.com/avatar/default/default_header.png',
width: Get.width - 32.sp,
height: 100.sp,
fit: BoxFit.cover,
@ -140,7 +140,7 @@ class Gift_shopPage extends StatelessWidget {
child: CachedNetworkImage(
fit: BoxFit.cover,
imageUrl: logic.toUser['avatar'] ??
'http://qiniuyun.ikuayou.com/avatar/default/default_header.png',
'https://qiniuyun.ikuayou.com/avatar/default/default_header.png',
width: 45.sp,
height: 45.sp,
),
@ -313,8 +313,14 @@ class Gift_shopPage extends StatelessWidget {
fontWeight: FontWeight.w500)),
GestureDetector(
onTap: () {
logic.sendGiftData(logic.accid, info['id'].toString(),
logic.userId, index, '');
if (logic.userId.isEmpty) {
logic.sendGiftData(logic.accid, info['id'].toString(),
logic.accid.split('_').last, index, '');
} else {
logic.sendGiftData(logic.accid, info['id'].toString(),
logic.userId, index, '');
}
},
child: Container(
height: 20.sp,
@ -326,7 +332,7 @@ class Gift_shopPage extends StatelessWidget {
gradient: AppColor.mainVerLinearGradient,
borderRadius: BorderRadius.circular(10.sp)),
child: Text(
!isGet ? '去送礼' : '赠送',
!isGet ? '点亮' : '赠送',
style: TextStyle(color: Colors.white, fontSize: 11.sp),
),
),

View File

@ -11,6 +11,7 @@ import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:image_picker/image_picker.dart';
import '../../../common/Widgets/base_tip_widget.dart';
import '../../../common/config.dart';
import '../../../network/api.dart';
import '../../../util/qiniu.dart';
@ -38,6 +39,8 @@ class Complete_materialLogic extends GetxController {
int unLockWxNum = 0;
Map wxStatusInfo = {};
late ConfigBean configBean;
List<MyConfigData> numbers = [];
@ -62,6 +65,7 @@ class Complete_materialLogic extends GetxController {
await loadCofigData();
getCityList();
if(type!=''){
loadWXEditStatus();
var data = await DioManager.instance.get(url: Api.getUserInfo);
var bean = BaseResponse<ResponseBean>.fromJson(
data, (data) => ResponseBean.fromJson(data));
@ -107,6 +111,21 @@ class Complete_materialLogic extends GetxController {
}
loadWXEditStatus() async {
var data =
await DioManager.instance.get(url: Api.checkWxNumState,);
if (data['code'] == 200) {
// code 200 4000 32100
//
// BAN_ACTION(4000, "用户当前操作被禁止"),
//
// NOTICE_UPDATE_WXNUM(32100, "填写/更新微信需要消耗{}小票哦");
} else {
wxStatusInfo['${data['code']}'] = data['msg'];
}
}
loadCofigData() async {
var data =
await DioManager.instance.get(url: Api.getqiniuToken, params: {});
@ -326,7 +345,7 @@ class Complete_materialLogic extends GetxController {
return;
}
if (state.wxEditingController.text.isNotEmpty) {
if (state.wxEditingController.text.isNotEmpty && userInfoBean!.wx_num != state.wxEditingController.text) {
bool isPass = false;
if (state.wxEditingController.text.length == 11) {
RegExp exp = RegExp(
@ -341,8 +360,23 @@ class Complete_materialLogic extends GetxController {
return;
}
}
if (wxStatusInfo.containsKey('4000')) {
showOKToast(wxStatusInfo['40000']);
return;
}
var result = await DioManager().post(url: Api.updateWxNum,params: {'type':2,'wxNum':state.wxEditingController.text});
if (result['code'] == 31201) {
// showToast.
showOKToast(result['msg']);
showRechargeScreenDialog();
return;
} else if (result['code'] == 200) {
if (wxStatusInfo.containsKey('32100')) {
showOKToast(wxStatusInfo['32100']);
}
}
print(result);
}
//TODO
@ -367,6 +401,7 @@ class Complete_materialLogic extends GetxController {
});
var bean = BaseResponse<String>.fromJson(data, (data) => data);
if (bean.code == 200) {
showOKToast('操作成功');
var mineFragment = Get.find<MinefragmentLogic>();
mineFragment.avatar = headUrl;
mineFragment.name = state.textEditingController.text;

View File

@ -1,8 +1,13 @@
import 'dart:convert';
import 'dart:math';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:circle_app/common/colors/app_color.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_slidable_for_tencent_im/flutter_slidable.dart';
import 'package:get/get.dart';
import 'package:gradient_borders/gradient_borders.dart';
import 'package:provider/provider.dart';
import 'package:scroll_to_index/scroll_to_index.dart';
import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_state.dart';
@ -19,7 +24,12 @@ import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitConversation/tim_uikit
import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_base.dart';
import 'package:tencent_cloud_chat_uikit/ui/widgets/wide_popup.dart';
import '../../../network/api.dart';
import '../../../network/dio_manager.dart';
import '../../../router/app_routers.dart';
import '../../../util/eventBus.dart';
import '../../../util/util.dart';
import '../../circle/widgets/discover.dart';
import 'tim_uikit_conversation_item.dart';
typedef TIMConversationItemBuilder = Widget Function(
@ -137,8 +147,6 @@ class ConversationItemSlidePanel extends TIMUIKitStatelessWidget {
/// A label to display below the [icon].
final String? label;
@override
Widget tuiBuild(BuildContext context, TUIKitBuildValue value) {
return SlidableAction(
@ -161,16 +169,19 @@ class _TIMConversationState extends TIMUIKitState<TIMConversation> {
// final TUIFriendShipViewModel friendShipViewModel =
// serviceLocator<TUIFriendShipViewModel>();
bool hasMore = true;
List<String> chatImIdList = [];
var recommendCircleFriendData = {};
@override
void initState() {
super.initState();
loadRecommendCircleFriendData();
final controller = getController();
widget.scrollController!.addListener(() {
try {
if (widget.scrollController!.position.pixels ==
widget.scrollController!.position.maxScrollExtent && hasMore) {
widget.scrollController!.position.maxScrollExtent &&
hasMore) {
_timuiKitConversationController.loadData();
}
} catch (_) {}
@ -418,28 +429,18 @@ class _TIMConversationState extends TIMUIKitState<TIMConversation> {
future: getUserListInfo(userIdList),
builder: (BuildContext context,
AsyncSnapshot<List<V2TimUserFullInfo>> snapshot) {
// if (snapshot.connectionState != ConnectionState.done ||
// haveMoreData) {
// if (haveMoreData) {
// _timuiKitConversationController.loadData();
// }
//
// return Container();
// }
return ListView.builder(
controller: widget.scrollController!,
shrinkWrap: true,
itemCount: filteredConversationList.length,
// shrinkWrap: true,
itemCount: recommendCircleFriendData.isNotEmpty && filteredConversationList.length < 15
? filteredConversationList.length + 1
: filteredConversationList.length,
itemBuilder: (context, index) {
// if (index == filteredConversationList.length - 1) {
// if (haveMoreData) {
// loaddingWidget(true);
// // _timuiKitConversationController.loadData();
// } else {
// return Container();
// }
// }
if (index == filteredConversationList.length) {
return recommendCircleFriendData.isNotEmpty
? recommendCircleFriendWidget()
: Container();
}
final conversationItem =
filteredConversationList[index];
@ -488,9 +489,9 @@ class _TIMConversationState extends TIMUIKitState<TIMConversation> {
if (userFullInfo!.customInfo!
.containsKey('Label')) {
if (userFullInfo!
.customInfo!['Label']
.toString().isNotEmpty) {
if (userFullInfo!.customInfo!['Label']
.toString()
.isNotEmpty) {
var otherInfo = jsonDecode(userFullInfo!
.customInfo!['Label']
.toString());
@ -614,23 +615,541 @@ class _TIMConversationState extends TIMUIKitState<TIMConversation> {
})
: (widget.emptyBuilder != null
? widget.emptyBuilder!()
: Container());
: recommendCircleFriendData.isNotEmpty
? recommendCircleFriendWidget()
: Container());
}
// EasyRefresh(
// header: CustomizeBallPulseHeader(color: theme.primaryColor),
// onRefresh: () async {
// model.refresh();
// },
// child:
return TUIKitScreenUtils.getDeviceWidget(
return TUIKitScreenUtils.getDeviceWidget(
defaultWidget: SlidableAutoCloseBehavior(
child: conversationList(),
),
),
desktopWidget: Scrollbar(
controller: widget.autoScrollController!,
child: conversationList()));
});
}
recommendCircleFriendWidget() {
var info = {};
var user = Users.fromJson(recommendCircleFriendData['user']);
// 100
// ·90
// ·TA80
// ·70
// ·260
// ·50
// ·TA40
// ·TA是乐园优秀圈主哦30
var titleList = [];
if (recommendCircleFriendData['is_follow_me']) {
titleList.add('对方喜欢了你');
} else if (recommendCircleFriendData['has_both_friend']) {
titleList.add('你们有共同喜欢的圈友');
} else if (recommendCircleFriendData['has_friend_follow_to']) {
titleList.add('你喜欢的圈友也喜欢TA');
}
if (titleList.length < 3) {
List citys = recommendCircleFriendData['both_cities'];
if (citys.isNotEmpty) {
titleList.add('你们都在${citys.first}留下过足迹');
}
}
if (titleList.length < 3) {
List circles = recommendCircleFriendData['both_interests'];
if (circles.isNotEmpty) {
List<dynamic> both_interests =
recommendCircleFriendData['both_interests'];
List<String> circleList = [];
both_interests.forEach((element) {
circleList.add(element['title']);
});
if (circleList.isNotEmpty) {
titleList
.add('你们有${circleList.length}个共同的圈子:${circleList.join('')}');
}
}
}
if (titleList.length < 3) {
if (recommendCircleFriendData['is_wanna_meet']) {
titleList.add('很多圈友都喜欢TA');
}
}
if (titleList.length < 3) {
if (recommendCircleFriendData['is_most_fans']) {
titleList.add('可能是你想认识的人');
}
}
if (titleList.length < 3) {
if (recommendCircleFriendData['is_excellent_qz_leader']) {
titleList.add('TA是乐园优秀圈主哦');
}
}
if (titleList.length >= 1) {
info['city'] = titleList.first;
}
if (titleList.length >= 2) {
info['both_interests'] = titleList[1];
}
if (titleList.length >= 3) {
info['desc'] = titleList[2];
}
List circleList = recommendCircleFriendData['interests'];
return Container(
padding: EdgeInsets.only(left: 15.sp, right: 15.sp),
child: Column(children: [
Container(
margin: EdgeInsets.only(top: 20.sp),
child: Row(
children: [
Expanded(
child: Container(
height: 2.sp,
color: Colors.white.withOpacity(0.5),
)),
Container(
width: 4.sp,
height: 4.sp,
margin: EdgeInsets.only(left: 15.sp, right: 15.sp),
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.white.withOpacity(0.5)),
),
Expanded(
child: Container(
height: 2.sp,
color: Colors.white.withOpacity(0.5),
)),
],
),
),
Container(
margin: EdgeInsets.only(top: 16.sp),
child: Row(
children: [
Image.asset(
getMsgImage('heart_icon'),
width: 18.sp,
),
SizedBox(
width: 4.sp,
),
ShaderMask(
shaderCallback: (Rect bounds) {
return const LinearGradient(
begin: Alignment(0.0, -1.0),
end: Alignment.bottomCenter,
colors: [Color(0xff71F3F2), Color(0xffF657FF)],
).createShader(Offset.zero & bounds.size);
},
child: Text(
'圈友推荐',
style: TextStyle(
fontSize: 18.sp,
fontWeight: FontWeight.w600,
color: Colors.white,
shadows: [
Shadow(
color: Color(0xffF657FF), offset: Offset(0.0, -1))
]),
),
),
SizedBox(
width: 4.sp,
),
Image.asset(
getMsgImage('heart_icon'),
width: 18.sp,
),
Expanded(child: Container()),
InkWell(
onTap: () {
loadRecommendCircleFriendData();
},
child: Container(
child: Row(
children: [
Icon(
Icons.refresh_sharp,
size: 18.sp,
color: AppColor.mainColor,
),
SizedBox(
width: 4.sp,
),
Text(
'换一位',
style: TextStyle(
color: AppColor.mainColor, fontSize: 15.sp),
)
],
),
),
)
],
),
),
Container(
margin: EdgeInsets.only(top: 16.sp),
width: Get.width,
// constraints: BoxConstraints(maxHeight: 230.sp),
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [Color(0xFF4C3E5F), Color(0xFF324140)]),
borderRadius: BorderRadius.circular(8.sp),
border: GradientBoxBorder(
gradient: AppColor.mainVerLinearGradient,
width: 1.sp,
),
),
padding: EdgeInsets.only(left: 12.sp, right: 12.sp,top: 10.sp),
child: Column(
children: [
GestureDetector(
onTap: () {
Get.toNamed(AppRoutes.UserInfoActivity,arguments: user.userId.toString());
},
child: Container(
child: Row(
children: [
ClipOval(
child: Image.network(
recommendCircleFriendData['user']['avatar'],
width: 50.sp,
height: 50.sp,
fit: BoxFit.cover,
),
),
SizedBox(
width: 6.sp,
),
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
user.nickname ?? '',
style: TextStyle(
fontSize: 16.sp,
color: Color(0XFFF7FAFA),
fontWeight: FontWeight.bold),
),
SizedBox(height: 4.sp,),
Row(
children: [
Container(
alignment: Alignment.center,
height: 18.sp,
padding:
EdgeInsets.only(left: 6.sp, right: 6.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(9.sp),
gradient: const LinearGradient(
begin: Alignment(0.25, 0.5),
end: Alignment(0.75, 0.5),
colors: [
Color(0xff8DFFF8),
Color(0xffB5D3FF)
])),
child: Text(
getAgeCOntent(
user!.gender ?? 0,
user!.age ?? 0,
user!.role ?? 0,
user!.orientation ?? 0),
style: TextStyle(
color: Colors.black,
fontSize: 12.sp,
),
),
),
if (user.vip! > 0)
Container(
margin: EdgeInsets.only(
left: 4.sp,
),
child: Image.asset(
getCircleImage(
user.vip == 1 ? 'vip' : 'year_vip'),
width: 36.sp,
),
),
],
),
],
)),
GestureDetector(
onTap: () async {
if (!chatImIdList.contains(user.userId.toString())) {
await createCustomMsg(user.userId.toString(), recommendCircleFriendData['user']['imId']);
}
pushChatPage(user.userId.toString(), recommendCircleFriendData['user']['imId'], user.nickname!);
},
child: Container(
height: 25.sp,
padding: EdgeInsets.only(left: 6.sp,right: 6.sp),
decoration: BoxDecoration(
gradient: AppColor.mainVerLinearGradient,
borderRadius: BorderRadius.circular(12.5.sp)),
alignment: Alignment.center,
child: Text(
'聊一聊',
style:
TextStyle(color: Colors.white, fontSize: 15.sp),
),
),
)
],
),
),
),
if (info.containsKey('desc'))
Container(
margin: EdgeInsets.only(top: 10.sp, right: 16.sp),
child: Row(
children: [
Container(
margin: EdgeInsets.only(right: 5.sp),
width: 3,
height: 3,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(1.5),
color: Color(0xFF00FFF4)),
),
Expanded(
child: Container(
child: Text(
info['desc'],
style: TextStyle(
color: Colors.white,
fontSize: 14.sp,
fontWeight: FontWeight.w500,
),
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
),
)
],
),
),
if (info.containsKey('city'))
info['city'].toString().isNotEmpty
? Container(
margin: EdgeInsets.only(top: 10.sp),
child: Row(
children: [
Container(
margin: EdgeInsets.only(right: 5.sp),
width: 3.sp,
height: 3.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(1.5.sp),
color: Color(0xFF00FFF4)),
),
Expanded(child: Text(
info['city'],
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: Colors.white,
fontSize: 14.sp,
fontWeight: FontWeight.w500),
))
],
),
)
: Container(),
if (info.containsKey('both_interests'))
Container(
margin: EdgeInsets.only(top: 10.sp, right: 16.sp),
child: Row(
children: [
Container(
margin: EdgeInsets.only(right: 5.sp),
width: 3,
height: 3,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(1.5),
color: Color(0xFF00FFF4)),
),
Expanded(
child: Container(
child: Text(
info['both_interests'],
style: TextStyle(
color: Colors.white,
fontSize: 14.sp,
fontWeight: FontWeight.w500,
),
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
),
)
],
),
),
Container(
margin: EdgeInsets.only(top: 10.sp, bottom: 10.sp),
alignment: Alignment.centerLeft,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
margin: EdgeInsets.only(right: 5.sp, top: 10.sp),
width: 3,
height: 3,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(1.5),
color: Color(0xFF00FFF4)),
),
Expanded(
child: Text(
'交友宣言:' +
recommendCircleFriendData['user']['signature'],
style: TextStyle(
color: Colors.white,
fontSize: 14.sp,
fontWeight: FontWeight.w500),
maxLines: 2,
overflow: TextOverflow.ellipsis,
)),
])),
Image.asset(
getCircleImage('line'),
width: Get.width,
fit: BoxFit.fill,
),
if (circleList.isNotEmpty)
Container(
height: 72.sp,
margin: EdgeInsets.only(top: 10.sp,bottom: 10.sp),
width: Get.width,
child: ListView.builder(itemBuilder: (context,index) {
return circleInfoItem(circleList[index], index);
},itemCount: circleList.length,scrollDirection: Axis.horizontal,),
)
],
),
),
]));
}
circleInfoItem(var bean, int index) {
return GestureDetector(
onTap: () {
Get.toNamed(AppRoutes.Signal_circle_list,
arguments: bean['id'].toString());
},
child: Container(
margin: EdgeInsets.only(right: 10.sp),
padding: EdgeInsets.only(left: 12.sp, right: 12.sp),
height: 72.sp,
width: 140.sp,
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(8.sp),
border: GradientBoxBorder(
gradient:
AppColor.mainVerLinearGradient,
width: 1.sp,
),
),
child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
width: 42.sp,
height: 42.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.0),
gradient: const LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
Color(0xFF71F3F2),
Color(0xFFF558FF),
],
stops: [0.0365, 0.9427],
),
),
padding: EdgeInsets.all(1.sp),
child: ClipRRect(
borderRadius: BorderRadius.circular(8.0),
child: CachedNetworkImage(
imageUrl: bean['image'],
width: 40.sp,
height: 40.sp,
memCacheHeight: 40,
memCacheWidth: 40,
fit: BoxFit.cover),
),
),
Expanded(
child: Container(
padding: EdgeInsets.only(left: 8.sp, ),
// alignment: Alignment.,
height: 72.sp,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
bean['title'],
style: TextStyle(
color: Colors.white,
fontSize: 12.sp,
fontWeight: FontWeight.w600),
),
SizedBox(
height: 4.sp,
),
Text(
// "view_total" -> 21
'${convertToTenThousand(bean['viewTotal'])}人看过',
textAlign: TextAlign.left,
style: TextStyle(
color: const Color(0xff03FEFB),
fontSize: 12.sp,
),
),
],
),
)),
],
),
),
);
}
void loadRecommendCircleFriendData() async {
var data = await DioManager.instance.get(
url: Api.chatRecommendFriend,
);
if (data['code'] == 200) {
recommendCircleFriendData = data['data'][0];
setState(() {});
}
}
}

View File

@ -19,12 +19,15 @@ class MsgLogic extends GetxController {
int total = 0;
bool isStart = false;
@override
void onInit() {
// TODO: implement onInit
super.onInit();
loadChatData();
loadLikeData();
loadStatusData();
}
loadLikeData() async {
var data =
@ -65,9 +68,10 @@ class MsgLogic extends GetxController {
.get(url: Api.startQuick);
if (data["code"] == 200) {
showOKToast("已开启速聊");
isStart = true;
loadChatData();
return true;
} else if (data["code"] == 10102) {
} else if (data["code"] == 31201) {
showRechargeScreenDialog();
}
} else if (data["data"] == 1) {
@ -84,6 +88,7 @@ class MsgLogic extends GetxController {
await DioManager.getInstance().get(url: Api.stopQuick);
if (data["code"] == 200) {
showOKToast('操作成功');
isStart = false;
loadChatData();
}
@ -95,11 +100,9 @@ class MsgLogic extends GetxController {
if (data["code"] == 200) {
showOKToast("已成功召唤三十人请耐心等待TA的回复哈~");
return true;
} else if(data["code"] == 10081){
showOKToast(data["msg"]);
} else if (data["code"] == 31201) {
showRechargeScreenDialog();
}else{
} else{
showOKToast(data["msg"]);
}
return false;
@ -149,4 +152,17 @@ class MsgLogic extends GetxController {
),
isScrollControlled: true);
}
void loadStatusData() async {
var data =
await DioManager.getInstance().get(url: Api.queryQuickStart);
if (data["code"] == 200) {
if (data["data"] == 0) {
isStart = false;
} else {
isStart = true;
}
}
update();
}
}

View File

@ -67,34 +67,30 @@ class _MsgPageState extends State<MsgPage> with AutomaticKeepAliveClientMixin {
return Scaffold(
resizeToAvoidBottomInset: false,
backgroundColor: Colors.transparent,
body: Stack(
children: [
SafeArea(
child: GetBuilder(builder: (MsgLogic controller) {
return Column(
children: [
navigatorItem(controller),
tipWidget(),
reconmandWidget(),
// Text(controller.state.msg),
Expanded(child: TIMConversation(
autoScrollController: logic.scrollController,
scrollController: logic.listScrollController,
onTapItem: (selectedConv) async{
String type = selectedConv.userID!.split('_')[2];
if (int.parse(type) == 11) {
Get.toNamed(AppRoutes.Sys_notify_list, arguments: selectedConv);
return;
}
Get.toNamed(AppRoutes.Chat, arguments: selectedConv);
body: SafeArea(
child: GetBuilder(builder: (MsgLogic controller) {
return Column(
children: [
navigatorItem(controller),
tipWidget(),
reconmandWidget(),
// Text(controller.state.msg),
Expanded(child: TIMConversation(
autoScrollController: logic.scrollController,
scrollController: logic.listScrollController,
onTapItem: (selectedConv) async{
String type = selectedConv.userID!.split('_')[2];
if (int.parse(type) == 11) {
Get.toNamed(AppRoutes.Sys_notify_list, arguments: selectedConv);
return;
}
Get.toNamed(AppRoutes.Chat, arguments: selectedConv);
},
))
],
);
}),
)
],
},
))
],
);
}),
),
);
}
@ -314,7 +310,7 @@ class _MsgPageState extends State<MsgPage> with AutomaticKeepAliveClientMixin {
height: 4.sp,
),
Text(
'抢占第一',
ctr.isStart ? '关闭速聊' : '开启速聊',
style: TextStyle(color: Colors.white, fontSize: 12.sp),
),
],

View File

@ -107,47 +107,54 @@ class My_assetsPage extends StatelessWidget {
),
Expanded(
flex: 1,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"收入金额",
style: TextStyle(
color: Colors.white,
fontSize: 13.sp),
),
// if (Platform.isAndroid)
SizedBox(width: 4.sp),
// if (Platform.isAndroid)
GestureDetector(
onTap: () {
var con;
if(kDebugMode){
con = V2TimConversation(
conversationID: "c2c_qpqz_dev_10_102", userID: "qpqz_dev_10_102", showName: "测试乐园客服", type: 1);
}else{
con = V2TimConversation(
conversationID: "c2c_qpqz_prod_10_102", userID: "qpqz_prod_10_102", showName: "乐园客服", type: 1);
}
Get.toNamed(AppRoutes.Chat, arguments: con);
},
child: Container(
height: 20.sp,
padding: EdgeInsets.only(left: 6.sp,right: 6.sp),
alignment: Alignment.center,
decoration: BoxDecoration(
gradient: AppColor
.mainVerLinearGradient,
borderRadius: BorderRadius
.circular(10.sp)
),
child: Text('联系客服',
style: TextStyle(
color: Colors.white,
fontSize: 14.sp),),
child: Container(
padding: EdgeInsets.only(left: 10.sp,right: 10.sp),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
margin: EdgeInsets.only(right: 15.sp),
child: Text(
"收入金额",
style: TextStyle(
color: Colors.white,
fontSize: 13.sp),
),
)
],
),
// if (Platform.isAndroid)
// SizedBox(width: 30.sp,),
// Expanded(child: Container()),
// if (Platform.isAndroid)
GestureDetector(
onTap: () {
var con;
if(kDebugMode){
con = V2TimConversation(
conversationID: "c2c_qpqz_dev_10_102", userID: "qpqz_dev_10_102", showName: "测试乐园客服", type: 1);
}else{
con = V2TimConversation(
conversationID: "c2c_qpqz_prod_10_102", userID: "qpqz_prod_10_102", showName: "乐园客服", type: 1);
}
Get.toNamed(AppRoutes.Chat, arguments: con);
},
child: Container(
height: 20.sp,
padding: EdgeInsets.only(left: 6.sp,right: 6.sp),
alignment: Alignment.center,
decoration: BoxDecoration(
gradient: AppColor
.mainVerLinearGradient,
borderRadius: BorderRadius
.circular(10.sp)
),
child: Text('联系客服',
style: TextStyle(
color: Colors.white,
fontSize: 14.sp),),
),
)
],
),
),
),
],
@ -209,16 +216,21 @@ class My_assetsPage extends StatelessWidget {
"总充值",
style: TextStyle(
color: Colors.white,
fontSize: 12.sp),
fontSize: 14.sp),
),
Text("${logic.myAssest!.totalRechargeBalance!}小票",
style: TextStyle(
color: Colors.white,
fontSize: 12.sp),
fontSize: 14.sp),
),
],
),
),
Container(
height: 15.sp,
width: 1.sp,
color:Color(0x4DFFFFFF),
),
Expanded(
flex: 1,
child: Column(
@ -228,17 +240,22 @@ class My_assetsPage extends StatelessWidget {
"总收入",
style: TextStyle(
color: Colors.white,
fontSize: 12.sp),
fontSize: 14.sp),
),
Text(
"${logic.myAssest!.totalIncomeBalance!}小票",
style: TextStyle(
color: Colors.white,
fontSize: 12.sp),
fontSize: 14.sp),
),
],
),
),
Container(
height: 15.sp,
width: 1.sp,
color:Color(0x4DFFFFFF),
),
Expanded(
flex: 1,
child: Column(
@ -248,12 +265,12 @@ class My_assetsPage extends StatelessWidget {
"总支出",
style: TextStyle(
color: Colors.white,
fontSize: 12.sp),
fontSize: 14.sp),
),
Text("${logic.myAssest!.totalExpenseBalance!}小票",
style: TextStyle(
color: Colors.white,
fontSize: 12.sp),
fontSize: 14.sp),
),
],
),

View File

@ -469,15 +469,18 @@ class UserBean {
class Interest {
int id;
String title;
int viewTotal;
Interest({
required this.id,
required this.title,
required this.viewTotal,
});
factory Interest.fromJson(Map<String, dynamic> json) {
return Interest(
id: json['id'],
viewTotal: json['viewTotal'] ?? 0,
title: json['title'],
);
}

View File

@ -1,3 +1,5 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:circle_app/app/userinfo/widgets/home_call_out.dart';
import 'package:circle_app/common/Widgets/base_tip_widget.dart';
@ -12,6 +14,7 @@ import 'package:get/get.dart';
import '../../components/my_app_bar.dart';
import '../../router/app_routers.dart';
import '../../util/eventBus.dart';
import '../../util/util.dart';
import '../select_circle/logic.dart';
import 'logic.dart';
@ -31,9 +34,35 @@ class MyTabbedScreenState extends State<UserinfoPage>
ScrollController scrollController = ScrollController();
bool isShowBlackTitle = false;
bool isSetState = false;
var sub;
@override
void initState() {
super.initState();
sub = EventBusManager.on<ScrollViewScrollTop>().listen((event) {
scrollController.animateTo(0, duration: Duration(microseconds: 200), curve: Curves.easeIn);
});
scrollController.addListener(() {
if (scrollController.position.pixels ==
scrollController.position.maxScrollExtent) {
print('2222');
isSetState = true;
setState(() {
});
EventBusManager.fire(ScrollViewIsEnd(true));
} else {
EventBusManager.fire(ScrollViewIsEnd(false));
if (isSetState) {
setState(() {
});
isSetState = false;
}
print('111');
}
});
_pageController = PageController();
_tabController = TabController(length: 2, vsync: this);
_tabController.animation!.addListener(_handleTabChange);
@ -50,24 +79,22 @@ class MyTabbedScreenState extends State<UserinfoPage>
routeObserver.subscribe(this, ModalRoute.of(context) as PageRoute);
}
void didPopNext() {
print('didPopNext');
if (logic.userId.isEmpty) {
logic.fetchUserInfo(Api.getUserInfo);
logic.fetchUserInfo(Api.getUserInfo);
}
}
///
void didPush() {
print('didPopNext');
}
void didPop() {
print('didPop');
}
void _handleTabChange() {
//
//
@ -79,6 +106,7 @@ class MyTabbedScreenState extends State<UserinfoPage>
@override
void dispose() {
_tabController.dispose();
sub.cancel();
routeObserver.unsubscribe(this);
super.dispose();
}
@ -108,95 +136,159 @@ class MyTabbedScreenState extends State<UserinfoPage>
Scaffold(
backgroundColor: Colors.transparent,
appBar: MyAppBar(
centerTitle: logic.userInfoBean != null
? "${logic.userInfoBean!.nickname}"
: "个人主页",
actionWdiget: logic.isMe ? GestureDetector(
onTap: () async{
await showAddWxPicker(logic.userInfoBean!.wx_num!.isNotEmpty ?? false,isHidden: logic.userInfoBean!.wx_num!.isNotEmpty ?? false,isWxHidden:logic.userInfoBean!.hide_wx_num == 1,);
logic.fetchUserInfo(Api.getUserInfo);
},
child:Stack(
alignment: Alignment.center,
children: [
Container(
width: 101.sp,
height: 26.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12.sp),
gradient: LinearGradient(
colors: [ Color(0xFF30FFD9),Color(0xFFDD3DF4)],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
centerTitle: logic.userInfoBean != null
? "${logic.userInfoBean!.nickname}"
: "个人主页",
actionWdiget: logic.isMe
? GestureDetector(
onTap: () async {
await showAddWxPicker(
logic.userInfoBean!.wx_num!.isNotEmpty ?? false,
isHidden:
logic.userInfoBean!.wx_num!.isNotEmpty ?? false,
isWxHidden: logic.userInfoBean!.hide_wx_num == 1,
);
logic.fetchUserInfo(Api.getUserInfo);
},
child: Stack(
alignment: Alignment.center,
children: [
Container(
width: 101.sp,
height: 26.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(12.sp),
gradient: LinearGradient(
colors: [
Color(0xFF30FFD9),
Color(0xFFDD3DF4)
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
),
Container(
width: 100.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(11.sp),
color: Color(0xFF240F3B)),
alignment: Alignment.center,
height: 24.sp,
child: Text(
'填写微信号',
style: TextStyle(
color: Colors.white, fontSize: 14.sp),
),
)
],
),
),
),
Container(
width: 100.sp,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(11.sp),
color: Color(0xFF240F3B)
),
alignment: Alignment.center,
height: 24.sp,
child: Text(
'填写微信号',
style: TextStyle(
color: Colors.white, fontSize: 14.sp),
),
)
],
),
// Container(
// alignment: Alignment.center,
// // width: 90.sp,
// height: 24.sp,
// padding:
// EdgeInsets.only(left: 6.sp, right: 6.sp),
// decoration: BoxDecoration(
// color: AppColor.mainColor,
// borderRadius:
// BorderRadiusDirectional.circular(
// 11.sp)),
// child: Text(
// '填写微信号',
// style: TextStyle(
// color: Colors.white, fontSize: 13.sp),
// ),
// ),
) : Container()
),
// Container(
// alignment: Alignment.center,
// // width: 90.sp,
// height: 24.sp,
// padding:
// EdgeInsets.only(left: 6.sp, right: 6.sp),
// decoration: BoxDecoration(
// color: AppColor.mainColor,
// borderRadius:
// BorderRadiusDirectional.circular(
// 11.sp)),
// child: Text(
// '填写微信号',
// style: TextStyle(
// color: Colors.white, fontSize: 13.sp),
// ),
// ),
)
: Container()),
body: Stack(
// fit: StackFit.expand,
children: [
Container(
child: buildContent(logic),
),
height: Get.height,
width: Get.width,
// color: Colors.red,
child:
NestedScrollView(
controller: scrollController,
headerSliverBuilder: (context,isScrolled) {
return [
SliverAppBar(
stretch: false,
elevation: 0,
primary: true,
pinned: true,
floating: true,
forceElevated: false,
toolbarHeight: 0,
foregroundColor: Colors.transparent,
backgroundColor: Colors.transparent,
expandedHeight: 372.sp + (logic.userInfoBean != null
? logic.userInfoBean!.wx_num!.isNotEmpty
? 59.sp : 0 : 0),
bottom: PreferredSize(
preferredSize: Size(Get.width,40),
child: titleTab(logic),
),
flexibleSpace: FlexibleSpaceBar(
expandedTitleScale: 1.0,
centerTitle: true,
title: buildContent(logic),
),
)
];
},
body: contentWidget(logic),
// slivers: [
// SliverAppBar(
// leadingWidth: 0,
// titleSpacing: 0,
// title: buildContent(logic),
// toolbarHeight: 500.sp,
// backgroundColor: Colors.transparent,
// ),
// SliverPadding(
// padding: EdgeInsets.zero,
// sliver: SliverList(delegate:
// SliverChildBuilderDelegate((context, index) {
// // if (index == 0) {
// // return buildContent(logic);
// // }
// return contentWidget(logic);
// },childCount: 1),))
//
// // (delegate: (BuildContext context, int index) {
// // return contentWidget(logic);
// // }),
//
// // buildContent(logic),
// ]
)),
Positioned(
bottom: 27.sp,
width: Get.width,
child: _meInfoButton(logic),
),
!logic.isShowAlbum &&logic.isMe ? Positioned(
bottom: 36.sp,
right: 10.sp,
child: GestureDetector(
onTap: () async {
!logic.isShowAlbum && logic.isMe
? Positioned(
bottom: 36.sp,
right: 10.sp,
child: GestureDetector(
onTap: () async {
List<MyConfigData> numbers = [];
List<MyConfigData> numbers = [];
var data = await Get.toNamed(
AppRoutes.Call_out,
arguments: {'numbers': numbers});
},
child: Image.asset(
getCircleImage('send_msg'),
width: 60.sp,
))):Container()
var data = await Get.toNamed(AppRoutes.Call_out,
arguments: {'numbers': numbers});
},
child: Image.asset(
getCircleImage('send_msg'),
width: 60.sp,
)))
: Container()
],
),
),
],
),
);
@ -342,11 +434,15 @@ class MyTabbedScreenState extends State<UserinfoPage>
final interests = userInfoBean?.interests ?? [];
return Container(
// color: Colors.red,
width: Get.width,
// height: Get.height,
padding: EdgeInsets.symmetric(vertical: 14.sp),
child: Column(
children: [
Container(
padding: EdgeInsets.symmetric(horizontal: 19.sp),
height: 58.sp,
padding: EdgeInsets.symmetric(horizontal: 15.sp),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
@ -359,7 +455,7 @@ class MyTabbedScreenState extends State<UserinfoPage>
),
Container(
padding: EdgeInsets.symmetric(
horizontal: 19.sp,
horizontal: 15.sp,
),
margin: EdgeInsets.only(top: 19.sp),
child: Row(
@ -369,7 +465,7 @@ class MyTabbedScreenState extends State<UserinfoPage>
children: [
Text(
userInfoBean?.nickname ?? "",
style: TextStyle(
style: TextStyle(
color: Color.fromRGBO(247, 250, 250, 1.0),
fontSize: 14.sp,
),
@ -410,35 +506,42 @@ class MyTabbedScreenState extends State<UserinfoPage>
),
),
SizedBox(
height: 59.sp,
height: 78.sp,
child: logic.isBlack || logic.isDestroy || logic.isBlackBeen
? Container()
: _buildInterestsListView(interests),
),
if (!logic.isMe)
logic.userInfoBean != null ? logic.userInfoBean!.wx_num!.isNotEmpty ? Container(
alignment: Alignment.centerLeft,
// width: 200.sp,
// color: Colors.red,
margin: EdgeInsets.only(left: 20.sp,bottom: 15.sp),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
wxStatusWidget(logic.unLockWxNum == 1,logic.userInfoBean!.wx_num, logic.userInfoBean!.id.toString(),logic.userInfoBean!.avatar!, (){}),
],
)) : Container() : Container(),
logic.userInfoBean != null
? logic.userInfoBean!.wx_num!.isNotEmpty
? Container(
alignment: Alignment.centerLeft,
// width: 200.sp,
// color: Colors.red,
margin: EdgeInsets.only(left: 15.sp, bottom: 15.sp),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
wxStatusWidget(
logic.unLockWxNum == 1,
logic.userInfoBean!.wx_num,
logic.userInfoBean!.id.toString(),
logic.userInfoBean!.avatar!,
() {}),
],
))
: Container()
: Container(),
if (logic.userInfoBean != null && logic.giftList.isNotEmpty)
GestureDetector(
onTap: () async {
var result = await Get.toNamed(AppRoutes.GiftShopPage,
arguments: logic.imId.split('_').last);
arguments: logic.userId);
logic.loadGiftListData();
},
child: Container(
margin: EdgeInsets.only(top: 0.sp,left: 15.sp,right: 15.sp),
margin: EdgeInsets.only(
top: 0.sp, left: 15.sp, right: 10.sp, bottom: 10.sp),
padding: EdgeInsets.only(
left: 12.sp, right: 12.sp, bottom: 18.sp, top: 16.sp),
height: 144.sp,
@ -486,107 +589,125 @@ class MyTabbedScreenState extends State<UserinfoPage>
),
Expanded(
child: Container(
margin: EdgeInsets.only(top: 10.sp),
alignment: Alignment.centerLeft,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: logic.giftList.length,
itemBuilder: (BuildContext context, int giftIndex) {
var info = logic.giftList[giftIndex];
bool isGet = false;
int num = 0;
logic.recevigiftList.forEach((element) {
if (element['giftId'] == info['id']) {
isGet = true;
num = element['num'];
}
});
return GestureDetector(
onTap: () {},
child: Container(
margin: EdgeInsets.only(right: 10.sp),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Stack(children: [
Opacity(
opacity: !isGet ? 0.5 : 1,
child: Image.network(
info['icon'],
width: 50.sp,
height: 50.sp,
fit: BoxFit.cover,
),
),
]),
SizedBox(
height: 6.sp,
margin: EdgeInsets.only(top: 10.sp),
alignment: Alignment.centerLeft,
child: ListView.builder(
scrollDirection: Axis.horizontal,
itemCount: logic.giftList.length,
itemBuilder: (BuildContext context, int giftIndex) {
var info = logic.giftList[giftIndex];
bool isGet = false;
int num = 0;
logic.recevigiftList.forEach((element) {
if (element['giftId'] == info['id']) {
isGet = true;
num = element['num'];
}
});
return GestureDetector(
onTap: () {},
child: Container(
margin: EdgeInsets.only(right: 10.sp),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Stack(children: [
Opacity(
opacity: !isGet ? 0.5 : 1,
child: Image.network(
info['icon'],
width: 50.sp,
height: 50.sp,
fit: BoxFit.cover,
),
GestureDetector(
onTap: () {
logic.sendGiftData(
logic.imId,
info['id'].toString(),
logic.imId.split('_').last,
);
},
child: Container(
height: 20.sp,
width: 52.sp,
// padding: EdgeInsets.only(left: 5.sp,right: 5.sp),
alignment: Alignment.center,
decoration: BoxDecoration(
gradient: AppColor
.mainVerLinearGradient,
borderRadius:
BorderRadius.circular(10.sp)),
child: Text(
!isGet ? '点亮' : '赠送',
style: TextStyle(
color: Colors.white,
fontSize: 11.sp),
),
),
)
],
),
]),
SizedBox(
height: 6.sp,
),
),
);
}),
))
GestureDetector(
onTap: () {
logic.sendGiftData(
logic.imId,
info['id'].toString(),
logic.imId.split('_').last,
);
},
child: Container(
height: 20.sp,
width: 52.sp,
// padding: EdgeInsets.only(left: 5.sp,right: 5.sp),
alignment: Alignment.center,
decoration: BoxDecoration(
gradient:
AppColor.mainVerLinearGradient,
borderRadius:
BorderRadius.circular(10.sp)),
child: Text(
!isGet ? '点亮' : '赠送',
style: TextStyle(
color: Colors.white,
fontSize: 11.sp),
),
),
)
],
),
),
);
}),
))
],
),
),
),
titleTab(controller),
Expanded(
child: PageView(
controller: _pageController,
onPageChanged: (index) {
_tabController.animateTo(index);
},
children: [
logic.isBlack || logic.isDestroy || logic.isBlackBeen
? Container()
: _imageAdapter(controller),
logic.isBlack || logic.isDestroy || logic.isBlackBeen
? Container()
: HomeCallOutView(controller.userId),
],
),
),
// titleTab(controller),
],
),
);
// Expanded(
// child: PageView(
// controller: _pageController,
// onPageChanged: (index) {
// _tabController.animateTo(index);
// },
// children: [
// logic.isBlack || logic.isDestroy || logic.isBlackBeen
// ? Container()
// : _imageAdapter(controller),
// logic.isBlack || logic.isDestroy || logic.isBlackBeen
// ? Container()
// : HomeCallOutView(controller.userId),
// ],
// ),
// ),
}
contentWidget(UserinfoLogic controller) {
return TabBarView(
controller: _tabController,
// controller: _pageController,
// onPageChanged: (index) {
// _tabController.animateTo(index);
// },
children: [
logic.isBlack || logic.isDestroy || logic.isBlackBeen
? Container()
: _imageAdapter(controller),
logic.isBlack || logic.isDestroy || logic.isBlackBeen
? Container()
: HomeCallOutView(controller.userId),
],
);
}
Widget _buildInterestsListView(List<Interest> interests) {
return ListView.builder(
itemCount: interests.length,
scrollDirection: Axis.horizontal,
padding: EdgeInsets.symmetric(vertical: 18.sp, horizontal: 19.sp),
padding: EdgeInsets.symmetric(vertical: 15.sp, horizontal: 15.sp),
itemBuilder: (context, index) {
final interest = interests[index];
return GestureDetector(
@ -597,7 +718,7 @@ class MyTabbedScreenState extends State<UserinfoPage>
child: Container(
margin: EdgeInsets.only(right: 11.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17.0),
borderRadius: BorderRadius.circular(8.0),
gradient: const LinearGradient(
colors: [
Color(0xFF06F9FA),
@ -607,29 +728,48 @@ class MyTabbedScreenState extends State<UserinfoPage>
color: const Color(0xFF392D53),
),
child: Container(
margin: EdgeInsets.all(0.2.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17.0),
color: const Color(0xFF392D53),
),
child: Padding(
padding: EdgeInsets.only(
top: 2.sp,
bottom: 2.sp,
left: 15.sp,
right: 15.sp,
margin: EdgeInsets.all(0.2.sp),
padding: EdgeInsets.only(left: 5.sp, right: 0.sp, top: 5.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.0),
color: const Color(0xFF392D53),
),
child: Center(
child: Text(
interest.title,
style: const TextStyle(
fontSize: 11.0,
color: Colors.white,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
// color: Colors.red,
child: Row(
children: [
Text(
interest.title,
style: TextStyle(
fontSize: 13.sp,
color: Colors.white,
),
),
Container(
margin: EdgeInsets.only(
bottom: 2.sp,
),
child: Icon(
Icons.keyboard_arrow_right,
color: Colors.white,
size: 18.sp,
),
)
],
),
),
),
),
),
),
Text(
'${interest.viewTotal}人看过',
style: TextStyle(
fontSize: 13.sp,
color: AppColor.mainColor,
),
),
],
)),
),
);
},
@ -650,7 +790,7 @@ class MyTabbedScreenState extends State<UserinfoPage>
}
return Container(
alignment: Alignment.centerLeft,
padding: EdgeInsets.symmetric(horizontal: 10.sp),
padding: EdgeInsets.only(left: 0, right: 10.sp),
height: 27.sp,
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@ -663,7 +803,7 @@ class MyTabbedScreenState extends State<UserinfoPage>
color: const Color(0xFF00FFF4),
width: 2.sp,
),
insets: EdgeInsets.symmetric(horizontal: 6.0.sp),
insets: EdgeInsets.symmetric(horizontal: 12.0.sp),
borderRadius: BorderRadius.circular(18.0),
),
indicatorColor: const Color(0xFF00FFF4),
@ -677,57 +817,62 @@ class MyTabbedScreenState extends State<UserinfoPage>
),
Tab(text: "喊话"),
],
onTap: (index) {
_pageController.animateToPage(
index, //
duration: const Duration(milliseconds: 300), //
curve: Curves.ease, // 线
);
},
// onTap: (index) {
// _pageController.animateToPage(
// index, //
// duration: const Duration(milliseconds: 300), //
// curve: Curves.ease, // 线
// );
// },
),
logic.isBlack||logic.isDestroy||logic.isBlackBeen?Container(): _tabController.index == 0 ? GestureDetector(
onTap: () {
if(!logic.isShowAlbum&&controller.isMe){
List<MyConfigData> numbers = [];
var data = Get.toNamed(AppRoutes.Call_out, arguments: {'numbers': numbers});
return ;
}
if (controller.isMe) {
controller.isEdit = !controller.isEdit;
controller.update();
} else {
controller.urgeChange();
}
},
child: Visibility(
// visible: logic.isShowAlbum,
child: Container(
margin: EdgeInsets.only(left: 10.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17),
gradient: const LinearGradient(
colors: [
Color(0xFF06F9FA),
Color(0xFFDC5BFD),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
padding: EdgeInsets.symmetric(
vertical: 2.sp,
horizontal: 12.sp,
),
child: Text(
buttonText,
style: const TextStyle(
color: Colors.white,
fontSize: 12,
),
),
),
),
) : Container(),
logic.isBlack || logic.isDestroy || logic.isBlackBeen
? Container()
: _tabController.index == 0
? GestureDetector(
onTap: () {
if (!logic.isShowAlbum && controller.isMe) {
List<MyConfigData> numbers = [];
var data = Get.toNamed(AppRoutes.Call_out,
arguments: {'numbers': numbers});
return;
}
if (controller.isMe) {
controller.isEdit = !controller.isEdit;
controller.update();
} else {
controller.urgeChange();
}
},
child: Visibility(
// visible: logic.isShowAlbum,
child: Container(
margin: EdgeInsets.only(left: 10.sp),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(17),
gradient: const LinearGradient(
colors: [
Color(0xFF06F9FA),
Color(0xFFDC5BFD),
],
begin: Alignment.centerLeft,
end: Alignment.centerRight,
),
),
padding: EdgeInsets.symmetric(
vertical: 2.sp,
horizontal: 12.sp,
),
child: Text(
buttonText,
style: const TextStyle(
color: Colors.white,
fontSize: 12,
),
),
),
),
)
: Container(),
],
),
);
@ -738,6 +883,7 @@ class MyTabbedScreenState extends State<UserinfoPage>
// :
return Container(
margin: EdgeInsets.only(top: isSetState ? 40.sp : 0.sp),
padding: EdgeInsets.symmetric(horizontal: 19.sp),
child: Stack(
children: [
@ -757,7 +903,7 @@ class MyTabbedScreenState extends State<UserinfoPage>
mainAxisAlignment: MainAxisAlignment.start,
children: [
const SizedBox(
height: 100,
height: 30,
),
Image.asset(
getBaseImage('no_result'),
@ -784,20 +930,20 @@ class MyTabbedScreenState extends State<UserinfoPage>
crossAxisCount: 3,
),
itemCount: controller.isMe
// ? controller.isEdit
// ? controller.state.imaglist.length < 15
// ? controller.state.imaglist.length
? controller.state.imaglist.length+1
: controller.state.imaglist.length ,
// ? controller.isEdit
// ? controller.state.imaglist.length < 15
// ? controller.state.imaglist.length
? controller.state.imaglist.length + 1
: controller.state.imaglist.length,
itemBuilder: (BuildContext context, int index) {
// print("123123123123");
if (controller.isMe ) {
// print("123123123123");
if (controller.isMe) {
if (index == 0) {
return GestureDetector(
onTap: () {
if(controller.state.imaglist.length >= 15){
if (controller.state.imaglist.length >= 15) {
showOKToast("最大只可上传15张图片哦~");
return ;
return;
}
controller.getImageFile();
},
@ -902,7 +1048,7 @@ class MyTabbedScreenState extends State<UserinfoPage>
? controller.userInfoBean!.signature
: "",
maxLines: 2,
style: const TextStyle(color: Colors.white),
style: TextStyle(color: Colors.white,fontSize: 15.sp),
overflow: TextOverflow.ellipsis,
),
),
@ -1377,3 +1523,12 @@ class MyTabbedScreenState extends State<UserinfoPage>
);
}
}
class ScrollViewIsEnd {
bool isEnd;
ScrollViewIsEnd(this.isEnd);
}
class ScrollViewScrollTop {
}

View File

@ -3,6 +3,7 @@ import 'package:circle_app/app/circle/state.dart';
import 'package:circle_app/app/circle/widgets/video_item.dart';
import 'package:circle_app/app/userinfo/widgets/home_call_out_logic.dart';
import 'package:circle_app/router/app_routers.dart';
import 'package:circle_app/util/eventBus.dart';
import 'package:circle_app/util/util.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
@ -11,6 +12,8 @@ import 'package:get/get.dart';
import 'package:get/get_core/src/get_main.dart';
import 'package:get/get.dart';
import '../view.dart';
class HomeCallOutView extends StatefulWidget {
// Get.lazyPut(() => ListLogic());
@ -27,19 +30,46 @@ class _HomeCallOutViewState extends State<HomeCallOutView> with AutomaticKeepAli
bool get wantKeepAlive => true;
HomeCallOutLogic? listsLg;
bool isEnd = false;
var sub;
@override
void initState() {
// TODO: implement initState
super.initState();
sub = EventBusManager.on<ScrollViewIsEnd>().listen((event) {
if (event.isEnd) {
isEnd = true;
setState(() {
});
} else {
isEnd = false;
setState(() {
});
}
});
Get.lazyPut(() => HomeCallOutLogic());
listsLg = Get.find<HomeCallOutLogic>();
listsLg?.loadCallOutListData(widget.userId);
listsLg!.scrollController.addListener(() {
if (listsLg!.scrollController.offset < 0) {
EventBusManager.fire(ScrollViewScrollTop());
isEnd = false;
setState(() {
});
}
});
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
sub.cancel();
listsLg?.onClose();
}
@ -48,61 +78,46 @@ class _HomeCallOutViewState extends State<HomeCallOutView> with AutomaticKeepAli
return GetBuilder<HomeCallOutLogic>(
assignId: true,
builder: (listLogic) {
return ClipRRect(
borderRadius: BorderRadius.circular(10.sp),
child: listLogic.lists.isEmpty?Center(
child: Image.asset(
getBaseImage('no_result'),
width: 200,
// height: 11,
),
): Container(
width: Get.width,
child: Stack(
children: [
Container(
height: Get.height,
width: Get.width,
margin: EdgeInsets.only(
// bottom: MediaQuery.of(context).padding.bottom + 56.sp,
left: 19.sp,
right: 19.sp),
child: RefreshIndicator(
onRefresh: () async {
listLogic.refreshData();
},
child: listLogic.lists.isEmpty
? loaddingWidget(true)
: ListView.builder(
padding: EdgeInsets.only(
bottom: MediaQuery.of(context).padding.bottom + 56.sp),
physics: const AlwaysScrollableScrollPhysics(),
scrollDirection: Axis.vertical,
controller: listLogic.scrollController,
itemCount: listLogic.lists.length + 1,
itemBuilder: (context, index) {
if (listLogic.lists.length > index) {
Lists lists = listLogic.lists[index];
if (lists.isQueen!) {
return vipDynamicItem(lists);
} else {
return normalDynamicItem(lists);
}
} else {
return Container(
margin: EdgeInsets.only(
top: listLogic.callOutMore
? 0
: 10.sp),
child:
loaddingWidget(listLogic.callOutMore),
);
}
}),
),
),
],
)));
return listLogic.lists.isEmpty?Center(
child: Image.asset(
getBaseImage('no_result'),
width: 200,
// height: 11,
),
): Container(
width: Get.width,
margin: EdgeInsets.only(top: isEnd ? 40.sp : 0.sp),
child: listLogic.lists.isEmpty
? loaddingWidget(true)
: ListView.builder(
// physics: const AlwaysScrollableScrollPhysics(),
physics: isEnd ? AlwaysScrollableScrollPhysics() : NeverScrollableScrollPhysics(),
// shrinkWrap:true,
padding: EdgeInsets.only(
bottom: MediaQuery.of(context).padding.bottom + 56.sp),
scrollDirection: Axis.vertical,
controller: listLogic.scrollController,
itemCount: listLogic.lists.length + 1,
itemBuilder: (context, index) {
if (listLogic.lists.length > index) {
Lists lists = listLogic.lists[index];
if (lists.isQueen!) {
return vipDynamicItem(lists);
} else {
return normalDynamicItem(lists);
}
} else {
return Container(
margin: EdgeInsets.only(
top: listLogic.callOutMore
? 0
: 10.sp),
child:
loaddingWidget(listLogic.callOutMore),
);
}
}));
},
);
}

View File

@ -62,7 +62,7 @@ class _RechargeScreenDialogState extends State<RechargeScreenDialog> {
response.forEach((element) {
AssetsDataDataPriceConfs item = AssetsDataDataPriceConfs.fromJson(element);
if (walletRechargeSelectItemBos.isEmpty) {
if (walletRechargeSelectItemBos.length == 1) {
item.isSelected = true;
}
walletRechargeSelectItemBos.add(item);
@ -324,7 +324,7 @@ class _RechargeScreenDialogState extends State<RechargeScreenDialog> {
),
GestureDetector(
onTap: () {
// navigateToPriceAgreement();
navigateToItem();
},
child: Text(
'《小票充值协议》',

View File

@ -311,7 +311,8 @@ class _CircleShareState extends State<CircleShare> {
var info = lists[index];
return GestureDetector(
onTap: () {
sendCircleCustomMsg( 'qpqz_dev_0_'+ info.user.id.toString(), jsonEncode(widget.bean.toJson()), '分享[${widget.bean.title}]');
sendCircleCustomMsg(info.user.imId,
jsonEncode(widget.bean.toJson()), '分享[${widget.bean.title}]');
},
behavior: HitTestBehavior.opaque,
child: Container(

View File

@ -41,7 +41,7 @@ wxStatusWidget(bool isUnclock, String wx, String userId, String avatarUrl,
},
child: Container(
height: 42.sp,
width: (isUnclock ? 60.sp : 100.sp) + textWidth,
width: (isUnclock ? 60.sp : 102.sp) + textWidth,
decoration: BoxDecoration(
gradient: const LinearGradient(
colors: [

View File

@ -12,6 +12,7 @@ class Api {
//
static const login = 'user-service/login/smscode';
//
static const new_login = 'user-service/login/password';
@ -20,7 +21,6 @@ class Api {
static const getqiniuToken = 'up-service/oss/token';
//
static const UpdataUserInfo = 'user-service/register/user/info';
@ -37,39 +37,26 @@ class Api {
static const queryUnlockPrice = '/mall-service/wxNum/unlock/queryUnlockPrice';
//
static const postAliPayOrder = 'mall-service/alipay/order';
//
static const postWxOrder = 'mall-service/wxpay/order';
//vip状态
static const getVipStatus = 'mall-service/my/vip';
//token
static const refreshToken = 'user-service/login/token/refresh';
//
static const getCircleInterests = 'up-service/interest/interests';
//
static const APP_VERSION = 'user-service/app/version';
@ -81,15 +68,14 @@ class Api {
static const SendShout = 'up-service/callout';
//mine
static const getUserMine = 'user-service/my/main';
//vip弹窗
static const getIsVips = 'mall-service/vips/show/';
//vip弹窗
static const getIsVips = 'mall-service/vips/show/';
//IM状态
//IM状态
static const imstate = '/user-service/user/im/state';
@ -125,8 +111,6 @@ class Api {
static const blackList = 'user-service/blacklist/users';
//
static const getMyAlbum = 'up-service/my/albums';
@ -139,31 +123,22 @@ class Api {
static const updataAlbum = 'up-service/album';
//
static const deleteAlbum = 'up-service/album/';
//Ta的相册
static const urgeAlbum = 'up-service/user/';
//
static const getUrgeStatus = 'up-service/user/';
//
static const followList = 'user-service/follow/users';
//
static const fansList = 'user-service/fans/users';
@ -172,76 +147,34 @@ class Api {
static const visitList = 'user-service/visit/users';
//
static const postReport = 'up-service/report';
//
static const getFeedBack = 'up-service/feedback';
//
static const getFeedBackList = 'up-service/my/feedbacks';
// //访
// static const getInterestList = 'up-service/interest/20/users';
//
static const getQuestions = 'up-service/guide/feedback/questions';
//banner
static const getNearbyBeanner = 'user-service/nearby/banner';
//
static const postNearbyList = 'user-service/nearby/queryNearByUserList';
//IM配置信息
static const getIMInfo = 'msg-service/im/token';
@ -252,10 +185,13 @@ class Api {
// /up-service/my/interests /up-service/interest/statistics
static const getMyCircleInterests = 'up-service/my/interests';
//
static const getMyCircleAll = '/up-service/my/interests/all';
//
static const getMatch = 'msg-service/im/chat/match';
//
static const getNotices = 'msg-service/system/notices';
@ -307,13 +243,16 @@ class Api {
//
static const circleTop = '/up-service/interest/top';
//
static const hideWxNum = '/user-service/hideWxNum/';
//
static const showPositiveFeedBack = '/up-service/showPositiveFeedBack';
//
static const walletRechargeSelectItem = '/mall-service/wallet/walletRechargeConfig';
//
static const userAsset = '/mall-service/wallet/userAsset';
@ -327,7 +266,7 @@ class Api {
//
static const giftList = '/mall-service/gift/giftMall';
//
//
static const giftHall = '/mall-service/gift/giftHall/';
//
@ -352,4 +291,15 @@ class Api {
//
static const msgRandOne = '/msg-service/message/hello_word/randOne';
//
static const checkWxNumState = '/user-service/user/updateWxNum/state';
//
static const chatRecord = '/msg-service/message/chat/log/save';
//
static const chatRecommendFriend = '/msg-service/im/chat/recommend';
//
static const isShow_give_gift = '/msg-service/message/show_give_gift/';
}

View File

@ -233,7 +233,6 @@ class DioManager {
pushLoginPage();
} else {
switch (responseMap["code"]) {
case 4000:
case 4001:
case 4002:
case 4003:
@ -247,7 +246,7 @@ class DioManager {
pushLoginPage();
break;
}
if (responseMap["code"] != 200 && responseMap["code"] != 10000) {
if (responseMap["code"] != 200 && responseMap["code"] != 10000 && !url.contains(Api.checkWxNumState)) {
showOKToast(responseMap['msg']);
}
}

View File

@ -56,7 +56,13 @@ class CommentBlackMoreEvent {
class CallRefreshCircle {
String circleId = "";
CallRefreshCircle(String id);
CallRefreshCircle(this.circleId);
}
class CircleInfoRefresh {
String circleId = "";
CircleInfoRefresh(this.circleId);
}
class ScrollToTop {

View File

@ -115,6 +115,7 @@ class IOSPayment {
}
logic.update();
}
EventBusManager.fire(CircleInfoRefresh(typeId));
} else if (type == 2) {
if (target_id.isNotEmpty) {
showOKToast('赠送会员成功');

View File

@ -411,6 +411,14 @@ void navigateToPartnerAgreement() {
});
}
//
void navigateToItem() {
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
'title': "小票充值协议",
"url":'https://www.iquanpai.com/app-h5/4_173.html'
});
}
//
void navigateToInviteStrategy() {
Get.toNamed(AppRoutes.WebViewActivity, arguments: {
@ -515,6 +523,20 @@ createCustomMsg(String userId, String imId) async {
String cityStr = '';
Map<String, dynamic> info = {};
// 100
// ·90
// ·TA80
// ·70
// ·260
// ·50
// ·TA40
// ·TA是乐园优秀圈主哦30
var titleList = [];
var recommendCircleFriendData = data['data'];
if (data['data']['both_interests'] != null) {
List<dynamic> both_interests = data['data']['both_interests'];
List<String> circleList = [];
@ -543,8 +565,8 @@ createCustomMsg(String userId, String imId) async {
if (data['data']['both_cities'] != null) {
info['city'] = cityStr;
}
info['title'] = recommendCircleFriendData;
info['interests'] = data['data']['interests'] ?? [];
info['guide_text'] = data['data']['guide_text'] ?? '';
info['my'] = data['data']['my'] ?? '';
info['myInterests'] = data['data']['myInterests'] ?? [];
info['user'] = data['data']['user'];
@ -649,8 +671,17 @@ sendCircleCustomMsg(String userId, String data, String desc) async {
);
if (createCustomMessageRes.code == 0) {
String? id = createCustomMessageRes.data?.id;
//
EventBusManager.fire(SendCoustomMessage(createCustomMessageRes));
V2TimValueCallback<V2TimMessage> sendMessageRes = await TencentImSDKPlugin
.v2TIMManager
.getMessageManager()
.sendMessage(id: id!, receiver: userId, groupID: '');
if (sendMessageRes.code == 0) {
//
showOKToast('发送成功');
sendMessageRes.data?.customElem?.data; //data
sendMessageRes.data?.customElem?.desc; //desc
sendMessageRes.data?.customElem?.extension; //extension
}
}
}